VB.NET中的记录集

VB.NET中的记录集,vb.net,ms-access,Vb.net,Ms Access,全部, 试图在VB.NET中实现一种记录集方法,并且(在这个社区的大力帮助下)已经达到了几乎可以运行的程度 代码: 最后一行在尝试执行rsMaster时引发异常。打开行: COM异常未处理 参数类型错误、超出可接受范围或相互冲突 有什么想法吗?更改游标类型或锁类型似乎没有任何好处,上面指定的类型在编码行时可以作为选项使用。我(在WAG上)在项目中添加了以下内容: 导入ADODB.LockTypeEnum 导入ADODB.CursorTypeEnum 没有运气 蒂亚 戴夫一些想法: SQL语句是

全部,

试图在VB.NET中实现一种记录集方法,并且(在这个社区的大力帮助下)已经达到了几乎可以运行的程度

代码:

最后一行在尝试执行rsMaster时引发异常。打开行:

COM异常未处理

参数类型错误、超出可接受范围或相互冲突

有什么想法吗?更改游标类型或锁类型似乎没有任何好处,上面指定的类型在编码行时可以作为选项使用。我(在WAG上)在项目中添加了以下内容:

导入ADODB.LockTypeEnum 导入ADODB.CursorTypeEnum

没有运气

蒂亚

戴夫

一些想法:

  • SQL语句是否在“纯”数据库工具中工作?(s看起来有点奇怪,但我认为这是SO中的格式问题。)
  • select*
    应该可以工作,但请尝试一个特定的简单列(短字符串或整数),可能是“棘手”列数据类型存在问题
  • 您是否声明了objConn并打开了正确的连接

还有一些想法:

  • 当执行语句时出现错误时,您的语句似乎有问题。是否有一个真正简单的SQL语句可以在您的场景中使用?(没有排序依据,只有一列,…)
  • 使用与VB.NET程序中使用的连接参数相同的连接参数,从MSAccess中尝试该语句。可能您正在使用程序中的其他用户,可能您必须限定表名等
  • 如果您说该连接工作正常,您使用该连接做了什么?是否有任何东西需要访问数据库

好的,如果删除adOpenForwardOnly和ADLOCKOPTIMIC参数不会改变任何东西,那么稍微更改代码以使用连接对象的Execute方法如何

rsMaster.Open(strSQL, objConn, adOpenForwardOnly, adLockOptimistic)
变成

rsMaster = objConn.Execute(strSQL)

不确定你的联系。您有一个访问标记,但提到您在SQL Server中进行了测试。如果您使用的是access.mdb文件

导入adodb

Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strSQL, strConn As String
        Dim rsMaster As New ADODB.Recordset
        Dim objConn As New ADODB.Connection

        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DQ\DQ.mdb"
        objConn.Open(strConn)

        strSQL = "select * " & "from tblDQ " & "order by xid, xcode, xDOS"
        rsMaster.Open(strSQL, objConn, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockOptimistic)
        rsMaster.MoveFirst()
        Me.Text = rsMaster("xcode").Value


        rsMaster.Close()
        rsMaster = Nothing

    End Sub
End Class

我假设您已经在其他地方定义并打开了objConn?是的,objConn在代码中较早地打开,并且适用于在此之前的所有操作。tblDQ是表的实际名称还是表对象的名称?如果是后者,则“select*from”&tblDQ.name&“order by xid,xcode,xDOS”是更好的主意吗?SQL语句在SQL Server内的查询窗口中工作,没有问题。我确实尝试过选择一个字段,但异常抛出没有改变。而且objConn是开放的&在上面的代码之前就可以工作,所以除非我把它磨坏了,否则它仍然很好。:)
Public Class Form1

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim strSQL, strConn As String
        Dim rsMaster As New ADODB.Recordset
        Dim objConn As New ADODB.Connection

        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DQ\DQ.mdb"
        objConn.Open(strConn)

        strSQL = "select * " & "from tblDQ " & "order by xid, xcode, xDOS"
        rsMaster.Open(strSQL, objConn, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockOptimistic)
        rsMaster.MoveFirst()
        Me.Text = rsMaster("xcode").Value


        rsMaster.Close()
        rsMaster = Nothing

    End Sub
End Class