问题出在哪里?(50分)

  • 主题发起人 主题发起人 micro73
  • 开始时间 开始时间
M

micro73

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TADOQuery进行查询,后台为SQL2000 数据库,数据表中有A1,A2两个字段,
都是CHAR型数据,A1中的是1至的数字,A2中的是汉字。用TEdit输入要查询的数据。
SQL语句如下:
SQL.Add(Format('select * from department where(%s=%s) order by %s',['a1',Edit1.Text,'a1']));
可正常查询,但如果将SQL语句中的字段A1换成A2,却出现如下错误信息:
列名‘我的查询’无效。(其中“我的查询”为TEdit中输入的要查询的内容)
请各位FW帮忙
 
>>SQL.Add(Format('select * from department where(%s=%s) order by %s',['a1',Edit1.Text,'a1']));
A2字段是字符串,查询Sql要用引号把值引起来,所以出错。
A1是整数,不用引号,所以成功。
SQL.Add(Format('select * from department where(%s=' + '''' + %s + '''' + ') order by %s',['a2',Edit1.Text,'a2']));
字段类型不同,不通用,还是动态自己生成吧!


 
改一下:
SQL.Add(Format('select * from department where(%s=%s) order by %s',['a1',quotedstr(Edit1.Text),'a1']));
 
to GanQuan:
你说的没错,但好应该用单引号才对:
SQL.Add(Format('select * from department where(%s=' + '''' + %s + '''' + ') order by %s',['a2',Edit1.Text,'a2']));
为了表示感谢,给你送上30分
 
应该给一百分呀,干嘛给30,不过我觉得这样写还不如这样直观多了
sql.add('select * from table where '+edit1.text+'="'+edit2.text+'" group by '+edit1.text)
 
同意楼上
 
天真的写得直观.
 
谢谢各位的帮助。关于送银子的问题,其实我已经送出了50块大洋了。
因我是一个菜鸟,要用银子的地方很多。给出银子是少了点,但相信
在场的各位已经富得流油了,不会在乎银子的多少,就当是关心下一代嘛。
我所做的是一个通用查询,各位的回答对我有所启发,但与实际使用相去甚远。
有的给出的答案从逻辑上或语法上讲根本就是错的,不过对大家的热心解答
还是真诚地表示感谢!
 
接受答案
 
后退
顶部