我用ADOConnection,ADOTable,Datasource,DBGrid四個控件進行簡單的數據庫連接﹐為什么會出現'Could not convert variant of type(Null) into type(String)'
[注:代碼編輯器中沒添加任何代碼。]數據源是ODBC,數據庫是SQL Sever2000。但是當我把ADOConnection數據源改為其他的(不用ODBC連接)﹐或者把ADOTable控件而改用ADOQuery控件(仍然用ODBC數據源)﹐這兩種方式卻不會出現上面的錯誤信息。請問一下這是什么原因呢?

解决方案 »

  1.   

    把数据表中不允许为null的字段赋个值。
      

  2.   

    这种情况大多是由DELPHI自身的编辑器特点来决定的。因为不论你是否使用ADOQuery控件,所有的DELPHI指令在执行前都会将其翻译成SQL指令,然后才送到编译器中执行。你出现的这种情况就是由DELPHI指令在执行翻译成SQL指令前进行检查后,DELPHI认为你的指令错误所造成的。
       在BDE的参数中有一个SQL PASSTHRU MODE的参数,将它设为NOT SHARED状态,可以使得传出去的SQL命令不再被BDE拦下来检查,就会被直接送到后端数据库执行。
      

  3.   

    数据表里不允许为null的字段﹐我都有赋值啊﹐而且還換成其他的數據庫試了﹐也是一樣的錯誤。
      

  4.   


        既然不論是使用ADOQuery還是ADOTable控件﹐DELPHI都要對SQL指令進行檢查﹐那為什么對
    ADOQuery檢查可以通過﹐而對ADOTable檢查卻不能通過﹔而且不用ODBC數據源﹐ADOTable又可以編譯通過呢?
        yuanyuok你能再說的詳細﹐具體一點嗎?