ODBC SQL Server驱动程序 - 从字符转换日期和/或时间时转换失败

时间:2014-06-02 18:42:57

标签: sql vba stored-procedures odbc

我正在使用MS Access VBA调用存储过程,其中包含从Access传递的参数。我在将日期变量传递给SQL Server存储过程时遇到问题:

VBA:

Dim zsql, asql, bsql, gsql As String
Dim searchDeal, searchReviewed As String
Dim searchDate, searchFile As Date
Dim searchType As String
Dim user As String
Dim qdfNew As DAO.QueryDef

Dim myRecordset6 As DAO.Recordset
Dim myDatabase6 As DAO.Database
Dim mycheckRs As DAO.Recordset

DoCmd.SetWarnings False

searchDeal = Me.cboDeal.Value
searchDate = Me.cboStDate.Value
searchFile = Me.cboFile.Value
user = GetUser()

 Dim dbconn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset
    Dim param As New ADODB.Parameter

'' Connect to Data Source - Securities DB - SQL Server
Set dbconn = New ADODB.Connection
dbconn.ConnectionString = "driver=SQL Server;server=R7SQL1;database=SecuritiesDB;trusted_connection=YES"
dbconn.Open dbconn.ConnectionString
Set cmd = New ADODB.Command
cmd.ActiveConnection = dbconn

'' Set CommandText equal to the stored procedure name (spStatementCheck)
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "spAppendActivity"
''cmd.NamedParameters = True 'paramStatementCheck'
cmd.Parameters.Append _
    cmd.CreateParameter("@SPstrNGN", adVarChar, adParamInput, 25, searchDeal)
cmd.Parameters.Append _
    cmd.CreateParameter("@SPuser", adVarChar, adParamInput, 100, user)
cmd.Parameters.Append _
    cmd.CreateParameter("@SPdDateActivity", adDBTimeStamp, adParamInput, 10, searchDate) <--ISSUE
cmd.Parameters.Append _
    cmd.CreateParameter("@SPdDateFile", adDBTimeStamp, adParamInput, 10, searchFile) <--ISSUE
--Date format that I am passing should be MM/DD/YYYY

rs.CursorType = adOpenDynamic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
rs.Open cmd

SQL:

    ALTER PROCEDURE [dbo].[spAppendActivity]
        @SPsearchDeal as nvarchar(25),
        @SPsearchDate as datetime,
        @SPsearchFile as datetime,
        @SPuser as nvarchar(100)    
    AS

        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;
        -- Insert statements for procedure here
    delete from tbl_Activity_Losses; 

INSERT into tbl_Activity_Losses ([Date], NGN_Short, FileDate)
Select [Date], NGN_Short, Filedate
from tbl_Master_Rec
where tbl_Master_Rec.[Date] = @SPsearchDate <--Conversion Issue
and tbl_Master_Rec.FileDate = @SPsearchFile <--Conversion Issue
and  tbl_Master_Rec.NGN_Short like '%' +  @SPsearchDeal + '%'

使用adDBTimeStamp传递日期时出现以下错误消息“[Microsoft] [ODBC SQL Server驱动程序]从字符串转换日期和/或时间时转换失败。”

我还尝试将日期作为adDBDate传递,并收到错误“[Microsoft] [ODBC SQL Server驱动程序]可选功能未实现。”

如果您需要有关我所遇问题的更多信息,请告知我们

0 个答案:

没有答案