2010-03-09 2 views
2

사용자가 목록의 일부가 아닌 콤보 상자에 값을 입력 할 때 호출되는 일반 notInList 함수를 만들려고합니다. 이 함수의 중간에서 새로운 값을 테이블에 삽입하려고합니다.테이블의 필드에 가변 개수의 변수 배치

일부 콤보 상자의 경우 테이블에 필드를 두 개 이상 채워야합니다. (사용자는 목록에없는 값에 대한 후속 질문을하고 후속 조치에 대한 답변도 표에 입력해야합니다. 테이블에 삽입해야하는 값은 코드의 변수에 저장됩니다.

지금까지 내가 처리해온 방법은 각 콤보 상자 ID, 필드 및 변수 이름 (필드에 삽입 할 값이 들어있는 변수의 이름)에 대해 하나의 레코드가있는 테이블을 사용하는 것입니다) 조합. 코드는이 콤보 상자와 관련된 모든 레코드를 반복하고 SQL 문 (Insert ... values ​​...)에서 사용할 변수 이름 목록과 필드 이름의 목록을 만듭니다.

그러나 변수에 저장된 값을 얻기 위해 (테이블에서 검색된) 변수의 이름을 사용하는 방법을 알아낼 수 없습니다. AddVar은 값을 가져 오려고하는 변수의 이름이 들어있는 레코드 세트의 열입니다. 나는 eval (rs! AddVar)을 시도했으나 작동하지 않는다.

테이블에서 변수의 이름을 가져올 수 있지만 멈추었습니다. 변수에 저장된 값 (문자열)을 어떻게 얻을 수 있습니까?

답변

1

Dlookup() 기능에 관심이있을 수 있습니다. 기본적으로 필드 이름, 테이블 이름 및 일부 선택적 조건을 전달하면 찾은 첫 번째 결과가 표시됩니다.

=DLookUp("[LastName]", "Employees", "[EmployeeID] = 7") 

이는 "종업원"테이블에 가서는, "[직원 ID] = 7"하고 나를 [성]로 돌아가 첫 번째 레코드를 찾을 수 :

는 예를 생각해 보자. 희망이 도움이됩니다.

http://support.microsoft.com/kb/208786

1

"AddVar은 값을 가져 오려고하는 변수의 이름이 들어있는 레코드 세트의 열입니다 .eval (rs! AddVar)을 시도했지만 작동하지 않습니다."

시도 :

rs.Fields(AddVar).Value 

편집 : 가 미안 해요, 난 밀접하게 충분히 읽어 보지 않았 --- 난 당신의 문제는 변수의 이름을 검색에 제한되었다 생각했다. 그러나 런타임에 이름이 제공되는 변수의 값을 검색하려고합니다. 그게 VBA로 어떻게 가능할 지 모르겠습니다. Access World Forums을 참조하십시오. "VBA는 변수 이름의 런타임 평가를 지원하지 않습니다".

키/값 쌍을 저장하기위한 사전 데이터 구조를 고려하십시오.

Public Sub MyDict() 
    Dim d As Object 
    Set d = CreateObject("Scripting.Dictionary") 
    d.Add "var1", 1 
    d.Add "var2", 2 
    Debug.Print "Value of 'var1' is " & d("var1") 
    Set d = Nothing 
End Sub 
+0

감사합니다. 그러나 제안은 표에 저장된 변수의 이름 만 검색합니다. 변수의 이름을 검색하려고하지만 그 변수에 저장된 값을 가져 오려고합니다. – dmr

+0

나는 여기서 죽은 목마를 치고 싶지는 않지만, eval (rs.Fields (AddVar) .Value)은 어떨까요? – PowerUser

관련 문제