3

次の手順を使用して現在の DB プロパティの一部を変更するアプリがあります。

Public Sub SetStartupOptions(propname As String, propdb As Variant, prop As Variant)
On Error GoTo Err_SetStartupOptions

  'Set passed startup property.

  'some of the startup properties you can use...
  ' "StartupShowDBWindow", DB_BOOLEAN, False
  ' "StartupShowStatusBar", DB_BOOLEAN, False
  ' "AllowBuiltinToolbars", DB_BOOLEAN, False
  ' "AllowFullMenus", DB_BOOLEAN, False
  ' "AllowBreakIntoCode", DB_BOOLEAN, False
  ' "AllowSpecialKeys", DB_BOOLEAN, False
  ' "AllowBypassKey", DB_BOOLEAN, False

  Dim dbs As Object

  Dim prp As Object

  Set dbs = CurrentDb


    If propname = "DBOpen" Then
        dbs.Properties("AllowBreakIntoCode") = prop
        dbs.Properties("AllowSpecialKeys") = prop
        dbs.Properties("AllowBypassKey") = prop
        dbs.Properties("AllowFullMenus") = prop
        dbs.Properties("StartUpShowDBWindow") = prop
    Else
        dbs.Properties(propname) = prop
   End If

  Set dbs = Nothing

  Set prp = Nothing

Exit_SetStartupOptions:
    Exit Sub

Err_SetStartupOptions:
    Select Case Err.Number
        Case 3270

           Set prp = dbs.CreateProperty(propname, propdb, prop)

           Resume Next

          Case Else
              Dim ErrAns As Integer, ErrMsg As String
              If ErrChoice = vbYesNoCancel Then
                  ErrMsg = Err.Description & ": " & Str(Err.Number) & vbNewLine & "Press 'Yes' to resume next;" & vbCrLf & _
                   "'No' to Exit Procedure." & vbCrLf & "or 'Cancel' to break into code"
             Else
                  ErrMsg = Err.Description & ": " & Str(Err.Number) & vbNewLine & "Press 'Yes' to resume next;" & vbCrLf & _
                    "'No' to Exit Procedure."
             End If
            ErrAns = MsgBox(ErrMsg, _
            vbCritical + vbQuestion + ErrChoice, "SetStartupOptions")
            If ErrAns = vbYes Then
                Resume Next
            ElseIf ErrAns = vbCancel Then
                On Error GoTo 0
                Resume
            Else
                Resume Exit_SetStartupOptions
            End If
    End Select

End Sub

この手順を使用して、DB.properties の値を追加および設定できます。これらは、[アクセス オプション] 画面で設定されるプロパティです。プロパティ名のリストは限られていますが、認識されているプロパティの完全なリストを見つけることができる場所を知っている人はいますか? (つまり、起動フォーム名、起動リボン名など)

4

1 に答える 1

3

ここに示すように、非常に簡単な手順を使用して、コードを実行した時点で存在するデータベースのすべてのプロパティを一覧表示できます。

Public Sub ListDBProps()
    Dim db As Database
    Dim prp As Property

    Set db = CurrentDb

    For Each prp In db.Properties
        Debug.Print prp.Name
    Next prp

End Sub

これにはいくつかの落とし穴があります。「コードを実行した時点で存在する」と言ったことに注意してください。つまり、Access は "必要に応じて" データベース (およびおそらく他のオブジェクト) のプロパティを作成します。たとえば、以前は MDE と呼ばれていたデータベースを ACCDE にコンパイルすると、Access は "T" の値を持つ "MDE" という名前の "Text" [10] タイプの新しいプロパティを追加します。あなたが提供したリストには、「AllowBypassKey」や「AllowBreakIntoCode」など、このカテゴリにも分類されるプロパティがいくつかあります。

    開い     た
    単純     な     データベース     で     この     コード     を     実行     し     たとき     に     得     た     リスト     は     次     の     とおり     です     。     _     _























    AllowBuiltInToolbars
    AllowToolbarChanges
    AllowSpecialKeys
    UseAppIconForFrmRpt
    AllowDatasheetSchema
    値
    を制限する インデックス付きで値を
    表示する インデックスなしで値を
    表示する リモート
    自動コンパクトで値を表示する
    DesignWithData
    画像プロパティ ストレージ形式
    ナビペイン 閉じ
    たナビペインの幅 ナビペインの幅
    ナビペインで表示トラック名
    で並べ替え
    トラック名で並べ替え オートコレクト情報
    実行名のオートコレクト
    HasOfflineLists

Type プロパティを出力に簡単に追加できます。これは、DataTypeEnum 列挙に対応する整数値です。Property の Value プロパティは、もう少し注意が必要です。通常、これは文字列値に簡単に変換できる値ですが、それらを出力したり、文字列変数に格納しようとしたときに実行時エラーを引き起こすものがあります。小さな関数での小さなエラー処理は、問題なく処理できます。

私の例は、Microsoft Access 2007 の ACCDB で実行されました。

楽しみ 。. . ダグ

于 2012-09-12T18:25:59.857 に答える