我的程序如下:
 sql:='insert into table1 (date1,rate,todayrate) values(#2004-3-9#,1,1)';
 adoQuery.close;
 adoQuery.sql.clear;
 adoQuery.sql.add(sql);
 adoQuery.execsql;
 adoQuery.close;
这段程序不是copy的,可能有拼写错误。但在我这里的问题是,把SQL中的insert改为SELECT就一切正常,使用INSERT就报错。
查了这里以前的帖子,关于这个问题的几乎都没有结帖。有人提供不少方法,包括:
sql:='insert into table1 (date1,rate,todayrate) values(:date1,:rate,:todayrate)';
adoQuery.parameters.parambyname('date1'):=edit.text;
在我这里报错。我的SQL是生成的不是死的,所以我的字段名和变量名也都是生成的字符串,我写adoQuery.parameters.parambyname(field):=edit.text;
就是错!!!!
我的sql语句在数据库中运行是正常的。还有,我写成i:=adoQuery.execsql;i为整数,也是错的,能不能请各位高手彻底解决一下这个问题!!!!多谢

解决方案 »

  1.   

    搂主你少了Value,我没有测试,如果你是这一句出错的话,肯定就是这里了。
    adoQuery.parameters.parambyname(field).Value:=edit.text;
      

  2.   

    如果你时Insert,Update就不要使用
     hhzqf1980(hh)建议的OPen,采用你自己的方法EXEC
    只有Select时才Open
      

  3.   

    请试试,我就是用这种方法的sql:='insert into table1 (date1,rate,todayrate) values(:date1,:rate,:todayrate)';
    adoQuery.parameters[1]:=edit.text;//1表示第1个参数
      

  4.   

    sql:='insert into table1 (date1,rate,todayrate) values(#2004-3-9#,1,1)';
    --》sql:='insert into table1 (date1,rate,todayrate) values ('+ quotedstr('2004-3-9')+
    ',' + '1,1)';
      

  5.   

    这里是不需要Open的,
    估计还是sql:='insert into table1 (date1,rate,todayrate) values(#2004-3-9#,1,1)'
    这一句有问题,#2004-3-9# 为什么这样表达?
      

  6.   

    这样试试: 
     sql:='insert into table1 (date1,rate,todayrate) values(''2004-3-9'',1,1)';
     adoQuery.close;
     adoQuery.sql.clear;
     adoQuery.sql.add(sql);
     adoQuery.execsql;
     adoQuery.close;
      

  7.   

    #2004-3-9#,是在Access中的日期表达,查询都是用的这种方式,我的sql语句应该是没有问题的,在数据库里单独运行都已经实现插入了,唯一的可能是在adoQuery中什么地方有用,有没有人有完整的,通过测试的程序,让我好好看看,试试。用open我认为肯定不对,xiaoqiang123(xiaoqiang) 先生说的,倒可以试试。大虾们再看看,帮助一下!!!!!
      

  8.   

    首先你告诉我们你出了什么错,我们不会猜啊!
    你语句中Value是不能少的:
      ADOQuery1.Parameters.ParamByName('asdf').Value:=
      ADOQuery1.Parameters[i].Value;
    回复时贴上你的出错提示!
      

  9.   

    多谢各位,由于我写程序的机器和上网的机器不同,所以我每次老忘记把错误拷过来,对不起了。这个问题现在我已经解决了,事情的真相是出现在日期上,应该这样写
    ADOQuery1.Parameters.ParamByName('asdf').Value:=datetimetostr(now);
    如果是数字可写为:
    ADOQuery1.Parameters.ParamByName('asdf').Value:=1;

    ADOQuery1.Parameters.ParamByName('asdf').Value:='1';
    都可以,结帖!!!!!!