1

以下の関数は正常に機能し、日付を日付ではなく文字列として出力することを除いて、正しい結果を出力します。代わりに日付を出力するにはどうすればよいですか?

Function GetExpiries_YieldX(TradeDate As Date, Code As String) As Variant

    'Create and open the connection
    Dim oConnection As Connection
    Set oConnection = New Connection
    oConnection.ConnectionString = strConnectionStringYieldX
    oConnection.Open

    'Create the command object
    Dim oCommand As Command
    Set oCommand = New Command
    oCommand.CommandType = adCmdText

    Dim SQLString As String

        SQLString = "SELECT DISTINCT Expiry" _
                 & " FROM MTM" _
                 & " WHERE TradeDate = ?" _
                 & "   and Code = ?"

    oCommand.CommandText = SQLString
    oCommand.ActiveConnection = oConnection

    oCommand.Parameters.Append oCommand.CreateParameter("Date", adDBTimeStamp, adParamInput)
    oCommand.Parameters.Append oCommand.CreateParameter("Code", adVarChar, adParamInput, 50)

    oCommand.Parameters.Item("Date").Value = TradeDate
    oCommand.Parameters.Item("Code").Value = Code

    Dim result As New ADODB.Recordset
    Set result = oCommand.Execute

    Dim resultA As Variant
    'GetExpiries_YieldX = WorksheetFunction.Transpose(result.GetRows)
    GetExpiries_YieldX = result.GetRows

    oConnection.Close

End Function
4

1 に答える 1

3

2.8 より前のバージョンの ADODBでは、SQL Server 2008 で導入された新しいDateデータ型を認識できない問題がありました。

したがって、次の点を確認してください。

  1. 接続文字列でネイティブSQL Server プロバイダー ( OLEDB SQL プロバイダーではない)を使用していることを確認してください。そのため、"Provider=SQLNCLI10.1;Data Source=MyServer;Initial Catalog=MyDatabase;Uid=MyUser;Pwd=MyPassword"のようになります。 ;"
  2. 最新の SQL Native Client がインストールされていることを確認してください (sqlncli2008.msi など、SQL Server 2008 再頒布可能パッケージから盗むことができます)。
  3. VB プロジェクトで参照されている ADO のバージョンが 2.8 であることを確認してください

ADODB & SQL 2008 (MS フォーラム)ですべてを見つけました

データベースの日付列から配列の日付列を取得するのに役立つことを願っています!

于 2013-04-10T16:04:14.390 に答える