说明:我的ACCESS表里有ID、Memo两个字段,分别是整数和备注字段。
      ADOQuery.Close;
      ADOQuery.SQL.Clear;
      ADOQuery.SQL.Add('INSERT INTO Game3 VALUES(:ID,:Memo)');
      ADOQuery.Parameters.ParamValues['ID'] := ID;
      ADOQuery.Parameters.ParamByName('Memo').Value := theMemo.Text;
      ADOQuery.ExecSQL;
======================================
以上这段代码,在我的机器上运行正常(DELPHI7+OFFICE XP),但在一些网友的机器上却出现“[ODBC Microsoft Access Driver]非法的精确度数值”这样的错误。让我不知所措,请高手指教一种不会出错的MEMO字段读写方法,谢谢!

解决方案 »

  1.   

    试用一下adotalbe
    adotabel1.open;
    adotabel1.appendrecord([ID,theMemo.Text]);
      

  2.   

    是不是Access的版本不一样!肯定是Access Driver的问题
      

  3.   

    ADOQuery.Parameters.ParamByName('Memo').Value := theMemo.Text;
    把这句改为 ADOQuery.Parameters.ParamByName('Memo').asstring:= theMemo.Text;
    试,我一直是这样用的,没有错过
      

  4.   

    tsst(田sir) ,你说得没错,我也认为是Access Driver的问题。bsmqu,谢谢你的方法,我现在就去试试!
      

  5.   

    :(
    ParamByName根本就没有AsString方法         5555555555555
      

  6.   

    安装一个统一的Access数据引擎驱动
      

  7.   

    Memo可能是保留字,有可能是它的问题
      

  8.   

    备注型的字段都有Loadfrom...的方法。
      

  9.   

    经过仔细观察发现,在我的机器上也有这种问题,只是数据量稍大的时候,实际上也不太大,大概有100汉字就出错,与字段命名“Memo”无关,因为我改了还是出错。唉,可怜就没人能帮我解决这个问题吗?
      

  10.   

    ADOQuery.Parameters.ParamByName('Memo').Value := theMemo.Text;
    检测一下上面这句是不是长度超过255后发生的错误?
      

  11.   

    呵呵,memo只支持256个字符,也就是一百多个汉字,如果超出了就显示不出来咯。
      

  12.   

    建议你的程序不要用delphi自带的MEMO,要用一些空间包,比如DXDBGRID,INFOPOWER等才能解决这个问题。
      

  13.   

    那你就改用 RichEdit 吧。
      

  14.   

    ADOQuery.Parameters.ParamByName('Memo').Value := theMemo.Text;
    把这句改为 ADOQuery.Parameters.ParamByName('Memo').asstring:= theMemo.Text;
    很对啊!