1

大勢の個人が使用する時間を入力するフォームを作成するのに助けが必要です。複数の関連付けられたレコードに対して新しい/空のレコードを生成し、それらを一度に表示する方法がわかりません。

このデータベースは、200 人の従業員の給与期間ごとの時間を追跡するように設計されており、使用された時間のグループごとに証明を提供します。各従業員は 1 つのセクションにのみ割り当てられ、各認定資格は 1 人の従業員に割り当てられ、各時間インシデント (より適切な用語がないため) は 1 つの認定資格と1 つの給与期間にのみ割り当てられます。

給与担当者に給与期間ごとに空白のフォームを渡し、事務員が担当するセクションのすべての従業員を表示し、その給与期間の各従業員の新しい時間レコードを作成する必要があります。そのセクションのすべての従業員を 1 つの長いリストに表示できる必要があります。レコード セレクターを使用したレコード間のシャッフルはありません。

(理想的な世界では、従業員がその給与期間に実際に時間を使用した場合にのみ新しいレコードを作成しますが、それがより簡単な方法である場合は、0 時間の使用時間で多くの「時間」レコードを作成することを喜んで受け入れますそれ。)

関連するテーブル/フィールド
List_Sections: SectionID
List_Employees: EmployeeIDSectionID
List_Certifications: CertIDEmployeeID
List_PayPeriods: PeriodID

List_Hours に追加されるテーブル
: HoursIDHoursUsedCertIDPeriodID ( HoursIDは自動採番です)

フォームは、これらの質問を事務員に提示します。

  1. あなたは誰?(彼らはコンボボックスから自分の名前を選択します。これは解決済みです)
  2. どのセクションの時間を追加しますか? (自分が担当するセクションからしか選択できません。これは解決済みです)
  3. どの支払期間のデータを入力していますか? (2 週間先または 1 年後の任意の支払い期間を選択できます)

これにより、データシート/表形式のサブフォームに次の列が入力されます。

  1. EmployeeID (セクション内のすべての従業員に対して自動的に生成される 1 行)
  2. PeriodID (店員が質問 3 で選択したものによって自動的に入力されます)
  3. 使用時間 (これを入力します)
  4. CertID (これは、問題の従業員に関連付けられた認定に限定されたコンボボックスです。新しい時間レコードのデフォルト値をその従業員の最新の認定にする方法を整理する必要があります)
  5. HoursID (これは自動番号になります。ユーザーが削除/変更しようとしてイライラする可能性があるため、実際にはフォームに貼り付けない場合があります。)

また、特定の従業員のこの給与期間について以前に作成された既存のレコードを取得したいのですが、それは優先度が 2 番目です (160 時間を使用している誰かのような奇妙な状況を警告するクエリが既にあります)。 2 週間以内、および入力された既存の時間を編集するためのフォーム)。

関連情報:

  1. アクセス2010を使用しています。
  2. Microsoft Office 製品についてはよく理解していますが、VBA についてはよく理解していません。Excel の「連結」よりも高度なコードをこれほど多く扱ってから 10 年が経ちました。最終的に機能するカスケード コンボボックスを 非常に誇りに思っています。
  3. 私のデスクには「Access 2010: The Missing Manual」のコピーがありますが、他の参考文献はありません。もしこの答えがこのマニュアルのどこかにあるなら、私は本の中から物事を見つける方法を教えてくれた人に返金を要求します.
  4. わかりました、認めます。実際には、フォームに「従業員の氏名」や「関連する詳細を含む証明書の説明」などのフィールドが表示されます。これらは関連するテーブルにあり、更新クエリによって定期的に変更されます。更新クエリは、(このデータベースが完了すると) 1 日に 1 回または 2 回自動的に実行されます。計算フィールドやルックアップをテーブルに入れないように言われたからです。

私はこの問題を熟考しようとしてきましたが、「「AfterUpdate」イベント プロシージャとして追加クエリを実行するようなことができるのだろうか...」で立ち往生しています。まだ私には思い浮かばなかった解決策。

4

1 に答える 1

0

要件の(非常に優れた)説明に基づいて、最初に関連する可能性のある[List_Hours]レコードをすべて作成することが、最善の方法である可能性があることに同意する傾向があります。はい、0時間を含むレコードからは「肥大化」が発生しますが、これらのレコードが存在すると、データ入力とレポート作成の両方が容易になります。

「「AfterUpdate」イベントプロシージャとして追加クエリを実行するようなことを実行できるかどうか疑問に思います...」私はまだ思い浮かばない、はるかにエレガントなソリューションがあることを望んでいます。

私はそれについてエレガントなものは何も見ていません。それが、どの[List_Hours]レコードが存在する必要があるかを判断するのに十分な情報を持っている瞬間である場合、それはそれらが存在することを確認する時間です。

そのアプローチで私が見ることができる唯一のしわは、[List_Hours]には[CertID]を介した従業員への間接リンクしかないということです。問題のセクションとPay_Periodがわかったらすぐに[List_Hours]レコードを作成できるように、時間を従業員に直接リンクする(つまり、[CertId]の代わりに[EmployeeId]を使用する)方が理にかなっている場合があります。

于 2013-03-12T13:11:28.030 に答える