FAQ
ダイアログで選択したジオデータベースの種類を判別する方法

ナレッジ番号:5341 | 登録日:2023/07/26 | 更新日:2024/11/21

サンプル コード

GxDialog を表示してワークスペースの型を表示

以下はジオデータベース用のフィルタオブジェクトを利用して GxDialog を表示し、 選択したジオデータベースの種別(mdb, gdb, SDE)を判別するサンプルコードです。

IGxDialog pGxDialog = new GxDialogClass();
IGxObjectFilter pGxFilter = new GxFilterWorkspacesClass(); 
 //ジオデータベースのフィルターを用意する。
  
pGxDialog.AllowMultiSelect = false;
pGxDialog.Title = "ジオデータベース選択";
pGxDialog.ObjectFilter = pGxFilter;
//ダイアログにフィルターを設定する。
IEnumGxObject penum;
IGxObject gxobj;
IGxDatabase2 gxdb;
 
if  (pGxDialog.DoModalOpen(0, out penum) == true) {
    gxobj = penum.Next();
    gxdb = gxobj as IGxDatabase2;
    if (gxdb != null)
        {
        IWorkspace pws = gxdb.Workspace;
        if (pws.Type == esriWorkspaceType.esriLocalDatabaseWorkspace)
        {
            System.Diagnostics.Debug.Print("esriLocalDatabaseWorkspace");
            if (gxobj.Name.EndsWith("mdb")) {
                System.Diagnostics.Debug.Print("mdb");
      '拡張子が mdb ならパーソナル ジオデータベース
            } else if (gxobj.Name.EndsWith("gdb")) {
              '拡張子が gdb ならファイル ジオデータベース
                System.Diagnostics.Debug.Print("gdb");
            }
        }
        else if (pws.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
        {
            System.Diagnostics.Debug.Print("esriRemoteDatabaseWorkspace");
        }
    }
    System.Diagnostics.Debug.Print("");
}
Dim pGxDialog As IGxDialog = New GxDialogClass()
Dim pGxFilter As IGxObjectFilter = New GxFilterWorkspacesClass()
'ジオデータベースのフィルターになる。
pGxDialog.AllowMultiSelect = False
pGxDialog.Title = "ジオデータベース選択"
pGxDialog.ObjectFilter = pGxFilter
Dim penum As IEnumGxObject
Dim gxobj As IGxObject
Dim gxdb As IGxDatabase2

If (pGxDialog.DoModalOpen(0, penum) = True) Then
       gxobj = penum.Next()
       gxdb = CType(gxobj, IGxDatabase2)
       If (Not (gxdb Is Nothing)) Then
           Dim pws As IWorkspace = gxdb.Workspace
           If (pws.Type = esriWorkspaceType.esriLocalDatabaseWorkspace) Then
                    System.Diagnostics.Debug.Print("esriLocalDatabaseWorkspace")
                    If (gxobj.Name.EndsWith("mdb")) Then
                        System.Diagnostics.Debug.Print("mdb")
                    ElseIf (gxobj.Name.EndsWith("gdb")) Then
                        System.Diagnostics.Debug.Print("gdb")
                    End If
           else if (pws.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace) then
                    System.Diagnostics.Debug.Print("esriRemoteDatabaseWorkspace")
           End If
       End If
       System.Diagnostics.Debug.Print("")
End If

メタデータ

機能

種類

製品