1

現在、ユーザーがパラメーターを使用してテーブルからのクエリに基づいて基本的なレポートを作成できるデータベースを取得しています。かなり簡単です。今やりたいことは、VBA を使用して、レポートが作成されるたびに別のテーブルにレコードを追加することです。各レポートには、クエリからの情報に加えて、いくつかの新しい情報 (連結 ID、日付など) が含まれています。新しいテーブル ("Summary") には、その新しい情報の一部と、元のクエリからのいくつかのソースが含まれます。これは、作成されたレポートの動的ログのようなものです。

VBA を使用して、2 つのソースからのデータ (元のクエリからのレポートに表示されるデータとネイティブ レポート データ) をテーブルの 1 つのレコードに結合する方法はありますか?

これが私がこれまでに得たコードです。

Option Compare Database

Public Sub Log_Report()

'System definitions
Dim dbs As DAO.database
Dim rs As DAO.Recordset
Dim rep As [Report_Custom MARS Report]

'Original report sources
Dim Text267 As String
Dim TableName As String
Dim Company_Name As String
Dim ReportID As String

'Summary table destination
Dim ID As Integer
Dim Date_Created As Date
Dim Source As String
Dim Title As String
Dim report_ID As String
Dim Attachment As Attachment

End Sub

私はおそらくかなり外れているので、最初からやり直す必要がある場合は、それで問題ありません。私は決して VBA の専門家ではないので、これまで試行錯誤の連続でした。

必要に応じて明確にすることができます。

4

1 に答える 1

0

レポートのレコードセットが単一の行である場合、on loadイベントを使用してフィールドを読み取り、それらを変数に割り当てるのは比較的簡単です。すべての計算は、Report_Loadイベントが発生するまでに行われているため、サマリーテーブルに値を書き込む関数への入力として使用できます。

'Code to placed in a public function
'strVar = text267 'is ReportID = report_ID ? 
'Unfortunately I have no experience with attachments, sorry

function writeReportSummary(intID as Integer, dtmDate_Created as Date, strSource as String, strTitle as string, strReportID as string, strVar as string, strTableName as string, strCompanyName as string, attAttachment as attachment) AS boolean

Dim strSQL as string
On error goto Err_Handler

strSQL = "INSERT INTO summary( ID, Date_Created, Source, Title, report_ID, Text267, tableName, Company_Name, ReportID) SELECT """ & intID & """ , """ & dtmDate & """;" 'etc
CurrentDb.execute strSQL, dbFailOnError
Debug.print CurrentDB.recordsAffected & ": Record(s) Inserted at " & now()
writeReportSummary = True
Exit function

Err_Handler:
debug.print err.number
debug.print err.description
writeReportSummary = false
end function

'Code to be placed in Report_load'
Sub Report_Load

if Not(writeReportSummary(intID, dtmDate, etc)) then debug.print "Failed to write report to summary table"

End Sub
于 2012-10-31T22:43:55.003 に答える