在数据库中,定义组号,组号申请人为文本,申请日期为时间日期类型!
with adoquery1 do
begin
  close;    //插入数据
  sql.Clear;
  sql.Add('insert into 编组表(组号,组号申请人,申请日期) values (:a,:b,:c)');
  Parameters.ParamByName('a').Value:= trim(edit2.text);
  Parameters.ParamByName('b').Value:= trim(edit3.text);
  Parameters.ParamByName('c').Value:= datetimePicker1.time;
  execsql;//若此行语句execsql则点击按钮错误为下面的提示一,若为open,则提示错误为提示二
end;//运行的时候没什么错误,只是在触发事件后才出现错误,并且错误后,有时侯记录也能写进去!提示一:project Project1.exe raised exception class EAccessViolation with message'Access violation at address 1F487CAB in module'msado15.dll',Write of address 012C902C'.Process stopped.Use step or Run to continue.
提示二:当前提供者不支持从单一执行恢复多个记录集

解决方案 »

  1.   

    begin
      close;    //插入数据
      sql.Clear;
      active:=false;
      

  2.   

    Parameters.ParamByName('c').Value:= datetimePicker1.time;改为如下试试
    Parameters.ParamByName('c').Value:= FormatDateTime('1900-1-1 hh:mm:ss',datetimePicker1.Datetime);
    显示的时候需要截取下其实,有时期也没有关系
      

  3.   

    to wei_ping1979(南柯一梦)
      前面的adoquery1.close 已经把数据集关闭了,再加一句active:=false;好像是多余的吧!to qizhanfeng(glacier)
     应该不是那的问题,我试验一下还是问题依旧,其实有时候记录的确是加进去了,可 就是再执行的时候出现上述的错误!
      

  4.   

    Open肯定是不行的,因为open执行的结果是返回数据集的
    对于ExecSql应该没有问题,你用的是delphi7吗,我写了一下
      with adoquery1 do
      begin
        close;    //插入数据
        sql.Clear;
        sql.Add('insert into aa(a,b,c) values (:a,:b,:c)');
        Parameters.ParamByName('a').Value:= trim(edit1.text);
        Parameters.ParamByName('b').Value:= trim(edit2.text);
        Parameters.ParamByName('c').Value:= Datetostr(datetimePicker1.time);
        execsql;
      end;
    你试一下。
      

  5.   

    当我用execsql语句执行时,则点击事件触发按钮后错误为下面的提示:project Project1.exe raised exception class EAccessViolation with message'Access violation at address 1F487CAB in module'msado15.dll',Write of address 012C902C'.Process stopped.Use step or Run to continue.
    若用语句open,则错误为:当前提供者不支持从单一执行恢复多个记录集。
    当我单步执行时,总是在执行execsql或open时出现弹出错误
      

  6.   

    会不会是汉字的问题?这句
    sql.Add('insert into 编组表(组号,组号申请人,申请日期) values (:a,:b,:c)');
    改成
    sql.Add('insert into [编组表]([组号],[组号申请人],[申请日期]) values (:a,:b,:c)');
    怎么样呢?
      

  7.   

    我试过拉,这样可以执行
    with adoquery1 do
    begin
      close;    //插入数据
      sql.Clear;
      sql.Add('insert into 编组表(组号,组号申请人,申请日期) values (:a,:b,:c)');
      Parameters.ParamByName('a').Value:= trim(edit2.text);
      Parameters.ParamByName('b').Value:= trim(edit3.text);
      Parameters.ParamByName('c').Value:= datetimetostr(datetimePicker1.datetime);
      execsql;//
      

  8.   

    在之前加上
    Parameters.AddParameter.Name := 'a'
    Parameters.AddParameter.Name := 'b'
    Parameters.AddParameter.Name := 'c'
      

  9.   

    Parameters.ParamByName('c').Value:= Datetostr(datetimePicker1.time);
    先去了
    看看错误是不是和这句相关
      

  10.   

    ADOQuery.Insert;
                ADOQuery.FieldValues['Data1'] := EncryptString( sDate, AES_MIMA );
                ADOQuery.FieldValues['Data2'] := EncryptString( sTime, AES_MIMA ) ;
                ADOQuery.FieldValues['Data3'] := EncryptString( sTime, AES_MIMA ) ;