Delphi查询代码问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:41:14
我做了一套管理程序,在查询界面的“查询”按钮上写了如下代码:
procedure TFQueryEss.Button1Click(Sender: TObject);
var sSqlW: string;
begin
sSqlW := '';
//附加查询条件
If CheckBox1.Checked Then
sSqlW := sSqlW + ' AND 工号 Like ''%' + Trim(edit1.Text) + '%''';
If CheckBox2.Checked Then
sSqlW := sSqlW + ' AND 姓名 Like ''%' + Trim(edit2.Text) + '%''';
If CheckBox3.Checked Then
sSqlW := sSqlW + ' AND 性别 = ''' + Trim(combobox1.Text) + '''';
If CheckBox4.Checked Then
sSqlW := sSqlW + ' AND 部门 = ''' + Trim(combobox2.Text) + '''';
If CheckBox5.Checked Then
sSqlW := sSqlW + ' AND 职务 = ''' + Trim(combobox3.Text) + '''';
If CheckBox6.Checked Then
sSqlW := sSqlW + ' AND 工龄 Like ''%' + Trim(edit3.Text) + '%''';
I

你的SQL语句没有问题,否则运行查询的时候会报错的
你的DataSource1的dataset不应该设置为DDMain.ADOT_Ess,应该是ADOQ_Ess,因为Button1Click事件里面没有对DDMain.ADOT_Ess对象进行操作,还有你再确认一下有没有DBGrid控件,如果没有的话,你运行ADOQ_Ess后出来的结果集只是在内存里,而没有任何显示控件来显示,还有我一般设计数据库程序时不用ADOTable这种控件的
你Button1Click事件里运行的结果仅仅是把select的结果保存到了ADOQ_Ess对象里,界面上当然没有反应啦

dataset里肯定有ADOQuery的控件,可能你没有use进去,而且你看你的查询模块没有对ADOT_Ess进行任何操作,你的DBGrid怎么会有反应呢,你再好好检查检查,肯定是这个原因

你再检查一下DBGrid,DataSource,ADOQ的逻辑关系是否正确,还有你可以在Button1Click事件最后再加一句代码
ShowMessage(ADOQ_Ess.FieldByName('工号').AsString);
看看有没有结果

有结果就说明你的ADOQ_Ess运行正常,那肯定就是你的DBGrid,DataSource,ADOQ三个控件之间逻辑关系没有设定好

DBGrid1.DataSource:=DataSource1;
DataSource1.DataSet:=ADOQuery1;

procedure TFQueryEss.Button1Click(Sender: TObject);
var sSqlW: string;
begin
sSqlW := 'select';
//附加查询条件
If CheckBox1.Checked Then
sSqlW := sSqlW + ' AND 工号 Like ''%' + Trim(edit1.Text) + '%''';