7

約 200.000 行を含む最大のテーブルがあり、頻繁に変更されるデータベースがあるとします。クライアントは、Excel が ODBC 経由でデータベースに接続し、データを管理するフロントエンドとして機能することを望んでいます。データは、最大 25 人のユーザーが同時に変更できる必要があります。

私の最初の本能は、たとえば Web フロントエンドなど、何か他のものを推奨することです。しかし、クライアントが Excel ソリューションを要求した場合、それは実行可能だと思いますか? また、その中にどのような落とし穴があると思いますか?

私の疑問は次のとおりです。

  1. データの整合性 (同じデータを同時に変更するユーザーを管理する方法)
  2. 大量のデータが不必要に移動されました (Excel ワークブックを開くと、データベース全体を転送する必要があると思います)
  3. セキュリティ (データの一部のみを安全な方法で適切なユーザーに表示することは困難です - 前のポイントを参照してください)
  4. ツール (Excel) を何かに使用するが、それが優れていない (しゃれを許してください)
4

2 に答える 2

5

私はいつもこれをしています。いいえ、データベース全体やテーブル全体を持ち込む必要はありません。ADO と VBA を使用し、Command オブジェクトを介して SQL ステートメントを送信します。たとえば、Excel フロント エンドを備えたロイヤリティ データベースがあります。

ユーザーが請求書番号を入力すると、SELECT ステートメントがその 1 つのレコードを取得し、いくつかのカスタム クラスを設定します。ユーザーはいくつかのデータを入力/変更し、[保存] をクリックします。次に、クラスには、状況に応じて UPDATE または INSERT を使用してレコードをデータベースに書き戻すメソッドがあります。

月末に、ユーザーは日付範囲を入力し、いくつかのレコードをレポートに取得します。ここでも、いくつかのクラスを埋めてシートに出力する SELECT ステートメントだけです。

トランザクションを使用すると、レコード ロックの問題が発生した場合にロールバックできますが、25 人のユーザーではおそらくロールバックできません。

于 2010-02-19T14:53:08.263 に答える
2

一見すると、Excel を Web ページのように扱うことをお勧めします。つまり、必要なデータのみを取得し、ADO を介して一度に 1 つのレコードを更新する編集用の特定のフォームを使用します。単一のレコードをロックするだけでよく、更新にかかる時間はごくわずかです。レコードが編集用に開かれてから変更されたかどうかを確認できます。ユーザーは、編集用にレコードを開いて編集フォームにそのままにしておくと、変更が失われる可能性があることを伝えることができます。

通常、このような小さなグループが同じレコードを同時に変更する必要があることはほとんどありません。

25 人の同時ユーザーで問題が発生することはないと思います。

于 2010-02-19T12:04:24.037 に答える