Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1316 / 2272 ツリー ←次へ | 前へ→

【7738】テーブルの削除 ヤマ 06/4/21(金) 14:22 質問[未読]
【7739】Re:テーブルの削除 たん 06/4/21(金) 16:00 回答[未読]
【7740】Re:テーブルの削除 たん 06/4/21(金) 16:32 回答[未読]
【7741】Re:テーブルの削除 ヤマ 06/4/21(金) 17:15 お礼[未読]
【7745】Re:テーブルの削除 小僧 06/4/22(土) 1:33 回答[未読]
【7753】Re:テーブルの削除 ヤマ 06/4/24(月) 12:00 お礼[未読]

【7738】テーブルの削除
質問  ヤマ  - 06/4/21(金) 14:22 -

引用なし
パスワード
   一時保存したテーブルをワイルドカードで削除する方法をご教授下さい。
DeleteOjectでは個別のテーブルしか削除できません。
使用ACCESSは2000です。よろしくお願いします。

【7739】Re:テーブルの削除
回答  たん  - 06/4/21(金) 16:00 -

引用なし
パスワード
   >一時保存したテーブルをワイルドカードで削除する方法をご教授下さい。
>DeleteOjectでは個別のテーブルしか削除できません。

テーブルはオブジェクトなので、ワイルドカードで処理出来ません。

【7740】Re:テーブルの削除
回答  たん  - 06/4/21(金) 16:32 -

引用なし
パスワード
   >テーブルはオブジェクトなので、ワイルドカードで処理出来ません。

無理やりやろうとするなら、MSys関係の隠しテーブルを参照し、
ワイルドカードで抽出条件を指定し、該当したテーブル名を個々に
呼び出して、DeleteObjectするというルーチンを組めば
可能と思われます。

【7741】Re:テーブルの削除
お礼  ヤマ  - 06/4/21(金) 17:15 -

引用なし
パスワード
   ▼たん さん:
>>テーブルはオブジェクトなので、ワイルドカードで処理出来ません。
>
>無理やりやろうとするなら、MSys関係の隠しテーブルを参照し、
>ワイルドカードで抽出条件を指定し、該当したテーブル名を個々に
>呼び出して、DeleteObjectするというルーチンを組めば
>可能と思われます。

早速のご回答、有難う御座います。
教えて頂いた方法は難易度が高そうなので、小生には出来そうにありません。
別の方法で一時保存を考えます。ありがとう御座いました。

【7745】Re:テーブルの削除
回答  小僧  - 06/4/22(土) 1:33 -

引用なし
パスワード
   ▼ヤマ さん、たん さん:
こんばんは。

>>無理やりやろうとするなら、MSys関係の隠しテーブルを参照し、
>>ワイルドカードで抽出条件を指定し、該当したテーブル名を個々に
>>呼び出して、DeleteObjectするというルーチンを組めば
>>可能と思われます。

「テーブル」で始まる Table を列挙する例です。

Sub ワイルドカードを使用したテーブル名の抽出1()
'要参照設定 Microsoft DAO x.x Object Library
Dim strSQL As String
Dim rs As DAO.Recordset
  strSQL = "SELECT Name From MSysObjects " _
      & "Where Name Like 'テーブル*' AND Type = 1"

  Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
    
    Do Until rs.EOF
      Debug.Print rs![Name]
      rs.MoveNext
    Loop
  rs.Close
  Set rs = Nothing
End Sub


Tabledef オブジェクトを使う方法もあります。


Sub ワイルドカードを使用したテーブル名の抽出2()
'要参照設定 Microsoft DAO x.x Object Library
Dim TName As String
Dim db As DAO.Database
Dim i As Long

  Set db = CurrentDb
  
  For i = db.TableDefs.Count - 1 To 0 Step -1
    If db.TableDefs(i).Name Like "テーブル*" Then
      Debug.Print db.TableDefs(i).Name
    End If
  Next

  Set db = Nothing
End Sub


あとはヤマさんの環境に応じてコード改変してみて下さい。

【7753】Re:テーブルの削除
お礼  ヤマ  - 06/4/24(月) 12:00 -

引用なし
パスワード
   小僧さん

 ありがとう御座いました。
 上手く出来ました。
 

1316 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078228
(SS)C-BOARD v3.8 is Free