adoquery出错,这是为什么啊?(100分)

  • 主题发起人 主题发起人 没理头号
  • 开始时间 开始时间

没理头号

Unregistered / Unconfirmed
GUEST, unregistred user!
adoquery出错,这是为什么啊?
下面代码出错,为什么?
var
fQuery:TAdoquery;
begin
...
fsql := 'select * from logTable where ClientID=' + Client_IDList + ' and NDate='
+ #39 + cd + #39;
with fQuery do
begin
close;
sql.Clear;
sql.Add(fsql);
open;
if (RecordCount <= 0) then
//没有这天的记录
begin
fsql := 'insert into logtable(ClientID,NDate,IsNormal';
for j := 0 to ACheckDataID.Count - 1 do
fsql := fsql + ',' + ACheckDataID[j];
fsql := fsql + ') values(';
fsql := fsql + Client_IDList + ',' + #39 + cd + #39 + ',' + #39 + '否' + #39;
for j := 0 to ACheckDataID.Count - 1 do
fsql := fsql + ',' + #39 + '否' + #39;
fsql := fsql + ')';
close;
sql.Clear;
sql.Add(fsql);
execsql;//这里出错,说什么非法访问msado.dll什么的
end;
end;
...
end;
 
gz
我的一个同事也碰到同样的问题。
 
楼上的,你同事有没有什么高招啊?
 
打补丁试过吗?
 
我也是!~有没有方法啊!
 
你这样构造出来的SQL语句是不是太长了啊,不知道SQL语句的长度有没有限制,
你可以用SQL Server 事件查看器看看你提交的语句到底有没有错
 
特别短的也不行。如:delete from 表名
在查询分析器里完全可以,但在execsql时提示非法访问msado.dll
 
qry实例创建了吗?
我在用ADO时发现。一个ADOQUery是不可以既做查询又做修改操作的,如果有两种操作,最
好用两个QRY;
 
我用的是delphi6。我在网上找的补订好象都是delphi5的,没有delphi6的,
delphi5的补丁能用到delphi6吗?
/******************************************************
ADOQuery 的一个Bug
一个ADOQuery对象在生命期只能仅用来作为查询或者作为执行
即如果对一个ADOQuery第一次调用了Open方法,后面只能再执行查询语句,即调用Open方法,如果要调用ExecSQL方法,那只好用另外一个对象
同理调用ExecSQL方法后就不再可以调用Open方法。不管你有不有调用Close()
,SQL->Clear();都不行
***********************************************************/
这是我在网上搜到的,上面的观点对吗?
 
什么数据库?用原生ado事实
 
to 一生中最爱:
sql2000
 
to 没理头号,
你查找的信息是对的,所以要用两个adoquery分别作为查询和修改
谢谢大家!
 
to maplesw:
no thanks,我也是这样用了,
borland的人呢?
我靠,这是什么原因啊?
难道说它是个bug就了了吗?
 
没这种事,我从没碰到过,先跟中一下你的SQL语句,OPEN前用SHOWMESSAGE查看一下对不对,
QUERY即查询即修改均可呀,我发现你的引号有些不对么
 
同意楼上,我也这么用,没问题,查询修改均可
 
楼上两位老大,我分两个adoquery运行是可以的,用一个就是不行?
那位maplesw也有这样的问提,又不是我一个人,还说是我程序的毛病,
 
你为什么非要用SQL来实现呢?打开adoquery,看有没有数据,没有,则新增,然后给各field
赋值,最后提交不就可以了?
query.open;
if query.eof then
begin
...
query.insert;
query.fields[0].asstring:=
....
query.post;
end;

 
我认为是ADO的问题,我的同事用的是D5(所有补丁)+SQL2000,ADO版本2.6,我的配置是
D5(所有补丁)+SQL7,ADO版本2.5,源程序在他的机器上跑就出这个问题,在我的机器上
就是好的,我的程序也是不分查询和动作查询,都使用同一个ADOQuery的,所以,我觉得
不会是这个问题,应该是ADO本身(msado.dll)的问题,重装或升级(或修补)ADO?想
看看大家是怎么解决的。
 
To 没理头号
不要用一个query
用两个就没问题
 
是 ADO 的问题,上网找找这个 D6_upd2_ent.exe 补丁吧!
 
后退
顶部