SSMS与ADODB中的T-SQL解释

时间:2014-05-13 20:27:04

标签: sql vb6 sql-server-2012 adodb

上下文:SQL Server 2012,ADODB 2.8,VB6

我有一个用VB6编写的COM DLL。 (好吧,这本身就是一个问题,但这不是我现在所说的。)

通过SSMS执行的某些声明工作正常。通过ADODB执行时,它们会失败。示例如下:

UPDATE tblEvents SET EventStartDateTime = EventStartDateTime + CAST('-604800000' AS bigint), EventEndDateTime = EventEndDateTime + CAST('-604800000' AS bigint) WHERE (EventID = 41)

UPDATE tblEvents SET EventStartDateTime = 1400947200000 WHERE (EventID = 41)

UPDATE tblEvents SET EventStartDateTime = CAST(1399132800000 as bigint) WHERE (EventID = 41)

UPDATE tblEvents SET EventStartDateTime = (1400256000000) WHERE (EventID = 41)

我从ADODB得到的错误是

ADODB.Connection: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

实现ADODB调用的代码如下:

Function OpenRecordSet2(ByRef oDb As Variant, sQuery As Variant) As Object ''ADODB.Connection ADODB.Recordset
    Dim oRecordSet As Object 'ADODB.Recordset
    Set oRecordSet = CreateObject("ADODB.RecordSet")
    oRecordSet.Open sQuery, oDb, adOpenForwardOnly, adLockOptimistic
    Set OpenRecordSet2 = oRecordSet
End Function

Function OpenDatabase2(theConnection As Variant) As Object ' ADODB.Connection
    Dim oConnection As Object 'ADODB.Connection

    On Error Resume Next
    Set oConnection = CreateObject("ADODB.Connection")
    oConnection.Open theConnection
    If Err.Number <> 0 Then
        Err.Raise OPENDATABASE_E_NOTFOUND, , Err.Description
    End If
    Err.Clear
    On Error GoTo 0
    Set OpenDatabase2 = oConnection
End Function

使用后期绑定,即CreateObject语句。

连接或记录集的设置是否不同?这就是我现在所能想到的(上午4:24)。

10小时之后

嗯,原来有两件事。一个是“。”当我应该使用“,”; JScript没有抱怨的一次是你用两个参数编写一个函数,但你只发一个参数。

另一个问题是我使用了错误的CursorType property。一旦我将其设置为adOpenDynamic,我就能够更新数据。

0 个答案:

没有答案