SQL.Add('Insert Into C_Keno_LSH (S_City,S_DaTing,S_Game,S_Sale_Code,');
SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
SQL.Add('Convert(varchar(8),Getdate(),11),Convert(varchar(8),Getdate(),8),');
SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');执行完上面最后一行就报错,还没到ExecSQL就已经报错了
是怎么回事呢?
但是如果把里面的任意一行去掉的话,就都没问题
如果你们不信的话,可以把这个语句粘贴下去试一下,不用数据库,执行完上面最后一句就已经出错了
SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
SQL.Add('Convert(varchar(8),Getdate(),11),Convert(varchar(8),Getdate(),8),');
SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');执行完上面最后一行就报错,还没到ExecSQL就已经报错了
是怎么回事呢?
但是如果把里面的任意一行去掉的话,就都没问题
如果你们不信的话,可以把这个语句粘贴下去试一下,不用数据库,执行完上面最后一句就已经出错了
raised exception class EAccessvViolation with message 'Access
violation ast address 753A23A8 in module 'SQLOLEDB.Dll'
看看其他的ADOQuery能用不?
是不是你要表达的意思
参数太多
难免会出问题
那位老大知道怎么绑定吗?
你能告诉我哪个字段是DATE类型的吗?
里面根本就没有一个DATE类型的,这个设计表的人也真烂,气死人了
虽然没有连接上数据库(你的数据库太复杂了)
但是没有象你说的
没有执行到Execsql就出错啊
是不是你的组件或delphi有问题?
我的代码是:
----------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
SQL.Add('Insert Into C_Keno_LSH (S_City,S_DaTing,S_Game,S_Sale_Code,');
SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
SQL.Add('Convert(varchar(8),Getdate(),11),Convert(varchar(8),Getdate(),8),');
SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');
//ExecSQL;
end;
Showmessage('Here');//可以执行到这里
end;
你把你的ADOQUERY的CONNECTIONSTRING配置成你的数据库试一下,
不用到ExecSQL,所以随便挂个数据库也无所谓,再看一下是不是
也报错?
我试了,连接后果然有问题,报访问非法错误!
但是我想问题也找到了
主要是你SQL语句中函数的问题
我把函数去掉,也用参数就可以了
改后如下:
---------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Close;
sql.Clear;
//sql.Add('insert into C_Keno_LSH(S_City)values(:a)');
SQL.Add('Insert Into C_Keno_LSH (S_City,S_DaTing,S_Game,S_Sale_Code,');
SQL.Add('USER_ID,TZDATE,TZTIME,TZGS,XZFS,TZ1,TZ2,TZ3,TZ4,TZ5,TZ6,TZ7,TZ8,');
SQL.Add('TZ9,TZ10,TZ11,TZ12,TZ13,TZ14,TZ15,TZLX) Values ');
SQL.Add('(''01'',''01'',''01'',:S_Sale_Code,:USER_ID,');
SQL.Add(':temp1,:temp2,');//这里哦
SQL.Add(':TZGS,:XZFS,:TZ1,:TZ2,:TZ3,:TZ4,:TZ5,:TZ6,:TZ7,:TZ8,');
SQL.Add(':TZ9,:TZ10,:TZ11,:TZ12,:TZ13,:TZ14,:TZ15,''02'')');
//ExecSQL;
end;
Showmessage('Here');//可以执行到这里---这里就可以到了
end;
---------------------------------------
所以,你也把你的函数去掉,做为参数
在后面与其他参数一起,给他赋值应该就可以了祝你成功
好了,闲话少说,我就是aft_st_sdto Kshape
你说的没错,把那些换成参数是没有问题,可问题是我前面写过类似的代码,用的也是convert这个函数,怎么就没问题呢?到了这里就不行了呢?
没问题的语句是这样写的:
SQL.Add('Insert Into flow_ledger (USER_ID,Trade_Day,Trade_Time,Keep_Type,');
SQL.Add('Trade_Funds,Currency) Values (:USERID,Convert(varchar(8),Getdate(),11),');
SQL.Add('Convert(varchar(8),Getdate(),11),''L'',:Trade_Funds,''rmb'')');当初设计表的那个人也真烂,我就想不明白它为什么把一个字段分成日期跟时间两个,还用varchar()型的