读书人

Delphi7 的查询语句相关有关问题求解

发布时间: 2012-05-07 12:40:40 作者: rapoo

Delphi7 的查询语句相关问题,求解!!!
给位高手,帮忙看看如下问题。就是Delphi 的一个条件查询,运行时总提示“A”列名无效,怎么个情况???

With ADOQuery1 do
? begin
? Close;
? SQL.Clear;
? SQL.Add(' Select * From 客房信息表');
? SQL.Add(' Where 配置 = A');[color=#FF0000][/color] Open;
? end;

若写成:SQL.Add(' Where 配置:= A'); 则提示“配置:”附近语法错误

求高手们帮看看,感谢~~~~~~~~


另外,请教一下,add()里面时常遇到引号的问题,能否告知这个引号怎么用呢
e.g:SQL.Add(' Where 配置= '''+edit1.text+''''); 这引号有什么意义?

[解决办法]
这么写试试:

Delphi(Pascal) code
With ADOQuery1 dobegin  Close;  SQL.Clear;  SQL.Add(' Select * From 客房信息表 where 配置 = :para1');  Parameters.ParamByName('para1').Value := 'A';  open;end;
[解决办法]
拼字符串,那引号的作用是,你的A是不是一个变量,如果是就如楼上写的
[解决办法]
探讨
这么写试试:

Delphi(Pascal) code

With ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add(' Select * From 客房信息表 where 配置 = :para1');
Parameters.ParamByName('para1').Value := 'A';
open;
end;
……

[解决办法]
字符类型的字段,要用引号包括起来,整型可不用

如:t(A varchar(20),B Int)
-------------------------

A是字符类型,B是整型,正确的写法是这样:
select * from t where A='张三' and B=100

下面这样也是对的,SQL会自动转换
select * from t where A=10 and B='100'

但不能是下面这样:A和B条件都是错的;张三会当成字段名处理(此字段不存在),而李四则不能转换成整型
select * from t where A=张三 and B='李四'
[解决办法]
1.用转义符,单引号之前再加一个单引号
2.用 QuotedStr函数,返回带引号的字符
3.用Parameters.ParamByName传参(据说这种方式在Oracle中效率最高),但据我遇到的,在group by语句中无法使用此方式,至今未解决,查了很多资料,都说是ADO的问题。

[解决办法]
程序中使用引号可以用ASCII码,引号好像是#39,

读书人网 >.NET

热点推荐