SQL语句中间部分有‘#$D#$A’,所以数据集返回是空,怎么去掉呢?

whhzkl 2004-05-07 01:32:17
我想通过RadioGroup1来切换‘在院’和‘出院’,DbGrid1连接Dm.ADOQuery_BedInfo, 我想通过在原有的SQL语句后添加限制条件:
‘ and (OutDay is null)’或‘ and (OutDay is not null)’来达到效果,
但结果在语句中间部分有‘#$D#$A’,所以数据集返回是空,怎么去掉呢?


源码如下:

procedure TFrm_ZhuYuanBu.RadioGroup1Click(Sender: TObject);
var
s: string;
begin
Case RadioGroup1.ItemIndex of
0: //在院
begin
Dm.ADOQuery_BedInfo.Close;
s := Dm.ADOQuery_BedInfo.SQL.Text;
Dm.ADOQuery_BedInfo.SQL.Text := Dm.ADOQuery_BedInfo.SQL.Text + ' and (OutDay is null) ';
Dm.ADOQuery_BedInfo.Prepared;
Dm.ADOQuery_BedInfo.ExecSQL;
Dm.ADOQuery_BedInfo.Open;
Dm.ADOQuery_BedInfo.SQL.Text := s;
end;
1: //出院
begin
Dm.ADOQuery_BedInfo.Close;
s := Dm.ADOQuery_BedInfo.SQL.Text;
Dm.ADOQuery_BedInfo.SQL.Text := Dm.ADOQuery_BedInfo.SQL.Text + ' and (OutDay is not null) ';
Dm.ADOQuery_BedInfo.Prepared;
Dm.ADOQuery_BedInfo.ExecSQL;
Dm.ADOQuery_BedInfo.Open;
Dm.ADOQuery_BedInfo.SQL.Text := s;
end;
end;
end;
...全文
93 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdf221 2004-05-10
  • 打赏
  • 举报
回复
如果要保存原有的SQL语句,并且复原它,那还是在当前单元private中建立变量,这样可以在整个单元中使用了,然后在其它用到这个ADOQUERY的时候再复原SQL语句
xdf221 2004-05-10
  • 打赏
  • 举报
回复
如果你只是SELECT那就不要用“Dm.ADOQuery_BedInfo.ExecSQL;”只要用“Dm.ADOQuery_BedInfo.Open;”就好了
whhzkl 2004-05-07
  • 打赏
  • 举报
回复
谢谢大家!原因是我在后面加了一句:
Dm.ADOQuery_BedInfo.SQL.Text := s;

去掉就可以了,

但我之所以要引入‘s’,是起一个临时变量的作用,因为我想通过在原有的SQL语句后添加限制条件,故我要保存原有的SQL语句,并且复原它,怎么办?
jakefj 2004-05-07
  • 打赏
  • 举报
回复
agree with soaringsouth(栈桥捉鳖)
在使用adoquery.sql.add時請請先用adoquery.sql.clear清空sql語句;
你可以再用showmessage(adoquery1.sql.text)來看一下sql語句有沒有錯錯在哪裡.
soaringsouth 2004-05-07
  • 打赏
  • 举报
回复
Dm.ADOQuery_BedInfo.SQL.Text错误了,累加了很多条件
你可以设置断点看看

将S设置为全局变量,并且在formshow的时候赋值,就是不带任何其他where查询条件的sql,形如:select * from table where 1=1

procedure TFrm_ZhuYuanBu.RadioGroup1Click(Sender: TObject);
begin
Case RadioGroup1.ItemIndex of
0: //在院
begin
Dm.ADOQuery_BedInfo.Close;
Dm.ADOQuery_BedInfo.SQL.Text := S+ ' and (OutDay is null) ';
Dm.ADOQuery_BedInfo.Open;
end;
1: //出院
begin
Dm.ADOQuery_BedInfo.Close;
s := Dm.ADOQuery_BedInfo.SQL.Text;
Dm.ADOQuery_BedInfo.SQL.Text := S+ ' and (OutDay is not null) ';
Dm.ADOQuery_BedInfo.Open;
end;
end;
end;
yimoo 2004-05-07
  • 打赏
  • 举报
回复
‘#$D#$A’事实上就是#13#10,这就是换行符,根本就不影响SQL语句的执行!所以你得到的记录集为空,应该和这个是没有关系的!还是重点考虑你的SQL语句的问题吧!
hewei2003 2004-05-07
  • 打赏
  • 举报
回复
这个‘#$D#$A’是什么?把SQL语句贴出来看看呢?

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧