ADOQUERY中用INSERT 为什么不能插入??????急!! (100分)

  • 主题发起人 xuziling20
  • 开始时间
X

xuziling20

Unregistered / Unconfirmed
GUEST, unregistred user!
var winmx:tadoquery;
begin
winmx.connectionstring:=constr;//CONSTR已定义正确的字符串
winmx.sql.clear;
winmx.sql.add('insert into A(CID,CNAME,CNUM,CDATE) VALUES('+''''+FS+''''+','+''''+MYNAME+''''+','+'1200'+','+'2003-12-12'+','+')');
winmx.execsql;

可是无论如何都不能插入记录.,而用查询工具输入则明显可以插入.为什么ADOQUERY中这个语句无法
插入????我用的是DELPHI6+SQL2000中文.

请大虾费心看看,邦邦我!
 
你虽然定义了一个Tadoquery的winmx变量,但你建立实例呀!
winmx:=Tadoquery.create(application);
winmx.connectionstring:=constr;//CONSTR已定义正确的字符串
winmx.sql.clear;
winmx.sql.add('insert into A(CID,CNAME,CNUM,CDATE) VALUES('+''''+FS+''''+','+''''+MYNAME+''''+','+'1200'+','+'2003-12-12'+','+')');
winmx.execsql;
winmx.free;

设断点调试一下!
 
不好意思,我简写了,其实CREATE过程我写过了,实例也是正确的,代码没有贴出来,
应该是其它原因.
 
那有什么错误提示?
 
无错误提示,
但是后面的语句都没有执行,
如:
在WINMX.EXECSQL;
SHOWMESSAGE('OK');
则SHOWMESSAGE无反应,没有对话框出现.但也无提示,无出错.程序正常.
就是EXECSQL语句没有效果.




 
怪了,是不是我的SQL SERVER 有问题?!
 
winmx.sql.add('insert into A(CID,CNAME,CNUM,CDATE) VALUES('+''''+FS+''''+','+''''+MYNAME+''''+','+'1200'+','+'2003-12-12'+','+')');
改为参数的形式试试:
winmx.sql.add('insert into A(CID,CNAME,CNUM,CDATE) VALUES:)value1,:value2,value3,value4)');
winmx.parameters.parambyname('value1').value := '' ;
winmx.parameters.parambyname('value2').value := '' ;
winmx.parameters.parambyname('value3').value := '' ;
winmx.parameters.parambyname('value4').value := '' ;
 
注意sql中的符号问题,一般对于字符串我是这样用的:chr(39)+字符串+chr(39),避开
''''这样的用法,你可以试试看。

 
用事件探查器截获传到sql的语句,再分析。不成就把截获的贴出来。
 
把code贴出来。
 
谢大家了,我还是不用ADOQUERY了吧
我改,我用TABLE,我一个字段一个段的赋值,总行吧!
 
总觉得ADOQUERY在使用的过程中不好用,特别是更新的问题,总是很慢,有时还更新不了
.而且出错信息提示也不多.以后有时间再好好请教一下大家
 
1、日期的原因;
2、FS、MYNAME值的原因;
winmx.sql.add('insert into A(CID,CNAME,CNUM,CDATE) VALUES('+''''+FS+''''+','
+''''+MYNAME+''''+','+'1200'+','+'2003-12-12'+','+')');
改成:
winmx.sql.add('insert into A(CID,CNAME,CNUM,CDATE) VALUES('+QuotedStr(FS)+','
+QuotedStr(MYNAME)+','+'1200'+','+QuotedStr('2003-12-12')+','+')');
 
顶部