0

次のコードは、ストアド プロシージャ パススルー クエリを実行します。パラメータはフォームから受信され、ストアド プロシージャに渡されます。エラーは、それが無効な SQL ステートメントであることを示しています。コードが正しいかどうか、およびデータベースへの接続方法を知る必要があります。結果はレコード セットで返されます。ありがとう!

Private Sub Command10_Click()
Dim rs1 As DAO.Recordset
Dim DB As Database
Dim Q As QueryDef
Dim strSQL As String

Set DB = CurrentDb()
Set Q = DB.QueryDefs("Call_SP")

strSQL = "execute dbo.ix_spc_planogram_match " & [Forms]![start]![Selection]![cat_code]
Q.ReturnsRecords = True

Q.SQL = strSQL

Set rs1 = DB.OpenRecordset(strSQL)

Do While Not rs1.EOF

Debug.Print rs1.Fields.Item("POG_DBKEY").Value = "POG_DBKEY"
Debug.Print rs1.Fields.Item("COMP_POG_DBKEY").Value = "COMP_POG_DBKEY"
Debug.Print rs1.Fields.Item("CURR_SKU_CNT").Value = "CURR_SKU_CNT"
Debug.Print rs1.Fields.Item("COMP_SKU_CNT").Value = "COMP_SKU_CNT"
Debug.Print rs1.Fields.Item("SKU_TOTAL").Value = "SKU_TOTAL"
Debug.Print rs1.Fields.Item("MATCHD").Value = "MATCHD"

rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
Set rs1 = Nothing
End Sub
4

1 に答える 1

0

CurrentDBはMSAccessですが、SQLServerストアドプロシージャを実行しています。サーバーへの接続に対して実行する必要があります。

例えば:

Dim objcon As New ADODB.Connection

scn = "Provider=sqloledb;Data Source=ServerName;" _
    & "Initial Catalog=DBNAME;User Id=USERNAME;Password=Password;"

objcon.Open scn

Set rs = objcon.Execute
于 2012-07-16T18:42:18.400 に答える