我用下面的语句向表中插入数据时,出错,提示“没有执行可选特性”
  adoquery1.sql.Add('insert into jdjc (sj,mc,qk) values (:a,:b,:c)');
  adoquery1.Parameters.ParamByName('a').Value:=medsj.text;
  adoquery1.Parameters.ParamByName('b').value:=edmc.text;
  adoquery1.Parameters.ParamByName('c').value:=moqk.text;
但是如果改成下面这样就一切正常
  adoquery1.sql.Add('insert into jdjc (sj,mc,qk) values ('''+medsj.text+''','''+edmc.text+''','''+moqk.Text+''')');
这是为什么呢?
(sj,mc,qk的数据类型分别为datatime,varchar,text,相对的3个控件为maskedit,edit,memo)

解决方案 »

  1.   

    这两种方式都行,但你忽略了一个问题就是类型不匹配,因为你字段是DATETIME类型的而你写的是STRING所以不行了。可以如下写
    1
    adoquery1.sql.Add('insert into jdjc (sj,mc,qk) values (:a,:b,:c)');
      adoquery1.Parameters.ParamByName('a').Value:=STRTODATETIME(medsj.text);
      adoquery1.Parameters.ParamByName('b').value:=edmc.text;
      adoquery1.Parameters.ParamByName('c').value:=moqk.text;
    2
      adoquery1.sql.Add('insert into jdjc (sj,mc,qk) values ('''+STRTODATETIME(medsj.text)+''','''+edmc.text+''','''+moqk.Text+''')');