アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESS2007にて、フロンドエンドデータベースとバックエンドデータベースに分割したプログラムを作成しています。今回、フロントデータベースのリンク先を一括変更する機能をつけたしたいと思い(バックエンドデータベースの場所を変更したときのための対処として)、プログラム作成しました。ネットを参考に、下記のようなプログラムを組んだのですが、これでは、普通のテーブルへのリンクはいいのですが、テキストリンクテーブルにまで変更をかけてしまい、そこでエラーが起こります。そこで、リンク変更する際に、テキストリンクテーブルなどは除外し、通常のリンクテーブルのみに変更プログラムを適用できるようにする記述方法はないでしょうか?テーブルtbの種類を表示できるようにすれば、if文で条件分けできると思うのですが、その表示方法がわかりません。もしくは、他のやり方をご存じの方ありましたら、ご教授よろしくお願いします。

Private Sub コマンド15_Click()
On Error GoTo Err_MSG
Dim strfile As String
Dim intResult As Integer
Dim tb As DAO.TableDef
Const ENABLE_WIZHOOK = 51488399
Const DISABLE_WIZHOOK = 0

WizHook.Key = ENABLE_WIZHOOK
intResult = WizHook.GetFileName(0, "", "データベースを指定してください。", "" _
, strfile, "", "accdbファイル(*.accdb)|*.accdb", 0, 0, 0, True)
WizHook.Key = DISABLE_WIZHOOK
If strfile = "" Then Exit Sub

For Each tb In CurrentDb.TableDefs
'リンクテーブルのみ更新する。
If tb.Connect <> "" And tb.Connect <> ";DATABASE=" & strfile Then
tb.Connect = ";DATABASE=" & strfile
tb.RefreshLink
End If
Next tb

MsgBox ("リンク更新が正常に終了しました。")

Exit Sub

Err_MSG:
MsgBox Err.Description, 16

End Sub

A 回答 (1件)

取りあえず、



前略~
For Each tb In CurrentDb.TableDefs
'リンクテーブルのみ更新する。
If tb.Connect <> "" And tb.Connect <> ";DATABASE=" & strfile Then
tb.Connect = ";DATABASE=" & strfile
tb.RefreshLink
End If
Next tb
~後略


For Each tb In CurrentDb.TableDefs
'リンクテーブルのみ更新する。
If len(tb.Connect) = 0 then
debug.print tb.connect
End If
Next tb

でイミディエイトウィンドウにリンクテーブルの接続文字列が出力されますから
其々を見比べれば、Instr 関数などで条件分岐を行えば・・・と考え付くはずです。
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございました。
うまくいきました。
助かりました。

お礼日時:2013/02/15 08:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!