0

この .xls vba コードがあり、レコード数をチェックしようとしており、それに基づいてさらにロジックを決定しています。

このvbaはProvider = MSDAORAで正常に動作していましたが、Provider = OraOLEDB.Oracleに変更すると、このvbaチェッククエリは常にレコードカウント= 0を返します

OraOLEDB.Oracle を使用する他のすべてのクエリは正常に動作します。

ここにコードを添付します。

ここで問題を指摘してくれてありがとう。

Public Function CheckJob(BusDate As String, JobName As String) As Boolean
Dim Cnt As ADODB.Connection, rst As ADODB.Recordset
Dim cmdGetComp As New ADODB.Command   
Dim RecCount As Integer
Dim rng As Range
Dim StConn As String
Dim Sql As String

StConn = strETDDBConnStringADO()'This is connection string with all credentials
Set Cnt = New ADODB.Connection
Set rst = New ADODB.Recordset
Set cmdGetComp = New ADODB.Command

Sql = "Select Count(*) from XYZ_DBO.TABLE_STATUS where BUSINESS_DATE='XXXXXX'"


With Cnt
.Open (StConn)

With cmdGetComp
    .ActiveConnection = Cnt ' Reference to a Connection object.
    .CommandType = adCmdText
    .CommandText = Sql
     Set rst = .Execute() ' Set the Recordset to the results of executing the query
End With

RecCount = rst(0)  'rst(0) always return value of 0 even if manual query have 1 record
.Close
End With
If RecCount > 0 Then   
CheckJob = True
Else
CheckJob = False
End If
End Function
4

2 に答える 2

0

接続文字列で UseSessionFormat=True を使用して、常に Oracle のデフォルトの日付形式を使用するようにします。

connectionString = "PROVIDER=OraOLEDB.Oracle;Persist Security Info=True;UseSessionFormat=True;USER ID=XXXX;PASSWORD=XXXX;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP))(HOST=XXX) (PORT=XXXX)))(CONNECT_DATA=(SID=XXXX)(SERVER=DEDICATED)))""

于 2018-06-19T14:34:10.300 に答える