2017-11-22 5 views
1

배경한 프로젝트에서 VBA 전역 변수를 설정하고 다른 프로젝트에서 사용하는 방법?

버전 제어 데이터베이스는 VCS (프로젝트 이름 = VCS)이 버전 제어 다양한 작업에 사용했다.

다양한 다른 응용 프로그램 데이터베이스에는 VCS가 참조로 설정되어 있습니다.

문제는 어떻게에서이 APP_TABLES_TO_BACKUP 상수를 참조 할 수있다

Global Const APP_TABLES_TO_BACKUP = "tbl1, tbl2, tbl5"

문제 :이 응용 프로그램에서

전역 변수는 백업 그 안에있는 테이블을 식별하는 설정 데이터베이스 VCS 프로젝트?

각 앱마다이 값에 대한 자체 설정이 있으므로 앱의 모듈에 값을 설정하고 해당 값을 VCS 데이터베이스 프로젝트에서 호출하는 것이 좋습니다.

그 방법에 대한 아이디어가 있으십니까?

지금까지 ...

은 내가 검색 한 칩 피어슨의 Understanding Scope를 발견,하지만 꽤 설정하고 전역 변수를 참조하는 방법을 입수했습니다.

응용 프로그램의 직접 실행 창에서 ?APP_TABLES_TO_BACKUP을 입력하고 테이블을 검색 할 수 있지만 VCL 데이터베이스에서 동일한 변수를 참조하는 방법을 볼 수 없어서 서브 루틴에서 사용할 수 있습니다.

아이디어가 있으십니까?

+1

'Global' 키워드는 20 년 전에 사용되지 않았습니다. '공중'은 똑같은 일을합니다. 프로젝트 A와 B가 있고 프로젝트 B에서 코드를 사용하려면 프로젝트 A가 필요하다면 프로젝트 A에 프로젝트 B에 * 참조 *가 있어야합니다. 그러나 실제로는 일부 파일에서 구성 설정 읽기/쓰기를 고려하십시오. –

+4

이것이 Access 인 경우, 각 개별 데이터베이스에 ** APP ** 테이블 **라는 APP ** 테이블 ** 정보를 지정하는 것이 더 이치에 맞지 않을까요? – YowE3K

+1

@ YowE3K 어쨌든 나는 항상 Access 태그를 잃어버린다. –

답변

0

여러 프로젝트가 있다면 ... 수

조금 더 검색 한 후에 나는 잘 작동하는 Paul Murray's custom database properties을 발견했습니다.

몇 가지 조작으로 일반 속성 추가, 제거 방법을 포함한 모듈을 만들었습니다.

' --------------------------------- 
' FUNCTION:  AddDbProperty 
' Description: add custom properties to a database application 
' --------------------------------- 
Public Function AddDbProperty(DbProperty As String, _ 
        DbPropertyValue As String, _ 
        Optional DbPropertyType As Long = DB_TEXT, _ 
        Optional DbFilename As String = "Current") 
On Error GoTo Err_Handler 

    Dim db As DAO.Database 
    Dim prop As Property 

    If DbFilename = "Current" Then 
     Set db = DBEngine(0)(0) 
    Else 
     Set db = OpenDatabase(DbFilename) 
    End If 

    'add the property 
    Set prop = db.CreateProperty(DbProperty, DbPropertyType, DbPropertyValue) 
    db.Properties.Append prop 

Exit_Handler: 
    db.Close 
    Set db = Nothing 
    Exit Function 

Err_Handler: 
    Select Case Err.Number 
     Case Else 
     MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _ 
      "Error encountered (#" & Err.Number & " - AddDbProperty[mod_Dev_Properties])" 
    End Select 
    Resume Exit_Handler 
End Function 

' --------------------------------- 
' FUNCTION:  RemoveDbProperty 
' Description: remove custom properties from a database applciation 
' --------------------------------- 
Public Function RemoveDbProperty(DbProperty As String, _ 
        Optional DbFilename As String = "Current") 
On Error GoTo Err_Handler 

    Dim db As DAO.Database 

    If DbFilename = "Current" Then 
     Set db = DBEngine(0)(0) 
    Else 
     Set db = OpenDatabase(DbFilename) 
    End If 

    'remove the property 
    db.Properties.Delete DbProperty 

Exit_Handler: 
    db.Close 
    Set db = Nothing 
    Exit Function 

Err_Handler: 
    Select Case Err.Number 
     Case Else 
     MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _ 
      "Error encountered (#" & Err.Number & " - RemoveDbProperty[mod_Dev_Properties])" 
    End Select 
    Resume Exit_Handler 
End Function 

' --------------------------------- 
' FUNCTION:  UpdateDbProperty 
' Description: add custom properties to a database application 
' --------------------------------- 
Public Function UpdateDbProperty(DbProperty As String, _ 
        DbPropertyValue As String, _ 
        Optional DbFilename As String = "Current") 
On Error GoTo Err_Handler 

    Dim db As DAO.Database 

    If DbFilename = "Current" Then 
     Set db = DBEngine(0)(0) 
    Else 
     Set db = OpenDatabase(DbFilename) 
    End If 

    'add the property 
    db.Properties(DbProperty) = DbPropertyValue 

Exit_Handler: 
    db.Close 
    Set db = Nothing 
    Exit Function 

Err_Handler: 
    Select Case Err.Number 
     Case Else 
     MsgBox "Error #" & Err.Number & ": " & Err.description, vbCritical, _ 
      "Error encountered (#" & Err.Number & " - UpdateDbProperty[mod_Dev_Properties])" 
    End Select 
    Resume Exit_Handler 
End Function 

IDE 바로 가기 창 속성을 사용하면 추가/업데이트/제거 할 수 있습니다.예를 들어

:

속성을 가져 ?AddDbProperty("My Property Name","My Property value")

은 쉽게도 가능한 입력에 대한 모든 VBA

CurrentDb.Properties("My Property Name")

를 통해

감사를 완료!

1

VCS 데이터베이스에서 외부 데이터베이스에 대한 참조를 추가 할 수 있습니다.

어떻게? this answer을 참조하십시오.

두 데이터베이스 간의 모듈과 함수 이름이 충돌하지 않는지 확인하십시오. 그럼 그냥 MyModule.APP_TABLES_TO_BACKUP를 사용하여 const를 참조하거나 동일한 모듈 및 일정 이름, 내 이전 게시물을 분명히 몇 일 전을 통해 오지 않았기 때문에 MyProject.MyModule.APP_TABLES_TO_BACKUP