无法将“ADODB.Recordset”类型的对象转换为“MSDATASRC.DataSource”类型

Posted

技术标签:

【中文标题】无法将“ADODB.Recordset”类型的对象转换为“MSDATASRC.DataSource”类型【英文标题】:Unable to cast object of type 'ADODB.Recordset' to type 'MSDATASRC.DataSource' 【发布时间】:2012-11-27 15:29:34 【问题描述】:

我有一个将 Vb6 迁移到 c#.net 的项目。当我运行这个 c# 解决方案时,我得到了一个 InvalidCastException,例如 Unable to cast object of type 'ADODB.Recordset' to type 'MSDATASRC.DataSource'

在语句DataGrid1.DataSource = (MSDATASRC.DataSource)(object)(Module1.rs);.

其中rs生成如下: 公共静态 ADODB.Connection conn = null; 公共静态 ADODB.Recordset rs = null;

     conn = new ADODB.Connection();
     conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.Windows.Forms.Application.StartupPath + "\\myDatabase.mdb;Persist Security Info=False",String.Empty,String.Empty,-1);

     rs = new ADODB.Recordset();         
     rs.ActiveConnection = conn;
     rs.CursorLocation = (ADODB.CursorLocationEnum)(MSAdodcLib.CursorLocationEnum.adUseClient);
     rs.CursorType = (ADODB.CursorTypeEnum)(MSAdodcLib.CursorTypeEnum.adOpenDynamic);
     rs.LockType = ADODB.LockTypeEnum.adLockOptimistic;
     rs.Source = "SELECT * FROM MyTable";

     rs.Open(null,null,ADODB.CursorTypeEnum.adOpenUnspecified,ADODB.LockTypeEnum.adLockUnspecified,-1);

谁能帮我解决这个问题。

【问题讨论】:

【参考方案1】:

尝试:

 DataGrid1.DataSource = DataGrid1.DataSource = (MSDATASRC.DataSource)(object)(Module1)

【讨论】:

嗨,Oscar,我尝试使用您的代码,但出现错误,例如**'Project1.Module1' is a 'type' but is used like a 'variable'** 我试过这样 DataGrid1.DataSource = (MSDATASRC.DataSource)(object)(Module1.rs.Source);。现在我可以加载页面,但我无法从表中获取记录。

以上是关于无法将“ADODB.Recordset”类型的对象转换为“MSDATASRC.DataSource”类型的主要内容,如果未能解决你的问题,请参考以下文章

VBA 将整个 ADODB.Recordset 插入表中

ADODB.Recordset 错误 '800a0bb9' 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。

如何从此 ADODB.Recordset 中获取插入 ID?

Excel 单元格到 ADODB.Recordset

由于空格,ADODB.Recordset 到 SQL Server 查询失败

ADODB Recordset 字段访问顺序给出空值