私はもともとib Access 2003で書かれたアクセスDBを持っていますが、その後Access 2007にアップグレードされました - 私が経験している問題は次のとおりです:
特定のクライアントの予約または見積もりに関連するすべてのデータを格納するテーブル「tblBookings」があります。このテーブルのクライアント フィールドは、見積もりが受け入れられるとクライアント テーブル (tblClients) の PK にリンクされ、ユーザーはメイン フォームを開きます。クライアントを選択し、ドロップダウンで予約番号を選択し、ユーザーが予約を編集または確認できる「予約の編集」に進みます。ユーザーが「予約の確認」cmdButton をクリックすると、開いているフォームが閉じ、「請求書の作成」フォームが開きます。ユーザーはドロップダウン リストから予約番号を選択し、見積請求書または請求書を印刷します。プロフォーマ印刷コマンド ボタンをクリックすると、必要なドキュメントを印刷するレポートが開きます。
これは、請求書を印刷する前にプロフォーマを最初に印刷することが不可欠であると言われているため、プロフォーマが印刷されている場合は、テーブルの yes no フィールドを yes または true に設定する必要があります。この場合、請求書ボタンが表示され、まだ印刷されていない場合は非表示のままです。
cmdProForma のイベント プロシージャは以下のとおりです (ここで、tblBookings である Pro フィールドに yes/no フィールドを設定し、yes/no フィールドに設定する必要があります。
Private Sub CmdProForma_Click()
Dim rs As New ADODB.Recordset 'recordset of existing refs
Dim t As String 'temp string var
Dim stDocName As String
Dim stLinkCriteria As String
Dim i As Integer 'temp ref variable
i = CInt(Right(txtBRef, 5))
t = [txtBRef]
With rs
.Open "SELECT BRef,Conf,lock,Pro FROM tblBookings WHERE Bref=" & t & ";", CurrentProject.Connection, adOpenDynamic
If .BOF Or .EOF Then 'no such ref
MsgBox "No booking with ref '" & fRef(CInt(t), "B") & "' exists.", vbExclamation, "No booking"
Else 'ref found: open invoice
strSQL = "UPDATE tblBookings SET Pro = True"
'db.Execute strSQL, dbFailOnError
DoCmd.Close acForm, "frmBRefEnter"
' !Form!frmBRefEnter!Pro = True
DoCmd.OpenReport "rptInvoice1", acViewPreview, , "BRef=" & t
DoCmd.OutputTo acOutputReport, "rptInvoice1", acFormatPDF, destDIR & "\Inv\" & fRef(i, "Pro-Forma") & ".pdf"
End If
End With
End Sub