簡體   English   中英

VB6 - 在 SQLServer 上使用記錄集 output 調用存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM