0

「ヘルプデスク」システムと同様に機能するデータベースがあります。外部ユーザーがリクエストチケットを作成すると、コンサルタントがデータベースを使用してさまざまな追跡とレポートを行います。

コンサルタントがエンド ユーザーの要求を表示して処理するために使用するフォームがあります。コンボ ボックスから既存のレコード (リクエスト チケット) を選択します。次に、フォームに要求の情報が取り込まれます。コンサルタントは、必要に応じてこの情報を編集できます。

このフォームには、コンサルタントがさまざまなフォーム (ワークシート) を開いて各フォームにデータを入力するために使用できる一連のボタンがあります。これらはすべてオプションであり、リクエストのタイプによって異なります。

これらのワークシートはすべて「Consulting」テーブルに入力されますが、最初のリクエストは「Request」テーブルにあります。「Consulting」テーブルには、「Request」のレコードごとに 1 つのレコードしかありません (1:1 の関係)。

フォーム(ワークシート)を開くために必要なコードは次のとおりです。

Private Sub ButtonGap_Click()
DoCmd.OpenForm "Gap Analysis", acNormal, , "[ID] = " & Me!ID, acFormEdit, acDialog
End Sub

これは部分的にしか機能しません。「Consulting」テーブルに、「Request」の ID (最初にコンボ ボックスで選択したもの) に対応する ID を持つ既存の情報がある場合、ワークシートは事前入力されて編集可能に開きます。すごい!

しかし... 「Consulting」テーブルに「Request」の ID に対応する ID を持つ既存の情報がない場合、ワークシートは空白で新しいレコードに開きます。このレコードは、「コンサルティング」テーブルが中断されたところから自動番号付けされます。これにより、複数のリクエストが届いた場合に問題が発生します。常に順番どおりに処理しているわけではないため、「コンサルティング」の新しいレコード ID が「リクエスト」の既存のレコードと一致しません。

私が見落としているのは、信じられないほど単純なものだと確信しています。誰でも助けることができますか?

4

1 に答える 1

0

これを行う方法を見つけることができたようです。何か見逃した場合は、お知らせください。他のものを壊したくありません。:)

一致しないレコードを見つけるためのクエリを作成し、Consulting に一致する ID がない Request からのすべての ID のリストを取得しました。

そこから、これらの結果に基づいて追加クエリを作成し、不足している ID だけを Consulting に追加しました。

このクエリは、リクエスト フォームが送信されると実行されます。

Private Sub Form_AfterUpdate()
DoCmd.OpenQuery "Add Blank Consulting"
End Sub

これで、コンサルティング フォームのワークシートに正しい ID が入力されるようになりました。

于 2014-12-18T19:11:07.833 に答える