父が会社でレポートに使用しているシステムに問題があります。私はそれを構築しませんでしたが、頭を包み込むために最善を尽くしています。それはASPであり、私はそれに精通していません(またはSQLを書いています)。
基本的に、Item、ItemHistory、および Devices という 3 つのテーブルを使用しています。これらのテーブルで私がやろうとしていることは
- 「アイテム履歴」テーブルの「シリアル番号」列を介して、ユーザーが作業したアイテムを取得します
- そのシリアル番号を「Item」テーブルの「serialnumber」列と比較して、デバイス タイプを取得します(デバイス列から)。
- デバイスタイプを使用して、「デバイス」テーブルの「ポイント」列から所定の数値を取得します
- 値を保存し、クエリによって引き戻された他の値に追加してから、合計を表示します。
*更新を参照*
ご覧のとおり、Device Type が ItemHistory テーブルに含まれていればもっと簡単だったのですが、そうではありませんでした。テーブルを結合しようとしましたが、エラーが発生し続けます(これは、私の知識不足によるもので、かなり確実です)。クエリは日付範囲とユーザー (ItemHistory テーブルから) によるものですが、それは理解できたと思います。すべてのテーブルを参照して「ポイント」を追加することはできません。
どんな助けでも大歓迎です!さらに情報が必要な場合はお知らせください。前もって感謝します。
アップデート
したがって、基本的に私が今問題を抱えているのは、「BOFまたはEOFのいずれかがTrueであるか、現在のレコードが削除されました。要求された操作には現在のレコードが必要です。」というクエリが返され続けることです。ポイント列に数字を追加しているだけなので、原因だと思います。
私の最後の質問の問題は、すべてのデバイスに「ポイント」があるように見せかけたことだと思いますが、実際には一定数のデバイス (たとえば 5 つ) があり、複数のシリアル番号がすべて 1 つのデバイスを指している可能性があります。 . ここでクエリに問題が発生していると思います (ただし、間違っている可能性があります)。また、私の sql ステートメントは、追加された独自の変数を除いて、以下に投稿された littlebobbytables とほとんど同じように見えます。
データベースはこんな感じ。
アイテム履歴テーブル
Date | SerialNumber | DeviceType | User ----------|--------------|-------------|------- 11/1/12 | 123-456-789 | NULL | Bill 11/1/12 | 456-123-987 | NULL | Bill 11/1/12 | 987-654-321 | NULL | Bill 11/1/12 | 216-897-631 | NULL | Bill 11/1/12 | 874-547-277 | NULL | Bill
アイテムテーブル
SerialNumber | DeviceType -------------|------------- 123-456-789 | Device1 456-123-987 | Device2 987-654-321 | Device3 216-897-631 | Device1 874-547-277 | Device2
デバイス テーブル
Device | Points ----------|---------- Device1 | 20 Device2 | 25 Device3 | 40
そして、私が期待しているのは、出力が
User | Points --------|---------- Bill | 130