バック エンド テーブルが Access 2000 でコモン ダイアログ コントロールを再リンクする方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:209862
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
この資料の Microsoft Access 97 バージョンは、参照してください。 181076.
詳細: エキスパート コーディング、相互運用性、およびマルチ ユーザーを必要します。スキル。

この資料は Microsoft Access データベース (.mdb) にのみ適用します。

概要
この資料で使用する方法を示しています、 コモン ダイアログ データベース内のリンク テーブルを更新するコントロール。は、 コモン ダイアログ コントロール Microsoft Office 2000年のデベロッパー版を使用できるかツールです。リンクされているテーブル内の 1 つまたは複数のバック エンド データベース内にあります。

使用してテーブルを再リンクする方法の例については、Windows アプリケーション プログラミング インターフェイス (API) 関数を参照してをください。ソリューションの開発サンプル ・ プログラム (Solutions9.mdb。)取得するのにはSolutions9.mdb、記事を表示するのには、次の文書番号をクリックして、技術情報:
248674 Acc 2000: 注文し、マイクロソフト開発者向けネットワーク (MSDN) で利用可能なソリューションの開発サンプル ・ データベース
Solutions9.mdb データベースを開くを選択 複数のデータベースを使用します。 で、 カテゴリを選択します。例 ボックスとクリック 起動時にテーブルなリンクで、 例を選択します。 ボックス。
詳細
Microsoft プログラミング例としては、明示または黙示の保証もないだけを提供します。これを含むが、商品性や特定目的への適合性の黙示的な保証に制限はありません。この資料は、例示されているプログラミング言語やを作成したりプロシージャをデバッグするために使用されるツールに精通するいると仮定します。マイクロソフト サポート エンジニアに、特定のプロシージャの機能について説明する役立ちますが追加機能を提供またはお客様固有の要件を満たすようにプロシージャを作成するこれらの例は変更されません。 データベース設計の分割を使用するプログラムが、共有ネットワーク上の場所 (バック エンド データベース) の 1 つのデータベース内のテーブルすべてのクエリ、フォーム、レポート、マクロ、およびモジュールで別のデータベースクライアント上の各コンピューター (フロント エンド データベース)。フロント エンド データベース リンクすべてのバック エンド データベース テーブル。バック エンド データベースを移動する場合は、プログラムでエラーを発生します。それを検出すると、プログラムを有効にすることができます、バックエンド データベース ファイルが予期した場所から不足していると、プロンプトのです。ユーザーを新しい場所に。

次の例では、その方法について説明します。テーブルのデータをプログラムを再リンクします。このメソッドは、ユーザーがフォームを使用してください。開いた点を再リンクするのには、バック エンド テーブル、および他のオプションがをフォームします。データベースを開いたときに自動的にバック エンド リンクを確認します。

この資料で、マイクロソフトがあることを想定しています。 コモン ダイアログ Microsoft Office 2000 Developer で利用可能なコントロールは、版のツールです。このコントロールがあるない場合は、スキップ、 Browse() 関数の例です。

メモ: 使用する場合は、 コモン ダイアログ 管理計画、データベース アプリケーションを配布するにはコモン ダイアログ コントロールを追加するのには、パッケージと展開ウィザードを使用する必要があります。ファイル、Comdlg32.ocx、およびそのサポート Dll、セットアップ ファイルを使用します。詳細についてはパッケージおよび展開ウィザードの使用方法についての記事を参照してください。この資料の「関連情報」セクションで表示します。

バック エンド データベースのテーブルを再リンクする方法

注意: 次の使用例の手順を実行する場合は、このサンプルを変更します。Northwind.mdb をデータベースです。Northwind.mdb ファイルのバックアップを作成することができ、次の手順は、データベースのコピーにします。

  1. 新しい空の Access データベース ファイルを作成し、名前FrontEnd.mdb.
  2. で、 ファイル メニューのポイント 外部データを取り込み、し [テーブルなリンク.
  3. サンプル データベース Northwind.mdb を選択参照してをクリックして、 リンク.で、 [テーブルなリンク ダイアログ ボックス、クリックして すべてを選択します。、し [OK].
  4. 任意のテーブルに基づかない、次の新しいフォームを作成するかデザイン ビューでクエリします。
    フォーム: frmNewDataFile

    テキスト ボックス:
    名前: txtFileName
    幅: 3"
    コモン ダイアログ コントロール:
    名前: xDialog
    コマンド ボタン:
    名前: cmdBrowse
    標題: 参照.
    クリック: =Browse()
    コマンド ボタン:
    名前: cmdLinkNew
    タイトル: 更新リンク
    クリック: =Processtables()
    コマンド ボタン:
    名前: cmdCancel
    標題: キャンセル
    [OnClick]: [イベント プロシージャ]
    キャンセル: はい
  5. で、 ビュー メニューをクリックして コード.
  6. 入力するか、次の手順を貼り付けます。
    Private Sub cmdCancel_Click()   On Error GoTo Err_cmdCancel_Click    MsgBox "Link to new back-end cancelled", vbExclamation, "Cancel Refresh Link"   DoCmd.Close acForm, Me.NameExit_cmdCancel_Click:   Exit SubErr_cmdCancel_Click:   MsgBox Err.Description   Resume Exit_cmdCancel_ClickEnd Sub					
  7. で、 デバッグ メニューをクリックして フロント エンドをコンパイルします。.
  8. FrmNewDataFile フォームを保存して閉じます。
  9. データベース ウィンドウをクリックします。 モジュール、し 新しい.
  10. で、 ツール メニューをクリックして 参照を選択 Microsoft DAO 3.6 オブジェクト ライブラリ 場合は、まだ選択されていないと、クリックして [OK].
  11. 入力するか、次のコードを貼り付けます。
    Dim UnProcessed As New Collection       Public Function Browse()    ' Prompts user for back-end database file name.    On Error GoTo Err_Browse        Dim strFilename As String    Dim oDialog As Object    Set oDialog = [Forms]![frmNewDatafile]!xDialog.Object        With oDialog                    ' Ask for new file location.        .DialogTitle = "Please Select New Data File"        .Filter = "Access Database(*.mdb;*.mda;*.mde;*.mdw)|" & _        "*.mdb; *.mda; *.mde; *.mdw|All(*.*)|*.*"        .FilterIndex = 1        .ShowOpen        If Len(.FileName) > 0 Then  ' user responded, put selection into text box on form.           [Forms]![frmNewDatafile]![txtFileName] = .FileName        End If    End WithExit_Browse:    Exit FunctionErr_Browse:    MsgBox Err.Description    Resume Exit_BrowseEnd FunctionPublic Sub AppendTables()    Dim db As DAO.Database, x As Variant    Dim strTest As String    ' Add names of all table with invalid links to the Unprocessed Collection.    Set db = CurrentDb    ClearAll    For Each x In db.TableDefs        If Len(x.Connect) > 1 And Len(Dir(Mid(x.Connect, 11))) = 0 Then        ' connect string exists, but file does not             UnProcessed.Add Item:=x.Name, Key:=x.Name        End If    NextEnd SubPublic Function ProcessTables()    Dim strTest As String    On Error GoTo Err_BeginLink        ' Call procedure to add all tables with broken links into a collection.    AppendTables        ' Test for existence of file name\directory selected in Common Dialog Control.    strTest = Dir([Forms]![frmNewDatafile]![txtFileName])        On Error GoTo Err_BeginLink    If Len(strTest) = 0 Then   ' File not found.        MsgBox "File not found. Please try again.", vbExclamation, "Link to new data file"        Exit Function    End If        ' Begin relinking tables.    Relinktables (strTest)    ' Check to see if all tables have been relinked.    CheckifComplete        DoCmd.Echo True, "Done"    If UnProcessed.Count < 1 Then         MsgBox "Linking to new back-end data file was successful."    Else         MsgBox "Not All back-end tables were successfully relinked."    End If    DoCmd.Close acForm, [Forms]![frmNewDatafile].Name    Exit_BeginLink:    DoCmd.Echo True    Exit Function    Err_BeginLink:    Debug.Print Err.Number    If Err.Number = 457 Then        ClearAll        Resume Next    End If    MsgBox Err.Number & ": " & Err.Description    Resume Exit_BeginLinkEnd FunctionPublic Sub ClearAll()    Dim x    ' Clear any and all names from the Unprocessed Collection.    For Each x In UnProcessed       UnProcessed.Remove (x)    NextEnd SubPublic Function Relinktables(strFilename As String)    Dim dbbackend As DAO.Database, dblocal As DAO.Database, ws As Workspace, x, y    Dim tdlocal As DAO.TableDef        On Error GoTo Err_Relink        Set dbbackend = DBEngine(0).OpenDatabase(strFilename)    Set dblocal = CurrentDb        ' If the local linked table name is found in the back-end database    ' we're looking at, Recreate & Refresh its connect string, and then    ' remove its name from the Unprocessed collection.     For Each x In UnProcessed        If Len(dblocal.TableDefs(x).Connect) > 0 Then            For Each y In dbbackend.TableDefs                If y.Name = x Then                    Set tdlocal = dblocal.TableDefs(x)                    tdlocal.Connect = ";DATABASE=" & _                    Trim([Forms]![frmNewDatafile]![txtFileName])                    tdlocal.RefreshLink                    UnProcessed.Remove (x)                End If            Next        End If    NextExit_Relink:    Exit FunctionErr_Relink:    MsgBox Err.Number & ": " & Err.Description    Resume Exit_RelinkEnd FunctionPublic Sub CheckifComplete()    Dim strTest As String, y As String, notfound As String, x    On Error GoTo Err_BeginLink        ' If there are any names left in the unprocessed collection,    ' then continue.    If UnProcessed.Count > 0 Then        For Each x In UnProcessed            notfound = notfound & x & Chr(13)        Next        ' List the tables that have not yet been relinked.        y = MsgBox("The following tables were not found in " & _        Chr(13) & Chr(13) & [Forms]![frmNewDatafile]!txtFileName _        & ":" & Chr(13) & Chr(13) & notfound & Chr(13) & _        "Select another database that contains the additional tables?", _        vbQuestion + vbYesNo, "Tables not found")                If y = vbNo Then            Exit Sub        End If                ' Bring the Common Dialog Control back up.        Browse        strTest = Dir([Forms]![frmNewDatafile]![txtFileName])        If Len(strTest) = 0 Then   ' File not found.            MsgBox "File not found. Please try again.", vbExclamation, _            "Link to new data file"            Exit Sub       End If       Debug.Print "Break"       Relinktables (strTest)    Else       Exit Sub    End If        CheckifComplete    Exit_BeginLink:    DoCmd.Echo True   ' Just in case of error jump.    DoCmd.Hourglass False    Exit SubErr_BeginLink:    Debug.Print Err.Number    If Err.Number = 457 Then        ClearAll        Resume Next    End If    MsgBox Err.Number & ": " & Err.Description    Resume Exit_BeginLinkEnd Sub					
  12. で、 デバッグ メニューをクリックして フロント エンドをコンパイルします。.
  13. としてモジュールを保存します。 RelinkCode、、それを閉じます。
  14. Northwind.mdb サンプル データベースの名前を変更または移動するにはハード_ディスク上の別のフォルダー、リンクされたテーブルに FrontEnd.mdb しないように更新する必要があります。
  15. FrmNewDataFile フォームを開くしをクリックして、 参照 ボタン クリックします。
  16. で、 新しいデータ ファイルを選択してください。 ダイアログボックス、その新しいフォルダーに Northwind.mdb を検索し、クリックしてください ファイルを開く.

    なお、データベースのパスとファイル名フォーム上のテキスト ボックスに表示されます。
  17. クリックして、 リンクを更新します。 フォーム上のボタン。

    表示されます、プロシージャが終了すると次のメッセージします。
    新しいバック エンド データ ファイルへのリンクが正常に終了しました。

リンク テーブルを確認するのには、スタートアップ フォームを作成します。

バックエンド テーブルへのリンクが自動的に毎回確認するにはFrontEnd.mdb データベースを開くには、非表示のフォームを作成できます。これらの手順を実行して目的:
  1. 任意のテーブルやクエリの設計に基づかない新しいフォームを作成します。表示します。
  2. で、 ビュー メニューをクリックして コード.
  3. フォームを開いたときに実行するのには、以下の手順を入力します。
    Private Sub Form_Open(Cancel As Integer)      ' Tests a linked table for valid back-end.      On Error GoTo Err_Form_Open      Dim strTest As String, db As DAO.Database      Dim td As DAO.TableDef      Set db = CurrentDb      For Each td In db.TableDefs         If Len(td.Connect) > 0 Then   ' Is a linked table.            On Error Resume Next   ' Turn off error trap.            strTest = Dir(Mid(td.Connect, 11))   ' Check file name.            On Error GoTo Err_Form_Open   ' Turn on error trap.            If Len(strTest) = 0 Then   ' No matching file.               If MsgBox("Couldn't find the back-end file " & _                  Mid(td.Connect, 11) & ". Please choose new data file.", _                  vbExclamation + vbOKCancel + vbDefaultButton1, _                  "Can't find backend data file.") = vbOK Then                     DoCmd.OpenForm "frmNewDataFile"   ' Open prompt form.                     DoCmd.Close acForm, Me.Name                     Exit Sub                          ' to refresh links               Else                  MsgBox "The linked tables can't find their source. " & _                  "Please log onto network and restart the application."               End If            End If         End If      Next   ' Loop to next tabledef.      DoCmd.Close acForm, Me.NameExit_Form_Open:      Exit SubErr_Form_Open:      MsgBox Err.Number & ": " & Error.Description      Resume Exit_Form_Open      End Sub					
  4. で、 デバッグ メニューをクリックして フロント エンドをコンパイルします。.
  5. FrmCheckLink としては、フォームを保存し、閉じます。
  6. FrmCheckLink をスタートアップ フォームとして設定するのには ツール メニュー] をクリックします。 スタートアップを選択 frmCheckLink で、 フォーム/ページの表示 リストとクリック [OK].
  7. FrmCheckLink 非表示のフォームを作成するには、右クリックします。 frmCheckLink データベース ウィンドウをクリックします。 プロパティ ショートカット メニューの [選択] をクリックして、 非表示 チェック ボックスでは、 frmCheckLink プロパティ ダイアログ ボックスとクリック [OK].
  8. Northwind.mdb サンプル データベースを別のフォルダーに移動するのハード ディスクに FrontEnd.mdb リンク テーブルする必要がありますように更新します。
  9. FrontEnd.mdb を閉じてから再度開きます。

    確認します。次のエラー メッセージが表示されます。
    見つけることができません、バック エンド ファイル データベース ・ ファイル.新しいデータを選択してください。ファイルです。
    場所 データベース ・ ファイル パスとバックエンド データベースのファイル名。

    クリックすると、 [OK]、frmNewDataFile フォームは新しいバックエンドを選択が表示されます。データベースおよびテーブルのリンク] を更新します。クリックすると、 [キャンセル]は、次のエラー メッセージが表示されます。
    リンク テーブルのソースが見つかりませんでした。ネットワークにログオンし、再起動してください。プログラムです。
関連情報
カスタマイズの詳細については、開発者のソリューションのサンプル プログラムでリンク テーブルを更新する例(Solutions9.mdb)、記事を表示するのには、次の文書番号をクリックして、技術情報:
154397 ADT と持つ Solutions.mdb で RefreshTableLinks のモジュールを変更する方法
追加パッケージおよび展開ウィザードの詳細については文書番号をクリックします。次は、マイクロソフト サポート技術記事を表示するのには。
240956 : パッケージと展開ウィザードを使用、配布可能なアプリケーションを作成するようになりました
236143 : パッケージと展開ウィザードを起動する方法
inf の再の再添付 [更新] リンクを再接続接続接続ADT を持つ

警告: この記事は自動翻訳されています

プロパティ

文書番号:209862 - 最終更新日: 12/05/2015 11:13:35 - リビジョン: 5.0

  • kbnosurvey kbarchive kberrmsg kbhowto kbinfo kbprogramming kbmt KB209862 KbMtja
フィードバック