Delphi里的查询有问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 20:01:27
这是复选查询。要把查到的记录显示在下面的DBGrid中,我把代码打进去。运行没有出错。
一开始运行数据库中的所有记录会显示出来,当我选择其中一个复选框进行用字段文本查询,可是点了查询按钮,下面的DBGrid还是显示所有的记录。没有按要求查到某一条记录。也就是说看上去好象没什么反应。是哪里出错了呢?

代码:
procedure Tfrmjinhuo.Button1Click(Sender: TObject);
var
SQLStr,tj1,tj2,tj3,tj4,tj5,tj6,tj7:String;
begin
DM.ADOQjinhuo.Close;
DM.ADOQjinhuo.SQL.Clear;
if CheckBox1.Checked then
tj1:='商品全称='''+Edit1.Text+''''
else
tj1:=' 1=1 ';

if CheckBox2.Checked then
tj2:=' 商品型号='''+Edit2.Text+''''
else
tj2:=' 1=1 ';

if CheckBox3.Checked then
tj3:='单据编号='''+Edit3.Text+''''
else
tj3:=' 1=1';

if CheckBox4.Checked then
tj4:='经手人='''+Edit4.Text+''''
else
tj4:=' 1=1 ';

你调用的是 DM模块中的数据集吧?界面上的DBGRID指向的是哪一个呢?可能你要调用界面上的ClientDataSet或者Query来查询。

好多的变量...,我帮你简化一下:
procedure Tfrmjinhuo.Button1Click(Sender: TObject);
var
SQLStr: String;
begin
SQLSTR := 'Select * from jinhuo where 1 = 1 ';

if CheckBox1.Checked then
SQLSTR := SQLSTR + ' AND 商品全称=''' + Edit1.Text+'''' ;

if CheckBox2.Checked then
SQLSTR := SQLSTR + ' AND 商品型号=''' + Edit2.Text+'''';

if CheckBox3.Checked then
SQLSTR := SQLSTR + ' AND 单据编号=''' + Edit3.Text+'''' ;

if CheckBox4.Checked then
SQLSTR := SQLSTR + ' AND 经手人=''' + Edit4.Text+'''' ;

if CheckBox5.Checked then
SQLSTR := SQLSTR + ' AND 供货单位=''' + Edit5.Text+'''' ;

if CheckBox8.Checked then
SQLSTR := SQLSTR + ' AND 供货日期=' + Combo