2016-06-24 3 views
0

vba에서 쿼리를 생성하는 중 새로운 기능이 추가되었습니다. VBA 구문 내부에 변수를 전달하는 방법을 찾으려고합니다. 내가 어리 석고있는 곳을 보여주는 마음?VBA 변수를 Access Query (Excel VBA)로 전달

아래에서 시도했지만 자동화 오류가 나타납니다. 필자는 구문 오류가 생겼을 때 자동화 오류가 발생한다는 사실을 알아 차 렸습니다.

은 어떤 도움이 크게 OrderNumber를 가정하면 숫자는 따옴표를 사용하지 마십시오입니다

Sub GetDataFromAccess() 
    Dim cmd As New ADODB.Command, rs As ADODB.Recordset 
    Dim recordNum As Integer 

    recordNum = 7 

    cmd.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Ashleysaurus\Desktop" & "\" & "xyzmanu3.accdb" 
    cmd.CommandType = adCmdText 

    cmd.CommandText = "SELECT * FROM Invoice WHERE OrderNumber <" & "'" & recordNum & "'" & "ORDER BY OrderNumber ASC" 

    Set rs = cmd.Execute 
    Sheet1.Range("A2").CopyFromRecordset rs 

    rs.Close 
    cmd.ActiveConnection.Close 

    Debug.Print "Done!" 
End Sub 
+1

숫자 주위에 작은 따옴표를 넣으시겠습니까? '... er < "& recordNum &"ORD ... "는 따옴표 안에 공백을 두거나 문자열이 함께 뒤섞이는지 확인하십시오. –

+0

공간은 그것을했다, 나는 그것이 단순한 무엇인가 알았다. 나는 심지어 그들이 필요로하지 않는 작은 따옴표를 제거했다. 답변으로 게시하고 맛있는 피드백을 받으십시오. :) –

+1

아, 폴 X에주세요. 나는 오늘 게으른 느낌입니다. –

답변

2

감사합니다. 또한으로 주문하기 전에 당신이 공간이 있는지 확인하십시오, VBA의 쿼리를 작성 매개 변수화 된 쿼리를 고려하고 따옴표의 필요성을 피하기 위해 학습하는 동안

cmd.CommandText = "SELECT * FROM Invoice WHERE OrderNumber <" & recordNum & " ORDER BY OrderNumber ASC" 
+0

당신은 견적을 잊어 버렸지 만 대답을 확인해 줄 때 피드백을받습니다. –

3

! 동적 SQL 쿼리에서 값을 전달할 때 모든 언어에서 업계 최고의 사례입니다.

Sub GetDataFromAccess() 
    Dim cmd As New ADODB.Command, rs As ADODB.Recordset 
    Dim recordNum As Integer 

    recordNum = 7 

    With cmd 
     .ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _ 
       & "Data Source=C:\Users\Ashleysaurus\Desktop" & "\" & "xyzmanu3.accdb" 
     .CommandType = adCmdText 
     .CommandText = "SELECT * FROM Invoice" _ 
         & " WHERE OrderNumber < ? ORDER BY OrderNumber ASC"  
    End With 

    cmd.Parameters.Append cmd.CreateParameter("recordNumParam", adInteger, adParamInput, 10) 
    cmd.Parameters(0).Value = recordNum 

    Set rs = cmd.Execute 
    Sheet1.Range("A2").CopyFromRecordset rs 

    rs.Close 
    cmd.ActiveConnection.Close 

    Debug.Print "Done!" 

End Sub 
+0

나는이 피드백을 아주 많이 좋아하는데 그 순간은 현재의 수준을 조금 넘습니다. 나는이 링크를 저장하고 조정하는 방법을 배우지 만, 현재 나는 여전히 "작동하게 만드는"방법을 알고있다. –

+0

당신이 저를 돕기 위해 몇 가지 문서를 연결하고 싶다면 부풀어 오릅니다. –

+1

들려요. 당신이가는대로 배우십시오. Google은 많은 튜토리얼, 블로그, 게시물, 그 사용 및 중요성에 대한 기타 답변이 많기 때문에 매개 변수화 된 쿼리 *에 대한 귀하의 친구입니다. – Parfait