2009-07-23 4 views

답변

0

개인적으로 코드에서 SQL 문을 사용할 때마다 변수에 문을 저장하는 것을 선호합니다. 문을 변수에 할당 한 후 테스트하는 동안 Debug.Print를 사용하여 txtempid 및 txtautonumber를 구문 분석 한 후 SQL 문이 어떻게 보이는지 확인할 수 있습니다. 이런 식으로 보일 겁니다.

Dim sSQL as String 
sSQL = "select TestScenario,TestId from tblTesting where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'" 
Debug.Print sSQL 
lstDiff.RowSource = sSQL 

직접 창이 표시되어 있으면 (Ctrl-G) SQL 문이 실제로 무엇인지 볼 수 있습니다. 바로 창에서 제대로 보이면 복사하여 쿼리 빌더에 붙여넣고 실행하십시오.

0

SQL Management Studio에서 쿼리를 실행 해보십시오. 어떤 행이 다시 나옵니까?

편집 : 방금 액세스 태그가 나타납니다. 테이블에 제공된 ID가 포함 된 게시물이 하나 이상 있는지 확인 하시겠습니까?

+0

예 아래의 쿼리가 발생되어 하나의 행 : tblTesting FROM SELECT TestScenario, 시험 ID WHERE EMPID = 22222222 testid를 = 131; –

+0

VBA를 사용한 지 몇 년이 지났습니다. 그러나 MsgBox()를 사용하여 결과를 "경고"할 수 있습니까? 목록 상자가 아닌 다른 개체 사용. 올바른 데이터베이스를 선택하셨습니까? – dbd

0

내 액세스가 녹슬지 만 모든 것이 실패하면 SQL에서 데이터를 캡처하고 목록 상자에 값을 추가하여 루프를 통해 레코드 세트를 사용해보십시오. Example Code

2

필드의 값은 숫자이므로 추가 작은 따옴표는 필요하지 않습니다. 코드는 다음과 같아야합니다.

Me.lstDiff.RowSource = "select TestScenario,TestId from tblTesting where empid= " & Me.txtEmpId & " and testid= " & Me.txtAutoNumber & ";" 

필드 참조에서 .Value도 삭제되었지만 필수는 아닙니다.

그리고 성명 끝 부분에 세미콜론을 추가했습니다.

이 코드를 삽입 언제/어디서에 따라, 당신은뿐만 아니라 다음 문을 추가해야 할 수 있습니다 :

Me.lstDiff.Requery 
1

을 당신은 동일한에 대한 질문을 게시 유지 WHERE 각 정확히 같은 명백한 오류가있는 절 하나. 그래서 SO 사용자는 정정당당하게 오류를 지적하고 며칠 후 동일한 오류가있는 WHERE 절을 사용하여 관련된 질문을 제시합니다.

DLookup Problem :

txtContSunStart1.Value = DLookup("Start1", "tblContract", _ 
    "TestId = " & _ 
    lstResults.Value & _ 
    "" And "Day = 'Sunday'") 

VBA Update Query :

DoCmd.RunSQL (" Update tbltesting set IsDiff ='Yes' where empid= " & Me.txtEmpId.Value & " and testid= " & Me.txtAutoNumber.Value & ";") 

VBA SQL Problem

DoCmd.RunSQL ("insert into tbltesting (IsDiff)values ('Yes') where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'") 

그리고 현재의 문제 :

lstDiff.RowSource = "select TestScenario,TestId from tblTesting where empid= '" & Me.txtEmpId.Value & "' and testid= '" & Me.txtAutoNumber.Value & "'" 

정확히 동일한 문제 세트를 반복해서 사용하는 데 어려움을 겪고 있습니다.! 나 txtAutoNumber

"... AND 대해 testid ="& :

  1. 숫자 값은 구분 기호를 필요가 없습니다 여기

    는 Access에서 올바른 구분 기호와 SQL 문자열을 연결하는 규칙입니다
  2. 텍스트 값에는 따옴표 구분 기호가 필요합니다. Access에서는 큰 따옴표를 사용하는 것이 일반적이지만 작은 따옴표를 사용하는 것이 훨씬 쉽습니다. 큰 따옴표를 사용하면 큰 따옴표를 입력 할 수 있습니다 (상황에 따라 "" "또는" "" "를 입력하는 것은 어긋나고 바보입니다. 나, 그래서 나는 항상 큰 따옴표 기호를 보유하고 글로벌 상수를 정의하고 그와 연결하여).

    "... AND 텍스트 필드 ="& 대하 (34) & 나! myTextField로 & 대하 (34)

  3. 날짜 값이 # 구분 기호 사용!

    을 "... 컨트롤과 DateField = #"& 저,576,368을 MyDateField"#"

  4. 부울 필드는 따옴표를 필요로하지 않으며 그것은 작동 최고의 true와 false 사용 :

    "... AND IsDiff = True"로

가이 규칙은 WHERE에 모두 적용 절 기준과 UPDATE 쿼리의 SET 문에 적용됩니다. 이 규칙은 DoCmd.RunSQL 또는 CurrentDB.Execute에 전달하는 SQL 문자열을 작성하는 데 사용되며 폼이나 보고서의 레코드 소스 또는 콤보 상자 나 목록 상자의 rowsource로 사용할 SQL 문자열을 작성하는데도 적용됩니다.

관련 문제