必要に応じてアクセスを学習し始めました。その担当者が通過し、誰かがそれを保つ必要があったためです。 彼が作成したすべてのデータベースで非常に悪い(少なくともIMO以上の)動作に気付きました。すべての単一フォームは、テーブルまたは保存されたクエリに直接バインドされていました。このようにして、ユーザーがフォームを開いた場合は、フォーム中間プロセスを閉じた場合(またはコンピュータが凍結した場合など)、実際のデータが破損する可能性があるため、それは半分になるだろうから。これはしばしばプロセスチェーン内のすべてを破り、サブシーケンシャルな手順を実行することが不可能になり、テーブル内で直接手動でデータを修正するように強制されました。ms-accessでフォームを使用してデータを編集するためのベストプラクティス
私は彼のものをアップグレードして自分自身を開発し始めたので、データをフォームでのみ編集できるようにする方法を学び、いつでもプロセスをキャンセルしたり、変更をすべて保存することができました最後に一度に。
単純な場合は、レコードセットを作成し、関連するデータをフォーム内のバインドされていないフィールドにコピーし、最終的にユーザーが選択した場合は、フォームフィールドからレコードセット。
連続した形式で複数のデータを一度に編集し、「保存」したり、コードをさらに実行したり、その処理に由来する情報を保持するフィールドを追加したりする必要があるため、に。私は一時テーブルを使用することについて学びましたが、DBを膨らませる傾向があったので、それを気に入らなかったのです。私は、一時テーブルをホストし、最終的には破壊されるコード実行中の一時データベースを作成することに行きましたが、それはあまりにも多くの不必要な複雑さを追加しました。
今日私は、一時データとフィールドを保持するために、切断されたADOレコードセットを使用しています。それは動作しますが、その限界があります。
私はあなたがこのようなシナリオに近づくために使用する最も良い方法は何ですか?メモリ内でADOレコードセットを使用しているのは本当に最善の方法ですか?
アクセス権限は、バインドされた形式です。検証済みの(完全な)データのみを保存するには、検証関数を作成し、BeforeUpdateで検証が失敗した場合は、CancelをTrueに設定します。バインドされていないフォームを好むことは自由ですが、Visual StudioやWinFormsのようなAccess以外のツールを使用してください。 – Gustav
私は、ユーザーベースと他のDBの使用許可を管理するデータベースを開発しました。選択したユーザーの権限を管理するフォームがあります。その中で、関連するすべての権限がロードされ、マネージャは必要に応じて既存の権限を削除、作成または編集できます。これはすべて一時テーブルで行われるため、ユーザーが保存せずにフォームを閉じると、何も変更されません。 "本当の"テーブルにバインドされたフォームを使って、これにどのようにアプローチするのか教えてください。 – fmonacos
更新プログラムをトランザクションでラップすることができます。フォームがコミットせずに閉じられた場合は、変更をロールバックします。 – Gustav