- ベストアンサー
Accessの帳票形式のフォーム作成方法とデータグリッドの使用について
- Accessの帳票形式のフォームを作成する方法と、データグリッドの使用について教えてください。
- 現在、Accessの帳票形式のフォームを使用して複数レコードの編集を行っていますが、本物のテーブルにロックがかからないため、編集内容のキャンセルができません。データグリッドを使用する代替方法はありますか?
- Accessで複数レコードを一度に表示し、ロックをかけつつ編集とキャンセルが可能なフォームの作成方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 今までRecordsetプロパティにはテーブルあるいはSQL文を > セットしていましたが、ADOやDAOのレコードセットを使うことも > できるのですか。 テーブルあるいはSQL文をセットするのは、RecordSourceプロパティです。 レコードセットをセットするのは、RecordSetプロパティです。 下記のリンク先を参考にしてください。 ADO レコードセットにフォームを連結する方法 http://msdn.microsoft.com/ja-jp/library/ff835419.aspx ちょっと古いですが、Microsoft SQL Server への接続例があります。 [ACC2003] Microsoft Access フォームを ADO レコードセットに連結する方法 http://support.microsoft.com/kb/281998/ja
その他の回答 (1)
- hatena1989
- ベストアンサー率87% (378/433)
興味深い質問なんですが、 SQLServerをバックエンドにした運用の経験がないので、 経過を見守っていました。 Accessデータペースファイルでは、 フォームのRecordsetプロパティに、ADO か DAO のレコードセットを割り当てて、 トランザクションをかけるということは可能です。 が、テーブル単位で編集ロックがかかるので、複数ユーザーで共有して運用する場合は実用的ではないためか、 ほとんど実例をみたことがないです。 これだけまって回答がないところを見ると、SQLServer でも同様な実情なのだと思われます。 考えられる方法は、 1.本物テーブルの内容をテンポラリのテーブルにコピー 2.テンポラリのテーブルと連結したフォームで編集 3.[保存]ボタンのクリックでテンポラリのテーブルで本物を上書き という設計に、本物テーブルに、編集ロック管理用のフィールドを追加して、 編集ロック管理をすべて自前のコードで実装するということになるかと思います。 管理用フィールドは、編集中ユーザー名、編集開始時刻 の2つを用意して、 両方が Null のレコードは編集可能、 フォームで編集を開始したら、上記のフィールドに値入力、 というような感じになると思います。 編集ロックしてままフリーズした場合にそなえて、 長時間編集ロックされいる場合は、このフィールドの情報をもとに対処します。
お礼
回答ありがとうございます。 ・複数レコードをロールバックしたいならテンポラリテーブルを使用。 ・本物テーブルには管理用フィールドを付けて編集開始時刻をキープ ということですね。 その方向で地道に考えてみます。 他に意外な方法がないか、まだ淡い期待が捨てきれないので クローズはもう少し後にします。
補足
hatena1989さん いただいた回答を読んでいてわからないことがひとつありました。 >フォームのRecordsetプロパティに、ADO か DAO のレコードセット 今までRecordsetプロパティにはテーブルあるいはSQL文を セットしていましたが、ADOやDAOのレコードセットを使うことも できるのですか。 それは開く時にVBAでセットするのでしょうか。