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

お問い合わせ

お問い合わせフォーム