2012-05-15 4 views
4

나는 SELECT 쿼리를 통해 테이블의 설명에 액세스하는 방법 (테이블> 테이블 속성을 마우스 오른쪽 단추로 클릭 할 때 나타나는 것과 동일한 방법)을 사방으로 찾고있었습니다.MS 액세스 쿼리를 통해 "테이블 설명"검색

MSysObjects를 사용하여 시도했지만이를 사용하는 테이블 이름 만 검색 할 수 있습니다.

쿼리를 통해이 작업을 수행 할 수 있습니까? 아니면 VBA가 필요합니까?

답변

4

Remou가 말한 것처럼 사용자는 쿼리에서 가져올 수는 없지만 쿼리에서 반환 할 수는 있습니다. 여기

Public Function GetTableDescr(stTableName As String) As String 
On Error Resume Next 
GetTableDescr = CurrentDb.TableDefs(stTableName).Properties("Description").Value 
End Function 

자신의 날짜와 (위의 함수를 사용하여) 설명과 함께, 모든 비 시스템 테이블을 반환하는 쿼리 : 여기에 또 다른 기능의 마지막

SELECT MSysObjects.Name, msysobjects.datecreate, msysobjects.dateupdate, GetTableDescr([Name]) AS Description 
FROM MSysObjects 
WHERE (((MSysObjects.Name) Not Like "~*") AND((MSysObjects.Name) Not Like "MSys*") and ((MSysObjects.Type)=1)); 

, 당신은 거의 동일한 작업을 수행 할 수 있습니다 함수를 호출합니다. 객체가 설명이 될 때까지 있기 때문에,

Public Function GetQueryDescr(stQryName As String) As String 
On Error Resume Next 
If CurrentDb.QueryDefs(stQryName).Properties("Description").Inherited = False Then 
    GetQueryDescr = CurrentDb.QueryDefs(stQryName).Properties("Description").Value 
End If 
End Function 

Error Resume Next에 필요한 : 내가 찾은 비결은 만 쿼리는 쿼리 객체의 설명을 얻을 설명이있다, 그렇지 않은 경우, 상속 설명을 반환한다는 것입니다 속성은 null입니다. GetQueryDescr를 사용

+0

와우, 정말 고마워, 나는 이것을 시험해보고 어떻게되었는지에 관해보고 할 것이다. 다시 감사한다! – BadgerBeaz

+0

@fonzy UDF (사용자 정의 함수)는 MS Access 외부에서 사용할 수 없습니다. – Fionnuala

+0

@Remou 감사합니다. – BadgerBeaz

2

테이블 스키마 또는 TableDef 속성에서 설명을 가져올 수 있지만 표준 쿼리가 작동하지 않는다고 생각합니다.

Set rs = CurrentProject.Connection.OpenSchema(adSchemaTables, _ 
    Array(Empty, Empty, "Rules", Empty)) 
Debug.Print rs!Description 
0

() 이상에서는 숨겨진 SYS 테이블에 대해이 쿼리를 실행할 수 있습니다으로 MSysObjects FROM

SELECT MSysObjects.Name, 속성 AS GetQueryDescr ([이름]), MSysObjects.DateCreate, MSysObjects.DateUpdate (((MSysObjects.Name) Not Like "~ sq_ *") AND ((MSysObjects.Type) = 5));

유형 5는 항상 VBA에서 오류 포수를 다시 쿼리

0

입니다 :

 
Public Function DoSomething() 
    On Error Resume Next 
    **potential error-throwing code** 
    On Error Goto 0 
End Function 

그렇지 않으면 오류 코드에서 다른 곳 스킵 될 수 있습니다.

관련 문제