アクセス2003で、1つのmdbの中に、同じデザインのテーブルがたくさんあります。
これらのテーブルには共通して「A、B、C、D」という項目があり、Dが数値型です。
既にテーブルにはデータが入力されています。(正確には、エクセルファイルから「TransferSpreadsheet」を使って同じ形式の複数シートを一気にインポートした状態です)
全てのテーブルに対して、一括してこのDという項目を主キーに設定したいのですが、どのようにすれば良いでしょうか?
テーブル数は、200個程度あります。
VBAを利用したり、外部ツールを利用しても良いです。
ご教示、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
全部のテーブルやっちゃっていいならこんな感じかなぁ
※全てのテーブルの"D"というフィールドに主キーをセット
Function CreateIdx()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim idx As Index
Set db = CurrentDb
For I = 0 To DB.Tabledefs.Count - 1
Set tdf = db.TableDefs(DB.Tabledefs(I).Name)
Set idx = tdf.CreateIndex("D")
idx.Fields.Append idx.CreateField("D", dbLong)
idx.Primary = True
tdf.Indexes.Append idx
db.Close
Next I
End Function
No.1
- 回答日時:
テーブルに主キーを設定するにはSQLのALTER TABLEステートメントを使います
200ものテーブルに自動処理するにはVBAでSQL文を動的に作成して
走らせることになりますね
ループ処理しなければ大変ですからテーブルの名前付けなんかも
ループ処理できるような名前にしておく必要があります
現状のテーブル名はどうなっているのでしょう
この回答への補足
返答が遅くなりまして申し訳ありません。
テーブルの名称はランダムな名称になっています。
インポートを行う処理は、Web上からサンプルを取得しました。
Private Sub コマンド0_Click()
strFILENAME = ""
strFILENAME = OpenFileDialog("入力元ファイルの指定", "c:\", "", _
"Microsoft Excel ワークシート (*.xls)|*.xls|すべてのファイル (*.*)|*.*", ".xls")
If strFILENAME = "" Then Exit Sub
If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub
myFILE = strFILENAME
Set myXLS = New Excel.Application
myXLS.Visible = True
Set myBK = myXLS.Workbooks.Open(Filename:=myFILE, ReadOnly:=True)
For Each mySH In myBK.Sheets
myLAST1 = mySH.Range("A" & mySH.Rows.Count).End(xlUp).Row
myLAST2 = mySH.Cells(1, mySH.Columns.Count).End(xlToLeft).Column
myLAST = mySH.Cells(myLAST1, myLAST2).Address(0, 0)
DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
TableName:=mySH.Name, _
Filename:=myBK.FullName, _
HasFieldNames:=True, _
Range:=mySH.Name & "!A1:" & myLAST
Next
myBK.Close: myXLS.Quit: Set myBK = Nothing: Set myXLS = Nothing
MsgBox "完了"
End Sub
情報不足で申し訳ありません。よろしくお願いいたします。
補足要求の回答が遅れてしまい、申し訳ありませんでした。
ANo2の方の回答から、結果を出すことができましたので締め切らせて頂きました。
回答、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) Notion@リレーション値の取得について 1 2023/06/28 10:27
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
Acccessで2つのテーブルから1...
-
AccessでのリンクテーブルとADO...
-
Accessでリストの並び順を変更...
-
ACCESSでテーブルをコピーしよ...
-
MDBファイルを比較するツール(...
-
AccessのフィールドにIPアドレ...
-
ACCESSでリンクテーブルのデー...
-
アクセス 部分一致の抽出
-
ACCESS2000/リンク先DBのテーブ...
-
Microsoft Access 「Form」のボ...
-
ACCESSユニオンクエリから新テ...
-
リンクテーブル(Oracle)をAcc...
-
COBOLでHEXを印字する
-
ACCESS初心者 - 同一テーブルの...
-
Accesss テーブルの最終更新日...
-
accessのテーブルを閉じたとき...
-
ACCESSで出欠リストを管理する
-
ACCESS テーブルを見比...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
テーブルに表示されているもの...
-
Acccessで2つのテーブルから1...
-
Accessでリストの並び順を変更...
-
Accessのリンクされたテーブル...
-
ACCESSユニオンクエリから新テ...
-
access vbaにてテンポラリーテ...
-
ACCESS テーブルを見比...
-
Accessのテーブルで、リンク?...
-
ACCESSでテーブルをコピーしよ...
-
アクセス 部分一致の抽出
-
accessについて(超初心者です)
-
Microsoft Access 「Form」のボ...
-
クエリで同一テーブルの複数回...
-
access2000・・テーブルをデー...
-
アクセス2016 チェックボックス...
-
Accessで使用しているリンクテ...
-
アクセス2000でのリンク先...
-
accessのテーブルを閉じたとき...
おすすめ情報