delphi想做条件查询,大家进来帮我看一下

var
SQLStr : string;
begin
inherited;
SQLStr := '';
if Trim(Edt_PHDH.Text) <> '' then
begin
if not IsNumber(Trim(Edt_PHDH.Text),False) then
begin
MymessageWarn('学生学号请输入数字!');
if Edt_PHDH.CanFocus then Edt_PHDH.SetFocus;
Exit;
end;
SQLStr := SQLStr + ' XSXH01 = ' + Trim(Edt_PHDH.Text);
end;

if Trim(dxbtnEdtGSCode.Text) <> '' then
SQLStr := SQLStr + ' LQXX01 = ' + QuotedStr(Trim(dxbtnEdtGSCode.Text));
// if Trim(dxbtnEdtSPCode.Text) <> '' then
// SQLStr := SQLStr + ' AND B.SPXX01 = ' + QuotedStr(Trim(dxbtnEdtSPCode.Text));
if Trim(JLWLDW01.Text) <> '' then
SQLStr := SQLStr + ' BYXX01 = ' + QuotedStr(Trim(JLWLDW01.Text));
if Trim(JLEdtDJR.Text) <> '' then
SQLStr := SQLStr + ' ZDRY01 LIKE ' + QuotedStr('%'+Trim(JLEdtDJR.Text)+'%');
if Trim(JLButtonEdit1.Text) <> '' then
SQLStr := SQLStr + ' SHRY01 LIKE ' + QuotedStr('%'+Trim(JLButtonEdit1.Text)+'%');
if Trim(dxZDRQS.Text) <> '' then
SQLStr := SQLStr + ' ZDRQ >= ' + MyDateToStr(StrToDate(Trim(dxZDRQS.Text)));
// if Trim(dxZDRQE.Text) <> '' then
// SQLStr := SQLStr + ' AND A.GSPHX03 <= ' + MyDateToStr(StrToDate(Trim(dxZDRQE.Text)));
if Trim(dxDateEdit1.Text) <> '' then
SQLStr := SQLStr + ' SHRQ >= ' + MyDateToStr(StrToDate(Trim(dxDateEdit1.Text)));
// if Trim(dxDateEdit2.Text) <> '' then
// SQLStr := SQLStr + ' AND A.GSPHX05 <= ' + MyDateToStr(StrToDate(Trim(dxDateEdit2.Text)));
// SQLStr := SQLStr + ' AND ' + MakeSQLForCanOperField(ur.OperGSXX, 'B.FGSXX01');
SQLStr := SQLStr + MakeSQLForCXGSID('B');
SQLStr := SQLStr + ' ORDER BY XSXH01 ';
ShowQueryQTForm(Self,'JLQT_STXX',SQLStr);
end;

下面是我数据库的表
图片说明

SQL语句
/**

  • 查询学生录取信息 */

else if (lx.equals("PubQTQuery_STXX")) {
selStr ="Select A.XSXH01, A.LQXX01, A.LQXX02, A.BYXX01, A.BYXX02, A.SHRY01, A.SHRQ, A.ZDRY01, A.ZDRQ FROM STXX A where A.XSXH01 = A.XSXH01";
}

"Select A.XSXH01, A.LQXX01  FROM STXX A where A.XSXH01 = A.XSXH01"
 A.XSXH01 = A.XSXH01 条件 字段 A.XSXH01 与变量 A.XSXH01都在双引号里面,后面的变量就是不可变的,是个常量且始终等于前面字段对应的数据
就是说这个条件永远满足,所以执行这条语句,就相当于没加条件;

"Select A.XSXH01, A.LQXX01  FROM STXX A where A.XSXH01 = 1";就对了,条件写的不对

后面的变量应该是动态的,不同记录的数据不同,对应当前的  A.XSXH01;给她一个条件值

int tiaojian = 一个固定的条件;例如:int tiaojian = 3;
"Select A.XSXH01, A.LQXX01  FROM STXX A where A.XSXH01 = "+ tiapjian;

这样执行的语句就是正确的,应该


调试下,在执行查询前,监视下SQLStr 变量是什么值,贴出来。
还有说明你想查什么,现在什么问题

条件都满足???不该吧
应该是条件根本就没执行
你没有把条件加入sql 查询语句

你可以判断一下,添加条件之后,与加入sql 语句之前,其值是否为空