0

私は、一部の同僚のクライアントのために実行する必要があることを追跡するために、単純なAccess2003アプリケーションに取り組んでいます。各同僚には一連のクライアントがあり、各クライアントには特定の日付までに実行する必要のある一連のアクションがあります。クライアントID(インデックス付き)のコンボボックス、そのクライアントのケースを処理する人のドロップダウン、および新しいクライアントを追加するためのボタン(標準のAccessで作成された[レコードの追加]ボタン)で構成されるフォームを設定しました。 。アクションは、これら3つの要素の下のサブフォームにリストされています。

私が遭遇した問題は、これをテストした最初の人がボタンをクリックして新しいレコードを追加し、それを入力せずにドロップダウンリストから別のクライアントを選択しようとしたことです。Accessはこれを、選択したクライアントIDを新しいレコードのIDとして設定しようとしていると解釈し、重複する主キーに対してエラーを正しくスローします。この問題を回避する方法はいくつか考えられますが、私が知らない言語でいくつかのがらくたをまとめるよりも、あなたのエレガントな解決策を聞きたいと思います。

ご不明な点がございましたら、お気軽にお問い合わせください。ありがとうございました。

4

2 に答える 2

2

データ入力とナビゲートに同じコントロールを使用しないでください。混乱することは間違いありません。新しいクライアントIDを入力するためのテキストボックスを作成し、コンボを変更して、クライアントIDフィールド(列)にバインドされないようにします。

于 2010-04-06T08:37:20.140 に答える
1

多くの人が見逃しているように見える1つの重要なユーザーインターフェイスの原則:

ユーザーに望まないことをさせないでください。

さて、あなたの場合、あなたが物事をどのように説明したかに基づいて、私は@Remouに同意します。1つはナビゲーション用、もう1つはクライアントの割り当て用の個別のコンボボックスが必要です。

ただし、何らかの理由で説明したことを実際に実行する必要がある場合は、レコードが保存されるまでクライアントコンボボックスを無効にすることが重要です。したがって、[新規追加]コマンドボタンの背後にあるコードでは、コンボボックスの.Enabledプロパティをfalseに設定します。フォームのAfterInsertイベントで、Trueに戻します。

アイデアは、ユーザーが間違ったことをすることが不可能になるようにすることです。

単純に聞こえますが、プログラマーとして、ユーザーと同じようにユーザーインターフェイスを表示できないような視点を持っているため、思ったよりも実行するのははるかに困難です。これが、どのアプリケーションでも、まだ試したことがないユーザーと同じくらい多くのバグが残っているといつも言っている理由です。

于 2010-04-08T02:48:54.443 に答える