delphi7 中用button动态查询sql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi7 中用button动态查询sql相关的知识,希望对你有一定的参考价值。

在edit.text里输入想查询者的姓名,运行时显示学生信息表中属于那个同学那一栏的全部信息。button里程序怎么写?急!

参考技术A 其实,这类查询是可以不需要用户输入任何信息的,用户只需要动动鼠标就可以了.一个学生表的字段总要包括院(系,专业)、年级、班、姓名。。。。这些字段吧,你在查询界面上放四个combobox组件,当查询界面打开时,向第一个combobox组件中加载所有的院(系/专业)名称,当用户在该组件中选择某个院(系、专业)名称后,就用一个SQL语句筛选出该院(系、专业)下的所有年级,加载到第二个combobox组件中,当用户选择一个年级后,再加载这个年级所有的班,选择班后,再加载所有的学生姓名到第四个combobox组件,如果学生姓名太多,就不妨在班和姓名之间加一个“组”字段。
第一个SQL语句你可以这样写
select DISTINCT 院(系、专业) from 学生表
第二个SQL语句你可以这样写
'select DISTINCT 年级 from 学生表 where 院(系、专业)='''+combobox1.text+''' '
第三个SQL语句你可以这样写
'select DISTINCT 班 from 学生表 where 院(系、专业)='''+combobox1.text+''' and 年级 ='''+combobox2.text+''' '
第四个SQL语句你可以这样写
'select 学生姓名 from 学生表 where 院(系、专业)='''+combobox1.text+''' and 年级 ='''+combobox2.text+''' and 班 ='''+combobox3.text+''''

我管这种查询方法叫:剥洋葱皮法。
如果你说我什么都不知道我就知道学生的姓名,连姓也搞不清楚,只知道名

那你的SQL语句可以这样写:
'select 院(系、专业),年级, 班,学生姓名 from 学生表 where 学生姓名 like ''%'+edit.text+'%'''

SQL命令不多,如果使用得当,完全可以达到出神入画的地步。
另外ADO组件,建议你不要使用那个表组件和查询组件,直接用那个ADOdataset组件。这个组件兼有查询和表组件的作用。

Delphi ADOQuery连接数据库的查询插入删除修改

//查询记录
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(‘select * from YourTABLE where 查询条件‘);
ADOQuery.Open;
 
//插入记录
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:=‘insert into YourTABLE(字段1,字段2) values(:字段1,:字段2)‘;
// ADOQuery.SQL.Add(‘insert into YourTABLE values(:字段1)‘);
ADOQuery.Parameters.ParamByName(‘字段1‘).Value:=trim(Edit1.Text);
ADOQuery.Parameters.ParamByName(‘字段2‘).Value:=trim(Edit2.Text);
ADOQuery.ExecSQL;
end;
//删除记录
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:=‘Delete from YourTABLE where 字段3=:字段3‘;
//这里没有添加where的条件判断,实际使用时,注意添加判断
// ADOQuery.SQL.Add(‘Delete from NEW_TABLE where 字段3=:字段3‘);
ADOQuery.Parameters.ParamByName(‘字段3‘).Value:=trim(Edit3.Text);
ADOQuery.ExecSQL;
//删除记录也可用DeleteRecords()函数
procedure DeleteRecords(AffectRecords: TAffectRecords = arAll);  
这个函数有一个参数:AffectRecords可以取如下的值:  
1、arCurrent :删除当前记录  
2、arFiltered :删除符合Filter过滤后的所有记录(如果你使用Filter过滤的话)  
3、arAll          :删除所有记录  
4、arAllChapters :Delete affects all chapters(ADO chapters)
//修改记录
procedure TForm1.Button4Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:=‘Update YourTABLE SET 字段4=:字段4‘;
//这里没有添加where的条件判断,实际使用时,注意添加判断
// ADOQuery.SQL.Add(‘Update YourTABLE SET 字段4=:字段4‘);
ADOQuery.Parameters.ParamByName(‘字段4‘).Value:=trim(Edit4.Text);
ADOQuery.ExecSQL;
//即时更新插入、删除、修改后的记录
在上面插入、删除、修改的语句后添加如下代码即可:
ADOQuery.Close;
ADOQuery.SQL.Add(‘select * from YourTABLE where 查询条件‘);
ADOQuery.Open;
//使用ADOQuery时注意:

1、如果你需要更改数据,query.requestlive必须为true

2、如果有输入参数的时候,容易出错,通常的错法是这样:
比如:“WHERE abc = : abc”
改正如下:“WHERE abc=:abc”就是说=:前后都不能留空格。
3、ADOQuery.Open与ADOQuery.ExecSQL 有不同之处。
ADOQuery.Open一般用在查询,select时候;而ADOQuery.ExecSQL用在insert,delete,update等。

 

以上是关于delphi7 中用button动态查询sql的主要内容,如果未能解决你的问题,请参考以下文章

Delphi7 dll 动态调用的问题

Delphi动态创建菜单

delphi7 中如何点击菜单项弹出新窗体

springboot mybatisplus 动态查询

如何在VB中用SQL语句动态的增加字段.

如何设计delphi 窗体里面的组件居中