主题:求助:ADO连接报错!
flowwind111
[专家分:0] 发布于 2006-08-27 21:33:00
我用ADOConnection建了一个ODBC连接,连接到一个ACCESS数据库,再在DELPHI中用ADOTable与ADOConnection关联,在Form.Create()中执行ADOTable.Open时,报错如下:
Project1.exe raised exception class EVariantTypeCastError with message 'Could
not convert variant of type (NULL) into type (String)',不知是何原因,如何解决,请大家多多指点,非常感谢!
回复列表 (共11个回复)
沙发
zaliang [专家分:1010] 发布于 2006-08-29 17:33:00
晕.
Sql语句问题.
单步跟踪看你写的SQL 语句了.
板凳
flowwind111 [专家分:0] 发布于 2006-08-29 22:18:00
我没写SQL语句,是在FormCreate过程中写了唯一一条语句:ADOTable.open时,报的错,是不是ADO不支持ACCESS数据库的这种操作呀?因为后来同样的语句和Oracle连接没有任何问题,执行ADOTable.open一切OK。
3 楼
twxz [专家分:60] 发布于 2006-09-03 11:55:00
你最好把你数据库相关的代码放上来,不然光看错误警告是不能看出什么的
ADO设计的目标之一就是微软要让ACCESS能更通用,而且我写的东西使用ADO好的很啊
首先这些控件,要设置好 数据源以及参数,最常见的是密码填写问题
你可以先尝试的让DELPHI测试下你的连接代码.
后面要把ACTIVE这个给打开,然后设置要访问的表格,其他数据显示控监就完全可以连接上了
4 楼
flowwind111 [专家分:0] 发布于 2006-09-04 22:02:00
我第一次用ADO,测试用的,建立了一个ADOconnection1,通过ODBC连接一ACCESS数据库,无用户名,密码(都为空),测试连接OK,再把ADOconnection1控件LoginPrompt属性设为False,其他属性不变,再建了一个ADOTable1,connection属性设为上面的ADOconnection1,TableName属性设为该ACCESS中的一个表名,都没问题,接着在窗体的FormCreate事件中添加代码:
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOTable1.open;
end;
运行时即报前面的错误!(不管ADOTable1的Active属性是TRUE还是FALSE都一样)
5 楼
gongchengh [专家分:390] 发布于 2006-09-05 09:03:00
看看你的ADOTABLE中的连接SQL是不是空的,如果不是,那么OPEN的时候将执行这个SQL语句。
6 楼
hanzhijun402 [专家分:3690] 发布于 2006-09-05 09:52:00
应该是你的SQL语句为空了,当OPEN被执行的时候,编译器无法将null转化为SQL字符串。
7 楼
flowwind111 [专家分:0] 发布于 2006-09-05 21:58:00
ADOTable的SQL语句在哪儿设呀?好象只在ADOquery控件里才找到SQL属性了。
8 楼
nepenthe [专家分:460] 发布于 2006-09-07 12:54:00
估计可能事这两个方面的问题
1、你的ADOTable1中是否定义了字段?字段类型与数据库中的是否相同
2、建access表的时候对于文本字段不允许未空
9 楼
5cai [专家分:90] 发布于 2007-03-05 14:41:00
没有SQL语句是不能打开的
SQL语句如果不是Select 也是不能Open的
10 楼
hen990123 [专家分:10] 发布于 2007-03-20 10:54:00
同意9楼的说法
我来回复