私はsqliteデータベースに顧客のための「メモ」を含んでいます。データベース設計は非常にシンプルで、ノート用の1つのテーブル、customer_noteという名前の顧客とノート、customersテーブルをリンクする「リンク」テーブルが関連しています。 notesテーブルにはidフィールドがあり、customer_noteにはcustomer_idとnote_id(1対多)があり、customersテーブルにはidもあります。TSQLクエリとデータ認識コンポーネントの更新
選択した顧客のためにノートを入手するための照会は次のとおりです。
SELECT * FROM note n
INNER JOIN customer_note cn
ON (cn.note_id = n.id)
WHERE customer_id = :customerID
ORDER BY created_on ASC
クエリは、顧客のクライアントデータセットがスクロールされた場合に実行され、すなわち
customersCDSAfterScroll()
{
int cID = customerCDS->FieldByName("id")->AsInteger;
customerNotesQ->Params->ParamByName("customerID")->AsInteger = bID;
customerNotesQ->Open();
//Get notes
string note = stdstr(customerNotesQ->FieldByName("note")->AsString);
Log(lInfo) << "Note is: "<<note;
customerNotesQ->Close();
}
クエリは、DataSetProvider、ClientDataSet、およびDataSourceコンポーネントによって参照されます。 UI上でTDBLookupListboxがデータを受信しています。
問題は、TDBLookpListboxはすべての顧客に対してすべてのメモを表示することです。 上記のコードからのログメッセージでは、クエリが正しく機能するように見えることがわかります。
何が問題になるのでしょうか?