- dbSheetClient
MS-Accessで業務アプリケーションを開発する場合、「ヘッダー」(親フォーム)と「明細」(子フォーム)から構成される伝票形式のようなフォームが多用されると思いますが、dbSheetClientではAPIを使ってサーバーDBに反映させようとする場合、どのように実装すればいいですか?
たとえば、ある商品の注文を管理する「注文管理システム」があり、フォームのヘッダー部分がテーブル「注文」、明細部分がテーブル「注文内容」で構成されている場合を考えてみます。「注文」テーブルは主キーが「注文番号」であり、「注文内容」テーブルの主キーは「注文番号」と「注文内容」から構成されています。つまり、ヘッダーと明細は「注文番号」で紐づいていることになります。この場合、「注文」フォームのオープンとともにサーバーDBからローカルテーブル「注文」、「注文内容」にデータがダウンロードされます。フォーム上の注文レコードに対し、実行ユーザーがヘッダーの一部修正を行い、かつ明細に2商品を追加したとします。この場合、ヘッダーフォームにある「サーバー更新」ボタンのイベントを利用し、以下のようにVBAで記述します。(エラー処理は省略)
Private Sub btnサーバー更新_Click
Dim blnStatus As Boolean
‘データ変更をローカルテーブルに反映させます。
DoCmd.RunCommand acCmdSaveRecord
‘ヘッダー部分の更新を楽観的ロックによる排他制御で実行します。
blnStatus = dbsCls.CopySvr_fromLocal(“注文”, “Where 注文番号 = ‘” & Me.注文番号& “’, False)
‘成功した場合は、フォームの「注文番号」に紐づく明細「注文内容」の入れ替えを行います。
If blnStatus = True Then
blnStatus = dbsCls.ReplaceSvr_fromLocal(“注文内容”, “Where 注文番号 = ‘” & Me.注文番号 & “’”)
End If
If blnStatus = True Then
MsgBox “サーバー更新を完了しました。”, vbOkOnly + vbInformation, “更新”
Else
MsgBox “更新に失敗しました。”, vbOkOnly + vbExclamation, “更新”
End If
End if
お問い合わせ
-
- 埼玉本社
-
- 048-815-8450
- 048-825-0020
-
- 大阪営業所
-
- 06-6838-7270
- 06-6838-7271
-
- 名古屋営業所
-
- 052-265-8089
- 052-265-8090