如何用ADO 访问 ODBC数据源(Access 数据库类型)里面的一个表?

djfu 2006-09-04 11:02:46
我有一个Access 数据库, test.mdb里面有一个简单的数据表 test,只有两列: Id, num,都是数字类型,然后我为这个Access 数据库建立了一个ODBC数据源TestODBC。

但是现在我用ADOTable访问这个ODBC数据源TestODBC里面的test表时老是出错:

Project test.exe raised exception class EVariantTypeCaseError with message
'Could not convert variant of type (Null) into type (String)'. Process
stopped.......

大家试一下,这个问题怎么解决???急。
...全文
244 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
亮剑_ 2006-09-04
  • 打赏
  • 举报
回复
我试了一下,用一个ADOTable连接Access的一张表,用DBGrid来展现数据,记录的字符类型类型为Null时是可以正常显示的
djfu 2006-09-04
  • 打赏
  • 举报
回复
没有啊,我就是简单的一个:
ADOTable1->Active = false;
ADOTable1->Connection = ADOConnection1;
ADOTable1->TableName = "test";
ADOTable1->Active = true;
hxfjb 2006-09-04
  • 打赏
  • 举报
回复
可能是因为在某个地方使用fieldbyname('').asstring了,而此时数据表中该字段为空.
djfu 2006-09-04
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4992/4992514.xml?temp=.6489527
----------------------

那个问题估计是由于ADOTable控件内部的bug引起,即使你用try{}catch(...)
也是捕捉不到那个异常的,
解决方法就是用ADOQuery替代ADOTable,其实ADOTable无非就是ADOQuery的一个特例吧,因为ADOTable就相当于ADOQuery的sql语句为: select * from Tbl1.


ADOConnection1->Connected = false;
ADOConnection1->ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=TESTDB";
ADOConnection1->Connected = true;
ADOQuery1->Close();
ADOQuery1->Connection = ADOConnection1;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from " + Edit1->Text);
ADOQuery1->Open();
djfu 2006-09-04
  • 打赏
  • 举报
回复
楼上的,设计期间我这里也是正常的,但是运行就报那个错误了啊。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧