UI라는 콤보 상자를 작성하려고하는데 사용자가 콤보 상자 "cmbFilter"에서 차원 매개 변수를 선택한 다음 텍스트 상자에 +/- 공차를 추가합니다. "txtTererance". 목록에서 부품 번호를 선택한 후에는 해당 매개 변수의 tolorence 범위에있는 유사한 부품 번호에 대한 결과를 반환해야합니다. 테이블의 필드 이름은 차원 매개 변수이며 폼로드 코드의 콤보 박스에 대한 .AddItem
입니다.SQL 쿼리에서 필드 선택기로 양식 컨트롤 사용
예. 부품 번호 1 OD가 5이므로 검색 매개 변수로 "OD"를 선택한 다음 +/- 1로 공차를 설정합니다. 결과는 부품 번호 2에 OD가 6이지만 부품 번호 3에 OD 7이 있어야합니다 .
내가 상관없이 내가 조작이나 구문 오류를 얻을이 코드의 구문으로 변경 어떤 쿼리하지만 에 listboxs 행 원본을 설정할 수 없다. 그래서 나는 폼 컨트롤 권한을 참조하지 않는 Im, 또는 내 논리가 맞지 않다고 가정한다.
액세스 할 때 SQL 디자인보기에서 다음 코드를 피곤했습니다. 나는 또한 액세스 여전히 VBA 행운의 SQL 코드를 작성하는 것을 시도했다
SELECT Part_Matrix.Part_Number, Part_Matrix.Customer, Part_Matrix.Large_OD, Part_Matrix.Vent_Opening, & _
Part_Matrix.BPT, Part_Matrix.MFT, Part_Matrix.PD, Part_Matrix.Hat_ID, Part_Matrix.Microfinish, & _
Part_Matrix.Turn_Operations, Part_Matrix.Stud_Holes, Part_Matrix.SH_Dimensions, Part_Matrix.Manufacturer_Holes, & _
Part_Matrix.MH_Dimensions, Part_Matrix.Other_Holes, Part_Matrix.Other_Dimension
FROM Part_Matrix
WHERE [Forms]![UI]![cmbFilter]
BETWEEN (((SELECT [Forms]![UI]![cmbFilter] FROM Part_Matrix WHERE Part_Number = [Forms]![UI]![lbSelected]) - [Forms]![UI]![txtTolerance])
AND ((SELECT [Forms]![UI]![cmbFilter] FROM Part_Matrix WHERE Part_Number = [Forms]![UI]![lbSelected]) + [Forms]![UI]![txtTolerance]))
ORDER BY [Forms]![UI]![cmbFilter] DESC;
SQL은 아래 코드는 내가 위에서는 이제 동일한 논리를 알고, 단순한 텍스트였다.
Private Sub btnSearch_Click()
Dim SQL As String
If txtTolerance = "" Then
MsgBox ("No Tolerance Entered")
Exit Sub
ElseIf cmbFilter = "" Then
MsgBox ("No Filter Criteria Entered")
Exit Sub
Else
SQL = "SELECT Part_Matrix.[Part_Number], " & Me.cmbFilter & " " & _
"FROM Part_Matrix" & _
"ORDER BY " & Me.cmbFilter & " DESC;"
Debug.Print SQL
DoCmd.RunSQL SQL
lbFilterResults.RowSource = SQL
lbFilterResults.Requery
End If
End Sub
'... FROM Part_MatrixORDER BY ...'당신은 검색어의 단어 사이에 공백을 넣어야합니다. –
당신은 vba에서 이야기하고 있습니까? 또는 쿼리? – holi4683
VBA에서 SQL 변수의 값 : Part_Matrix와 ORDER 사이에 공백을 두지 않았습니다. –