2013-06-27 2 views
3

내가 텍스트 상자에 쿼리의 결과를 연결할하지만 난이 오류 : 여기 내 코드입니다 :런타임 오류 3021- 현재 레코드 없음은

Dim rst As DAO.Recordset 
Set rst = CurrentDb.OpenRecordset("SELECT XValue, YValue,Wert FROM tb_DCM_Daten WHERE (FzgID=" & Forms!frm_fahrzeug!ID & " AND Name='" & List2.Value & "')") 
Text10.Text = rst!XValue //error in this line 

그것은 반환해야 캘리포니아 (20) 기록

이 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까? 오류에 대한

+3

것은 그래서 당신의 SQL 문은 문자열 변수에 코드를 재 배열 , 즉시 창에 인쇄하십시오. 그렇게하면 문제가 있는지 알 수 있습니다. 아무것도 분명하지 않은 경우 출력 SQL을 쿼리에 넣고 조건에 맞는 레코드가 있는지 확인하십시오. – GregHNZ

답변

6

한 가지 가능한 이유는 Name이 Access에서 예약어는 것을, 그래서 당신은 또한 rst!XValue을 사용하기 전에 rst.EOF을 테스트 할 수

... & " AND [Name]='" & ... 

를 사용해야합니다. 즉, 쿼리가 즉시 .OpenRecordset 호출 후에 코드를

If rst.EOF Then 
    MsgBox "The Recordset is empty." 
End If 

을 추가 할 수 있습니다 적어도 하나 개의 행을 반환 여부를 확인합니다. Recordset 이 비어있는 경우이 비어 있으면 위의 주석에서 @GregHNZ에 설명 된대로 SQL 문을 확인해야합니다.

+0

답변 해 주셔서 감사합니다. 나는 그것을했지만 도움이되지 않는다./ – Kaja

+1

@Kaja 나는 나의 대답을 업데이트했다. –

1

일반적으로이를 수행합니다. Access에서 새 쿼리를 만들고 SQL 뷰로 전환하고 코드를 붙여넣고 디자인 >> 실행으로 이동하십시오.

SELECT XValue, YValue,Wert FROM [tb_DCM_Daten] WHERE [FzgID]=12 AND [Name]='ABC'; 

쿼리 구문이 올바른 경우 결과를 확인해야합니다. 그렇지 않으면 오류가 발생합니다. mssg가 잘못된 위치를 알려줍니다. 나는 당신보다 훨씬 복잡한 쿼리를 디버깅하는 데 사용했다. 여전히 오류가 있다면, 아마도 당신이

Dim sql as String 
sql = "SELECT...." 
Set rst = CurrentDb.OpenRecordset(sql) 

는 또 다른 가능한 이유는 테이블 이름 수 있습니다 시도해야합니다. 너의 테이블 이름이 정확히 무엇인지 궁금해? 테이블에 공백이 있으면 [DCM Daten]과 같이 지정해야합니다.

1

내가 그이 발생할 수 있습니다 추가 할 한 가지 더, 당신의 예를 들어 "예약 단어"필드를,이 결과 집합의 집합을 반환 :

귀하의 "고객"테이블은 다음과 같은 필드 이름이 있습니다 :

Custnum | Date | Custname 

우리는 사용 기록을 얻을 때 날짜 필드가 대부분의 데이터베이스

그래서위한 예약어 것을 알고

,
SELECT * FROM Customers 

이 너무 대신에 테이블의 모든 필드를 선택 가능한 반환 "현재 레코드 없음"은 바로이처럼 필드 선택을 최소화 :

SELECT custnum, custname FROM Customers