xiajingtao123 2016-08-05 03:38 采纳率: 30%
浏览 1187
已采纳

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 2016-08-05 08: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条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog