使用したプラットフォーム:
SQL Server 2008 および C++ ビルダー
エラーが発生していた 2 つのテーブル間で内部結合を行っています。
更新する行が見つかりません
クエリ:
SELECT DISTINCT
b.Acc, b.Region, b.Off, b.Sale, a.OrgDate
FROM
sales b
INNER JOIN
dates a ON (a.Acc = b.Acc and a.Region = b.Region and a.year= b.year)
WHERE
(a.xdate <> a.yDate)
and (b.Sale = a.SaleDate)
and b.year = 2010
注: Acc
、Region
、Off
はテーブル b の主キーであり、テーブル a にも存在します。
テーブル a には、クエリに表示されない主キーである id があります。
私の内部結合が重複した行を返していることが判明しました。
内部結合クエリを「DISTINCT」を使用するように変更して、重複しない行のみが返されるようにしました。クエリは実行されますが、エラーが発生します。
更新またはリフレッシュするためのキー列情報が不十分です。
テーブル A の主キーであるフィールドは、テーブル B のフィールドと同じ名前であることがわかります。
これは、ADO レコード セットの更新中に発生するバグであることがわかりました。BUG: 結合テーブルが同じ列名を共有している場合に ADO 階層レコードセットを更新する際の問題
次の 2 つの質問があります。
- 内部結合クエリで Distinct を使用するのは得策ではありませんか?
- TADO クエリに関連するバグの解決策を見つけた人はいますか?
ありがとうございました、