使用TADOQuery的问题(特急),送200分!(200分)

  • 主题发起人 主题发起人 PoeChan
  • 开始时间 开始时间
P

PoeChan

Unregistered / Unconfirmed
GUEST, unregistred user!
ADOQuery.SQL.clear;
ADOQuery.SQL.Add('select * from tb1');
ADOQuery.open;
ADOQuery.first;
ADOQuery.Edit;
ADOQuery['scode'] := 'BB0092';
ADOQuery.Post;
程序执行到Post时,出现错误“Query is too complex”,不知是何原因?请各位大虾帮忙!
tb1表为Access格式!


 
这个倒没有见过,能否把表放上来让大家试一试。
 
你这样试试 看
ADOQuery.SQL.clear;
ADOQuery.SQL.Add('select * from tb1');
ADOQuery.open;
ADOQuery.first;
ADOQuery.Edit;
ADOQuery.FieldByName('scode').Value := 'BB0092';
ADOQuery.Post;
 
表的字段数较多,大概是100个左右,请各位大哥试一下!
 
肯定是太多字段了,Table、Query有限制字段个数的,具体的数目我就忘了。。
 
放表结构上来给我们看吧!!
 
你这样试试 看
ADOQuery.SQL.clear;
ADOQuery.SQL.Add('select * from tb1');
ADOQuery.open;
ADOQuery.first;
ADOQuery.Edit;
ADOQuery.FieldByName('scode').AsString := 'BB0092';
ADOQuery.Post;

 
我有一次在ADOQuery中select了十个字段(从一张表中),他只让我认前七个.
 

scode varchar(14) NOT NULL,
times int NOT NULL,
fillindate Datetime NULL,

dd1 tinyint NULL,
dw1 tinyint NULL,
dm1 tinyint NULL,
dy1 smallint NULL,
qnty1 real NULL,

dd2 tinyint NULL,
dw2 tinyint NULL,
dm2 tinyint NULL,
dy2 smallint NULL,
qnty2 real NULL,
dd3 tinyint NULL,
dw3 tinyint NULL,
dm3 tinyint NULL,
dy3 smallint NULL,
qnty3 real NULL,
dd4 tinyint NULL,
dw4 tinyint NULL,
dm4 tinyint NULL,
dy4 smallint NULL,
qnty4 real NULL,
dd5 tinyint NULL,
dw5 tinyint NULL,
dm5 tinyint NULL,
dy5 smallint NULL,
qnty5 real NULL,
dd6 tinyint NULL,
dw6 tinyint NULL,
dm6 tinyint NULL,
dy6 smallint NULL,
qnty6 real NULL,
dd7 tinyint NULL,
dw7 tinyint NULL,
dm7 tinyint NULL,
dy7 smallint NULL,
qnty7 real NULL,

dd8 tinyint NULL,
dw8 tinyint NULL,
dm8 tinyint NULL,
dy8 smallint NULL,
qnty8 real NULL,

dd9 tinyint NULL,
dw9 tinyint NULL,
dm9 tinyint NULL,
dy9 smallint NULL,
qnty9 real NULL,
dd10 tinyint NULL,
dw10 tinyint NULL,
dm10 tinyint NULL,
dy10 smallint NULL,
qnty10 real NULL,
dd11 tinyint NULL,
dw11 tinyint NULL,
dm11 tinyint NULL,
dy11 smallint NULL,
qnty11 real NULL,
dd12 tinyint NULL,
dw12 tinyint NULL,
dm12 tinyint NULL,
dy12 smallint NULL,
qnty12 real NULL,
dd13 tinyint NULL,
dw13 tinyint NULL,
dm13 tinyint NULL,
dy13 smallint NULL,
qnty13 real NULL,
dd14 tinyint NULL,
dw14 tinyint NULL,
dm14 tinyint NULL,
dy14 smallint NULL,
qnty14 real NULL,
dd15 tinyint NULL,
dw15 tinyint NULL,
dm15 tinyint NULL,
dy15 smallint NULL,
qnty15 real NULL,
dd16 tinyint NULL,
dw16 tinyint NULL,
dm16 tinyint NULL,
dy16 smallint NULL,
qnty16 real NULL,
dd17 tinyint NULL,
dw17 tinyint NULL,
dm17 tinyint NULL,
dy17 smallint NULL,
qnty17 real NULL,
dd18 tinyint NULL,
dw18 tinyint NULL,
dm18 tinyint NULL,
dy18 smallint NULL,
qnty18 real NULL,
dd19 tinyint NULL,
dw19 tinyint NULL,
dm19 tinyint NULL,
dy19 smallint NULL,
qnty19 real NULL,
dd20 tinyint NULL,
dw20 tinyint NULL,
dm20 tinyint NULL,
dy20 smallint NULL,
qnty20 real NULL,

dd21 tinyint NULL,
dw21 tinyint NULL,
dm21 tinyint NULL,
dy21 smallint NULL,
qnty21 real NULL,

dd22 tinyint NULL,
dw22 tinyint NULL,
dm22 tinyint NULL,
dy22 smallint NULL,
qnty22 real NULL,

dd23 tinyint NULL,
dw23 tinyint NULL,
dm23 tinyint NULL,

dy23 smallint NULL,
qnty23 real NULL,

meald tinyint NULL,
mealw tinyint NULL,
bre tinyint NULL,
lunch tinyint NULL,
supper tinyint NULL,
hhn tinyint NULL,
poil real NULL,
aoil real NULL,
salt real NULL,
soy real NULL,
 
如此巨大的一个表,你为什么不做成主细表结构呢?
 
to 白海森
不是主细表的问题!
原来用BDE是没有问题的,现在用TADO不行了,请打个帮助解决才是!
 
ADOQuery['scode'] := 'BB0092';
这种方法没有用过,建议
ADOQuery.FieldByName('scode').AsString := 'BB0092';
 
ADOQuery.FieldByName('scode').AsString := 'BB0092';
就算使用以上语句也不行,问题不在这里
 
我刚作完这样的程序,是Access2000+D5,我的字段数到117个,出现“查询太复杂”错误。
我在60个字段后左右的时候,加POST;再加EDIT;再接着做其他的字段,最后再一次POST,一切正常拉。
具体多少个行我没有准确测过
 
为什么要select *, 能不能把重要的几个或几十个字段选出来,再用
ADOQuery.FieldByName('scode').AsString := 'BB0092';试一下
 
to dongberlin
因为并不知道用户要修改那个字段的数据
 
把这一名ADOQuery.SQL.Add('select * from tb1');改成
update语句吧?
 
问题已经解决,d_fan_zs兄,虽然你的答案在我解决问题之后,但还是送200给你,谢谢!
 
后退
顶部