テーブルの操作 |
#1 フィールド名を求める
<使用例>
'--------------------------------------------------------------------- '概要 テーブルのフィールド名を取得する ' ここでは、フィールド数が12ある[tbl得意先]テーブルの ' フィールド名をDAO・ADOで取得する '--------------------------------------------------------------------- Sub テーブルのフィールド名を求めるDAO() Const strTbl As String = "tbl得意先" Dim dbs As Database Dim rst As DAO.Recordset Dim fld As DAO.Field 'Fieldオブジェクトを宣言します Set dbs = CurrentDb Set rst = dbs.OpenRecordset(strTbl) For Each fld In rst.Fields Debug.Print fld.Name Next fld rst.Close: Set rst = Nothing dbs.Close: Set dbs = Nothing End Sub <実行結果> 得意先コード ・ (省略) ・ 電話番号 ファクシミリ Sub テーブルのフィールド名を求めるADO() Const strTbl As String = "tbl得意先" Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim fld As ADODB.Field 'Fieldオブジェクトを宣言します Set cnn = CurrentProject.Connection rst.Open strTbl, cnn, adOpenKeyset, adLockOptimistic For Each fld In rst.Fields Debug.Print fld.Name Next fld rst.Close cnn.Close: Set cnn = Nothing End Sub <実行結果> 得意先コード ・ (省略) ・ 電話番号 ファクシミリ
#2 フィールド数を求める
<使用例>
'--------------------------------------------------------------------- '概要 テーブルのフィールド数を取得する ' ここでは、フィールド数が12ある[tbl得意先]テーブルの ' フィールド数をDAO・ADOで取得する '--------------------------------------------------------------------- Sub テーブルのフィールド数を求めるDAO() Const strTbl As String = "tbl得意先" Dim dbs As Database Dim rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset(strTbl) Debug.Print "フィールド数:" & rst.Fields.Count rst.Close: Set rst = Nothing dbs.Close: Set dbs = Nothing End Sub <実行結果> フィールド数:12 Sub テーブルのフィールド数を求めるADO() Const strTbl As String = "tbl得意先" Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Set cnn = CurrentProject.Connection rst.Open strTbl, cnn, adOpenKeyset, adLockOptimistic Debug.Print "フィールド数:" & rst.Fields.Count rst.Close cnn.Close: Set cnn = Nothing End Sub <実行結果> フィールド数:12
#3 レコード数を取得する
<使用例>
'--------------------------------------------------------------------- '概要 テーブルのレコード数を取得する ' ここでは、レコード数が51ある[tbl得意先]テーブルの ' レコード数をDAO・ADOで取得する '--------------------------------------------------------------------- Sub テーブルのレコード数を求めるDAO() Const strTbl As String = "tbl得意先" Dim dbs As Database Dim rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset(strTbl) Debug.Print "レコード数:" & rst.RecordCount rst.Close: Set rst = Nothing dbs.Close: Set dbs = Nothing End Sub <実行結果> レコード数:51 Sub テーブルのレコード数を求めるADO() Const strTbl As String = "tbl得意先" Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Set cnn = CurrentProject.Connection rst.Open strTbl, cnn, adOpenKeyset, adLockOptimistic Debug.Print "レコード数:" & rst.RecordCount rst.Close cnn.Close: Set cnn = Nothing End Sub <実行結果> レコード数:51
#3 テーブル名を取得する
<使用例>
'--------------------------------------------------------------------- '概要 テーブル名一覧を取得する ' DAO・ADO・ADOXでテーブル名を取得する '--------------------------------------------------------------------- Sub テーブル名一覧を取得するDAO() Const strTbl As String = "tbl得意先" Dim dbs As Database Dim tdf As DAO.TableDef Set dbs = CurrentDb For Each tdf In dbs.TableDefs If tdf.Attributes Then Else 'システムオブジェクト以外 Debug.Print tdf.Name End If Next tdf Set tdf = Nothing dbs.Close: Set dbs = Nothing End Sub Sub テーブル名一覧を取得するADO() Const strTbl As String = "tbl得意先" Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Set cnn = CurrentProject.Connection Set rst = cnn.OpenSchema(adSchemaTables) With rst Do While Not .EOF If .Fields("TABLE_TYPE") = "TABLE" Then Debug.Print .Fields("TABLE_NAME") End If .MoveNext Loop End With rst.Close cnn.Close: Set cnn = Nothing End Sub Sub テーブル名一覧を取得するADOX() Dim cnn As New ADODB.Connection Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table Set cnn = CurrentProject.Connection cat.ActiveConnection = cnn For Each tbl In cat.Tables If tbl.Type = "TABLE" Then Debug.Print tbl.Name End If Next Set cat = Nothing Set cnn = Nothing End Sub