xiajingtao123 2016-08-04 19:38 采纳率: 30%
浏览 1188
已采纳

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";
}

展开全部

  • 写回答

4条回答 默认 最新

  • niaonao Java领域优质创作者 2016-08-05 00:04
    关注
    "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;
    
    这样执行的语句就是正确的,应该
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部