各位大侠:
     小弟遇到一个问题,望各位大侠帮忙解决,小弟不胜感激。
     小弟用Delphi6+Access2000开发了一个小型的管理系统,现在在客户那里使用有半年多了,最近经常反映系统有问题,小弟让客户把数据库文件发了过来,查看后发现有两次是数据库中的数据丢失了。一次一个表丢失了2条数据,另一次一个表中的所有数据都不见了,管理系统再对这个表执行insert操作,报如下错误Access violation at address 1B008A00 in module 'msjet40.dll', Read of address 00000000.下面是我的数据库操作语句DbName := ExtractFileDir(Application.ExeName) + '\Test.dat';
ADOExec.ConnectionString :=  'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBName+';Persist Security Info=False;Jet OLEDB:Database Password="rfcmm";';    //保存用户基本信息
    SQL.Text := 'insert into TB_CONSUMER values(:id,:name,:sex,:metertype,'
                + ':cardtype,:areatype,:phone,:number,:address,:order,:status,'
                + ':datetime,:opername,:memo)';
    Parameters.ParamByName('id').Value := StrToInt(Trim(edtUserID.Text));
    Parameters.ParamByName('name').Value := Trim(edtUserName.Text);
    Parameters.ParamByName('sex').Value := Trim(cbSex.Text);
    Parameters.ParamByName('metertype').Value := Trim(cbMeterType.Text);
    Parameters.ParamByName('cardtype').Value := Trim(cbCardType.Text);
    Parameters.ParamByName('areatype').Value := Trim(cbAreaType.Text);
    Parameters.ParamByName('phone').Value := Trim(edtPhone.Text);
    Parameters.ParamByName('number').Value := Trim(edtNumber.Text);
    Parameters.ParamByName('address').Value := Trim(edtAddress.Text);
    Parameters.ParamByName('order').Value := 1;
    Parameters.ParamByName('status').Value := 0;
    Parameters.ParamByName('datetime').Value := FormatDateTime('yyyy-mm-dd', now);
    Parameters.ParamByName('opername').Value := CurrOper.OperName;
    Parameters.ParamByName('memo').Value := Trim(edtMemo.Text);
    ExecSQL;
请各位大哥大姐帮忙啊,小弟新手,请多多指教。

解决方案 »

  1.   

    只执行insert一般不会丢数据,除非 有数据约束,导致数据插入时,遇到主键重复时,会添加失败,还是好好检查一下整体代码吧
      

  2.   

    多谢bdmh指教。
    出问题后我再执行insert操作时,报Access violation at address 1B008A00 in module 'msjet40.dll', Read of address 00000000错误,会是什么问题那?
      

  3.   

    应该是'msjet40.dll' 模块中 使用了没有初始化的对象 
    PS 一个对象要想Create然后才能使用,楼主检查下,另外楼主是用了DLL,在DLL中可能会出项各种莫名其妙的问题,给个资料 楼主参考下
      

  4.   

    7楼乱说啥啊
    msjet40.dll是系统DLL,JET数据库引擎的修复数据库吧
      

  5.   

    LZ贴出来的一段代码看不出来有什么问题
    你在insert之前还有什么操作吗,检查一下其余的代码