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;
...全文
53 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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语句贴出来看看呢?
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi
加入

4972

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2004-05-07 01:32
社区公告
暂无公告