2017-10-31 1 views
0

VBA와 SQL을 사용하고 있습니다. 내가 절은 잘못이 어디에 내 브라켓을 sql where 절 변수

Dim SystemLookup As String 
Dim SqlString As String 


If IsNull(Me!SystemLookup) Then 
    Me!SystemLookup = "" 
Else 
    SystemLookup = Me!SystemLookup 
End If 

SqlString = "SELECT TblField.*, TblOrigin.SystemID" _ 
     & " FROM TblField INNER JOIN TblOrigin ON TblField.OriginID = TblOrigin.OriginID " _ 
     & " WHERE (((TblOrigin.SystemID) = " & systemlookup)) "" 

Me.RecordSource = SqlString 
End Sub 

처럼 내 VBA 보이는하지만 난 해결하는 방법을 잘 모르겠습니다. 어떤 sugguestions (Systemlookup은 양식에서 전달되는 변수입니다)

답변

1

안에 브래킷을 넣어야합니다. 당신은 앰퍼샌드와 따옴표를 누락

SqlString = "SELECT TblField.*, TblOrigin.SystemID" _ 
      & " FROM TblField INNER JOIN TblOrigin ON TblField.OriginID = TblOrigin.OriginID " _ 
      & " WHERE (((TblOrigin.SystemID) = " & systemlookup & ")) " 
1

및 추가 여는 괄호가 있습니다

이보십시오. 이 간단한 쿼리에서는 대괄호가 필요하지 않습니다.

SqlString = "SELECT TblField.*, TblOrigin.SystemID" _ 
     & " FROM TblField INNER JOIN TblOrigin ON TblField.OriginID = TblOrigin.OriginID " _ 
     & " WHERE TblOrigin.SystemID = " & systemlookup & ";" 

조건을 그룹화해야 할 때 WHERE 절을 구분합니다. 예를 들어, 제품이 두 날짜 사이에 선적되었는지 또는 제품이 선적되지 않았는지 알고 싶다면 선적 할 것입니다.

모든 예 세 유효 :

WHERE ([배송 일자]> = # 10/2,017분의 28 # AND [배송 일자] < = # 10/2,017분의 30 #) 또는 [ 배송 날짜] NULL 인

([배송 일자]> = # 10/2,017분의 28 # AND [배송 일자] < = # 10/2,017분의 30 #) 또는 ([배송 날짜] NULL의)

어디에서 (([발송일]> = # 10/28/2017 # 및 [발송일] < = # 10/30/2017 #) OR ([발송일]은 Null입니다))