procedure TInsertVipForm.Button1Click(Sender: TObject);
begin
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('insert into vip (vipname,sex,add,gudingtel,yidongtel,fufeidate,daofeidate) values(:xvipname,:xsex,:xadd,:xgudingtel,:xyidongtel,:xfufeidate,:xdaofeidate)');
   ADOQuery1.Parameters[0].Value:=Edit2.Text;
   ADOQuery1.Parameters[1].Value:=Combobox1.Text;
   ADOQuery1.Parameters[2].Value:=Edit4.Text;
   ADOQuery1.Parameters[3].Value:=Edit5.Text;
   ADOQuery1.Parameters[4].Value:=Edit6.Text;
   ADOQuery1.Parameters[5].Value:=quotedstr(datetostr((datetimepicker1.Date)));
   ADOQuery1.Parameters[6].Value:=quotedstr(datetostr((datetimepicker2.Date)));
   ADOQuery1.ExecSQL;
   Showmessage('保存成功');
end;运行时提示:INSERT INTO语句语法错误.
数据库是ACCESS2000.
小弟QQ是276261745
邮箱[email protected]
小弟不才,望各大位不吝赐教.谢谢

解决方案 »

  1.   

    不要用Parameters[0]这样的写法
    用.Parameters.ParamValues['xsex']
      

  2.   

    在adoquery1.execSql;语句前面加一句
    showmessage(adoquery1.sql.text);看看你的执行语句是什么?
      

  3.   

    不要Parameters[0] ,1,2的
    这样很容易搞混淆
      

  4.   

    不如去掉参数,将Edit2.Text直接写入语句的好
    还有如果做修改数据库的操作,最好用AdoCommand组件了,AdoQuery有时会出错。
      

  5.   

    ADOQuery1.Parameters[0].asstring:=Edit2.Text;
       ADOQuery1.Parameters[1].asstring:=Combobox1.Text;
       ADOQuery1.Parameters[2].asstring:=Edit4.Text;
       ADOQuery1.Parameters[3].asstring:=Edit5.Text;
       ADOQuery1.Parameters[4].asstring:=Edit6.Text;
       ADOQuery1.Parameters[5].asstring:=quotedstr(datetostr((datetimepicker1.Date)));
       ADOQuery1.Parameters[6].asstring:=quotedstr(datetostr((datetimepicker2.Date)));
      

  6.   

    直接写sql语句不成么?搞这么复杂
      

  7.   

    在insert 前加个空格看看。
    帮你顶
      

  8.   

    放个memo
    EXEC前,把memo1.text := sql.text
    看看。