%EC%9D%84%20%ED%86%B5%ED%95%B4%20SQL%20%EC%A0%80%EC%9E%A5%20%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80%20%EC%8B%A4%ED%96%89.png)
@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
전송되는 데이터 유형을 지정할 수 있고 매개변수를 설정하여 쿼리에서 데이터를 다시 받을 수 있으므로 옵션을 조금 더 자세히 살펴보는 것이 좋습니다 .