投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/8/29 13:32:42
>>TABLE_TYPE 条件が必要な場合は、Linq もしくは DataView で絞りこみましょう。
> TABLE TYPEはしていできないのですね。
OleDbConnection であれば、TABLE_TYPE 条件で検索できます。

"Table" スキーマを指定する場合、
OdbcConnection では 3 条件 (database / owner / table name)
OleDbConnection では 4 条件 (catalog / schema / table name / table type)

とはいえ前回の回答の通り、取得後に絞り込んだ方が融通が効くかと思います。

Dim builder As New OleDbConnectionStringBuilder()
builder.Provider = "Microsoft.ACE.OLEDB.12.0"
builder.DataSource = "C:\…\Database1.accdb"
'builder("User ID") = … 
'builder("Password") = … 
'builder("Jet OLEDB:Database Password") = … 
Using cn As New OleDbConnection(builder.ConnectionString)
    Dim restrictions(3) As String
    restrictions(3) = "TABLE"
    cn.Open()
    DataGridView1.DataSource = cn.GetSchema("Tables", restrictions)
    cn.Close()
End Using



Connection オブジェクトによって、取得後の列名が異なる点にも注意してください。

https://learn.microsoft.com/ja-jp/dotnet/framework/data/adonet/odbc-schema-collections
https://learn.microsoft.com/ja-jp/dotnet/framework/data/adonet/ole-db-schema-collections
https://learn.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql-server-schema-collections
https://learn.microsoft.com/ja-jp/dotnet/framework/data/adonet/oracle-schema-collections