ODBC问题(100分)

  • 主题发起人 主题发起人 terry_gou
  • 开始时间 开始时间
T

terry_gou

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]本人使用win2k+d5+mssql2K 做了一C/S程序。使用ODBC数据源,在查询模块中使用Query,
条件查询表A的记录,显示在DBgrid中,然后在DBgrid 中选定一记录后,点一按钮把表B中
的相关记录在另一窗体中显示出来。(其中表A有字段cheh和chex与表B的cheh和chex对应)
语句如下:
s2:=' where cheh like "'+ query1.Fields[0].AsString +'"'+' and chex like "'
+query1.Fields[1].AsString + '%"';
with Query1 do
begin
sql.Clear;
sql.Add('select * from XXXX');
sql.Add(s2);
end;
query1.Open;
出错,提示query1.Fields[0].AsString和query1.Fields[1].AsString 的值是无效列名;
真是莫名其妙,我的字段是cheh和chex?????,为什么。
后来我使用DBE,竟然正常通过,莫名其妙??
请问,使用ODBC,要如何修改代码。[/blue]
 
是同一个QUERY1吗?当然有问题了
 
同一query问题
 
如果不是同一query,跟踪一下query1.sql.text
 
不是同一query,我在每个窗体都有query控件
 
是单引号的问题吧,在D用两个单引号表示一个,而不是用一个双引号
 
你在说废话吗?,D中调SQL是用“”代表SQL中的‘’
 
我也遇到这样的问题,上次也看过类似的贴子,不过那时没在意,忘了。
好象是说使用ODBC时,会在调用SQL出现字段与查询条件对换,模糊记有位
老兄,能修改这代码,请那位仁兄出来帮忙。
 
s2:=' where cheh like "'+ query1.Fields[0].AsString +'"'+' and chex like "'
+query1.Fields[1].AsString + '%"';
改成这样不知道有没有用?
s2:=' where cheh like '''+Query1.FieldByName('Filed1').AsString+'%'',''';
s2:=s2+' and chex like '''+Query1.FieldByName('Field2').AsString+'%''';
我觉得可能你这里错了
Query1.Fields[0].AsString
改为
Query1.Field.Fields[0].AsString
 
s2:=' where cheh like "'+ query1.Fields[0].AsString +'"'+' and chex like "'
+query1.Fields[1].AsString + '%"';
//你在这之前应该已执行了query1.open;
with Query1 do
begin
close; //此处增加
sql.Clear;
 
但是,我在BDE下运行一切正常,都能实现我的功能,没出错,为什么?
 
多人接受答案了。
 
后退
顶部