1

テーブルが存在しなくなったときに、Access がクエリを更新できないようにする方法、具体的には結合を削除する方法はありますか?

たとえば、次のクエリは一時テーブルで使用されます。

Select Table1.Col1, Table1.Col2
From   Table1 
  left join Table2 on Table1.Col1 = Table2.Col1
Where  Table2.Col1 is null

その後、一時テーブルが削除され、クエリが開かれた場合、アクセスは結合を削除します。

Select Table1.Col1, Table1.Col2
From   Table1, Table2
Where  Table2.Col1 is null

これは、アクセスによるクエリの変更を防止するで尋ねられた質問に似ています

4

1 に答える 1

0

オートコレクトを無効にして、データベースを閉じてから再度開き、これが引き続き発生するかどうかを確認してください。

Accessが「正しいことを行い」、クエリを自動的に更新する場合もあります。
その場合、次のいずれかの手法を使用できます。

  • SQLをVBAコードに保持します。
    結果のSQLをバインドするか、必要に応じてクエリを再作成できます。次に例を示します。

    ' Bind form to manually using the Form Open event '
    Private Sub Form_Open(Cancel As Integer)
        Dim sql As String
        sql = sql & "Select Table1.Col1, Table1.Col2 "
        sql = sql & "From   Table1 "
        sql = sql & "  left join Table2 on Table1.Col1 = Table2.Col1 "
        sql = sql & "Where  Table2.Col1 is null"
        ' Bind the form directly to the SQL '
        Me.RecordSource = sql
    End Sub
    
  • クエリのSQLをファイルに保存し、必要に応じて再ロードします。

    ' Save the query to a text file, in the application folder '
    Application.SaveAsText acQuery, "MyQuery", CurrentProject.Path & "\myQuery.txt"
    
    ' Load the the query from its previously saved file '
    Application.LoadFromText acQuery, "MyQuery", CurrentProject.Path & "\myQuery.txt"
    
于 2012-05-03T08:21:59.887 に答える