여러 매개변수를 사용하여 Excel(VBA)을 통해 SQL 저장 프로시저 실행

여러 매개변수를 사용하여 Excel(VBA)을 통해 SQL 저장 프로시저 실행

@FreeMan님, 도움을 주셔서 감사합니다.

그러나 나는 이것으로 여전히 길을 잃었습니다.

그냥 처음부터 시작하겠습니다.

이것은 내 쿼리를 요약한 것입니다(명확하기를 바랍니다).

SELECT DISTINCT Q1,Q2,Q3

from(SELECT A,B,C) Q1

full outer join

(SELECT A,B,C

from tblA as a

join tblB as b

on a.aID = b.bID

join tblC as c

on b.bID = c.cID

where (a,b, cdate <= ?

group by c) Q2

ON Q1.A = Q2.B

WHERE Convert(DATETIME, Q1.[B], 103) <= ?

order by Q1.[A]

When I try to refresh my table, I get the following error message

"[Microsoft][ODBC SQL Server Driver]Invalid Parameter number" and then

"[Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index"

지정된 셀(예: 셀 C3)의 매개 변수를 사용하여 이 쿼리를 실행할 수 있는 방법이 필요합니다.

저는 VBA에 익숙하지 않아서 위에서 조언한 모든 명령이 혼란스럽습니다.

원래 질문

*[저는 VBA의 초보자이므로 두 개 이상의 매개변수를 사용하여 쿼리를 실행하는 데 어려움을 겪고 있습니다. 나는 이 매크로를 사용하고 있지만 실행하면 두 번째 매개변수가 제공되지 않았다는 메시지가 나타납니다.

Sub RefreshQuery()

With ActiveWorkbook.Connections("MYSERVER").OLEDBConnection
    .CommandText = "EXECUTE dbo.Tng_Market_Feed '" & Range("B2").Value & "'"
End With
ActiveWorkbook.Connections("MYSERVER").Refresh

End Sub

내 질문은 다음과 같습니다.- 1. 변수를 날짜 형식으로 어떻게 설정합니까? 모든 거래 <= 특정 날짜(변수 매개변수)를 표시하는 보고서가 필요합니다. 2. 스프레드시트의 변수 위치(셀 b2)는 두 매개변수에 대해 동일하게 유지됩니다. 예를 들어, 2014년 12월 31일의 모든 거래 목록과 2014년 12월 31일 같은 날짜의 대손충당금 가치/합계가 필요합니다.]*

답변1

다음은 코드 내에서 매개변수를 생성하고 설정하는 간단한 샘플입니다.

Sub CreateParam()

     Dim oQuery As QueryTable
     Dim oParam As Parameter

     Set oQuery = Sheet3.QueryTables(1)

     oQuery.CommandText = Replace(oQuery.CommandText, "='Berlin'", "=?")

     Set oParam = oQuery.Parameters.Add("CityParam")

     oParam.SetParam xlRange, Sheet3.Range("J1")
     oParam.RefreshOnChange = True

     oQuery.Refresh

End Sub

코드가 빠르게 작성되었습니다.Dicks-clicks.com

.Parameter.Add()기본적으로 저장 프로시저의 각 매개변수에 대한 행을 실행하면 됩니다 . Sub()이를 수행하기 위해 전체를 작성할 필요는 없으며 Set oParam = oQuery.Parameters.Add()기존 코드에 해당 행을 포함시키기만 하면 됩니다.

OUT전송되는 데이터 유형을 지정할 수 있고 매개변수를 설정하여 쿼리에서 데이터를 다시 받을 수 있으므로 옵션을 조금 더 자세히 살펴보는 것이 좋습니다 .

관련 정보