[英]VB6 - Call Stored Procedure with recordset output on SQLServer
我應該運行一個產生記錄集的過程。 我在網上找到了一些代碼。 我使用了這段代碼:
Dim cnAdoDB As ADODB.Connection
Dim StrConnection As String
Dim ACmd As ADODB.Command
Dim TempRS As ADODB.Recordset
Dim RecordNumber As Long
Set cnAdoDB = New ADODB.Connection
StrConnection = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=xxx;Password=xxx;Initial Catalog=DB-Name;Data Source=xxx.xxx.xxx.xxx"
cnAdoDB.ConnectionString = StrConnection
cnAdoDB.Open
cnAdoDB.CursorLocation = adUseClient
Set ACmd = New ADODB.Command
ACmd.CommandType = adCmdStoredProc
ACmd.CommandText = "[dbo].[st_log_GetDatiTracciabilitaLottoArticolo]"
ACmd.Parameters.Append ACmd.CreateParameter("@ReturnValue", adInteger, adParamReturnValue)
ACmd.Parameters.Append ACmd.CreateParameter("@vLotto", adVarChar, adParamInput, 20, "2022085001")
ACmd.Parameters.Append ACmd.CreateParameter("@vCodArticolo", adVarChar, adParamInput, 32, "A014L628")
ACmd.Parameters.Append ACmd.CreateParameter("@vDataOraPompa", adDate, adParamInput, , Null)
Set ACmd.ActiveConnection = cnAdoDB
Set TempRS = ACmd.Execute(RecordNumber)`
ADODB.Recordset RecordCount 屬性總是返回 -1:
TempRS 記錄集為空,但“RecordNumber”變量的值為 2,因為結果記錄確實如此。
養成從不依賴 .RecordCount 屬性的習慣。 太分情況了。 來自幫助:
使用 RecordCount 屬性找出 Recordset object 中有多少條記錄。當 ADO 無法確定記錄數或提供程序或 cursor 類型不支持 RecordCount時,該屬性返回 -1。 讀取關閉的 Recordset 上的 RecordCount 屬性會導致錯誤。
您的代碼也有錯誤:
ACmd.Parameters.Append ACmd.CreateParameter("@vLotto", adVarChar, adParamInput, 20, "2022085001")
ACmd.Parameters.Append ACmd.CreateParameter("@vCodArticolo", adVarChar, adParamInput, 32, "A014L628")
而不是 "20" 和 "32" (大概是定義的大小) ,參數 object 期望傳遞數據的實際長度,即
ACmd.Parameters.Append ACmd.CreateParameter("@vLotto", adVarChar, adParamInput, Len("2022085001"), "2022085001")
ACmd.Parameters.Append ACmd.CreateParameter("@vCodArticolo", adVarChar, adParamInput, Len("A014L628"), "A014L628")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.