0

別のデータベースをチェックするための条件とエラーメッセージでいっぱいのテーブルを持つデータベースがあります。

これらの条件のそれぞれが 2 番目のデータベースのすべてのテーブルに対してチェックされ、エラーを示すレポートが生成されるように、ループを実行したいと考えています。

これはmsアクセスで可能ですか。

例えば、

querycrit テーブル

id           query                                 error    
1           speed<25 and speed>56              speed above limit  
2           dist<56 or dist >78                dist within limit

このようなさまざまな変数のクエリが 400 件以上あります。

クエリを実行しているテーブルは

レコード テーブル

id   speed     dist    accce   decele   aaa   bbb     ccc
1     33        34      44         33   33     33      33
2     45        44      55         55   55     22      23

よろしくttk

4

4 に答える 4

2

ここにいくつかのサンプルコードがあります。これは、2つの異なるタイプのレコードセットの使用法を示しています。VBAトラップ:AllenBrowneによるレコードセットの操作とAccess2002以降のバージョンのAccessの予約語のリスト を読むことをお勧めします。

Dim rs As DAO.Recordset
Dim rs2 As ADODB.Recordset

Set rs = CurrentDb.OpenRecordset("querycrit")
Set rs2 = CreateObject("ADODB.Recordset")
rs2.ActiveConnection = CurrentProject.Connection
For Each tdf In CurrentDb.TableDefs
'EDIT: TableDefs includes Microsoft System tables and '
'these should never be tampered with. They all begin with Msys '
'so we can leave them out of the loop here. '
   If Left(tdf.Name, 4) <> "msys" And tdf.Name <> "querycrit" Then
        rs.MoveFirst
        strSQL = "SELECT * From [" & tdf.Name & "] WHERE "

        Do While Not rs.EOF
            On Error Resume Next
            Debug.Print tdf.Name
            rs2.Open strSQL & " " & rs![query]
            If Err.Number = 0 Then
                On Error GoTo 0
                If Not rs2.EOF Then
                    Debug.Print rs![Error]
                    Debug.Print rs2.GetString
                End If
            End If
            Err.Clear
            rs2.Close
            rs.MoveNext

        Loop
    End If
Next
End Sub
于 2008-10-24T13:09:23.737 に答える
0

「実際には、チェックするレコードテーブルが多数あり、すべてのテーブルですべてのクエリを実行できるわけではありません。たとえば、あるテーブルでは速度がなく、次のテーブルでは距離がない場合があります。」

正しい考えは、テーブルのテーブルと、どのクエリがどのテーブルで実行されるかを示すクエリテーブルジャンクションテーブルを作成することだと思います。次に例を示します。

TableID  QueryID
1           4
2           1
2           3
3           1

これを使用して、各テーブルで正しいクエリのセットを実行できます。

于 2008-10-24T12:12:11.857 に答える
0

「レポート」とは、アクセス レポートのことですか。それとも、ファイルやアクセス フォームへの書き込みは機能しますか?

これを行うために、モジュールに関数またはサブを作成できます。querycrit テーブルでレコードセットを開き、レコードを動的に構築してレコード テーブルの SQL を実行します。これらの動的クエリの結果をファイルまたはフォームに書き込むか、結果を一時テーブルに挿入して、そこからアクセス レポートを作成できます。

于 2008-10-24T11:01:45.707 に答える
0

これはいくつかのサンプルコードです。これは型付けされたものであり、テストされていません。

Dim rs AS DAO.Recordset
Dim rs2 AS DAO.Recordset

Set rs=CurrentDB.OpenRecordset("querycrit")

strSQL="SELECT * From Records WHERE "
Do While Not rs.EOF
   Set rs2=CurrentDB.OpenRecordset(strSQL & rs![Query])
   If Not rs2.EOF Then
       Debug.Print rs![Error]
       Debug.Print rs2.Fields(1)
   End If

   rs.MoveNext
Loop
于 2008-10-24T11:20:50.957 に答える