2010-07-29 3 views
0

내 데이터베이스에는 기밀 정보가있는 특정 테이블이 있습니다. 이 테이블 각각에는 "ThisTableIsConfidential"이라는 빈 필드가 들어 있습니다. 직접 실행 창에이 필드가있는 테이블 목록을 올바르게 표시하는 함수가 있습니다. 이제는 양식에 목록을 표시하고이를 수행하는 방법을 알 수 없습니다. 내가 함수를 쿼리에 넣고 목록 상자에 표시했지만 쿼리가 작동하지 않는다고 생각했습니다. 어떤 아이디어? VBA 질문 : debug.print 올바른 데이터를 표시합니다 - 직접 실행 창 밖으로 가져 오는 방법?

(나는 몇 가지 다른 온라인 소스에서 함께 자갈길) 기능입니다 :

Function GetConfidentialTable() 
Dim db As Database, tbl As TableDef, fld As Field, currentTable As String 
    Set db = CurrentDb 

    For Each tbl In db.TableDefs 
     If (tbl.Attributes = 0) Then 

     currentTable = tbl.Name 

     If FieldExists(currentTable, "ThisTableIsConfidential") = True Then 
      Debug.Print currentTable 
     End If 
    End If 

    Next tbl 
End Function 

답변

1

당신은 목록을 반환하는 값 목록에 목록 상자의 행 원본 유형을 설정 한 다음 기능을 사용할 수 있습니다 :

Function GetConfidentialTable() 
Dim db As Database, tbl As TableDef, fld As Field, currentTable As String 
    Set db = CurrentDb 

    For Each tbl In db.TableDefs 
     If (tbl.Attributes = 0) Then 

     currentTable = tbl.Name 

     If FieldExists(currentTable, "ThisTableIsConfidential") = True Then 
      sList = sList & ";" & currentTable 
     End If 
    End If 

    Next tbl 

    GetConfidentialTable = Mid(sList,2) 
End Function 
+0

감사합니다. 나는 약간 대답을 다음과 같이 수정해야했다. 1. sList를 sList = sList & currentTable & vbCrLf로 변경하여 줄 바꿈을 추가하여 긴 문자열이 아닌 목록으로 표시되도록했다. 2. 한 번 그 요소를 요소가 목록 상자 (첫 번째 줄만 표시)보다는 전체를 표시하는 텍스트 상자가 필요합니다. 3. 이것은 GetConfidentialTable = Mid (sList, 2)를 GetConfidentialTable = sList로 변경할 수 있음을 의미합니다. 감사합니다! – Tara

+0

@ Tara 그게 당신에게 어울리는 것이지만, 장기간 좋은 생각이라고 생각지 않습니다. 코드를 변경하거나 텍스트 상자를 사용할 필요는 없습니다. 내 의견을 놓쳤을 것 같아요 값 목록 (목록 상자에 대한 속성 시트) 행 소스 형식을 설정해야합니다 – Fionnuala

+0

그 짓을하고 작동하지 않았다. – Tara

관련 문제