回 帖 发 新 帖 刷新版面

主题:求助:ADO连接报错!

我用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个回复)

沙发

晕.
Sql语句问题.
单步跟踪看你写的SQL 语句了.

板凳


我没写SQL语句,是在FormCreate过程中写了唯一一条语句:ADOTable.open时,报的错,是不是ADO不支持ACCESS数据库的这种操作呀?因为后来同样的语句和Oracle连接没有任何问题,执行ADOTable.open一切OK。

3 楼

你最好把你数据库相关的代码放上来,不然光看错误警告是不能看出什么的
ADO设计的目标之一就是微软要让ACCESS能更通用,而且我写的东西使用ADO好的很啊

首先这些控件,要设置好 数据源以及参数,最常见的是密码填写问题
你可以先尝试的让DELPHI测试下你的连接代码.

后面要把ACTIVE这个给打开,然后设置要访问的表格,其他数据显示控监就完全可以连接上了

4 楼

我第一次用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 楼

看看你的ADOTABLE中的连接SQL是不是空的,如果不是,那么OPEN的时候将执行这个SQL语句。

6 楼

应该是你的SQL语句为空了,当OPEN被执行的时候,编译器无法将null转化为SQL字符串。

7 楼


ADOTable的SQL语句在哪儿设呀?好象只在ADOquery控件里才找到SQL属性了。

8 楼

估计可能事这两个方面的问题
1、你的ADOTable1中是否定义了字段?字段类型与数据库中的是否相同
2、建access表的时候对于文本字段不允许未空


9 楼

没有SQL语句是不能打开的

SQL语句如果不是Select 也是不能Open的

10 楼

同意9楼的说法

我来回复

您尚未登录,请登录后再回复。点此登录或注册