2016-06-16 14 views
0

Ich habe eine SQLite-Datenbank mit 'Notizen' für Kunden. Das Datenbankdesign ist recht einfach und umfasst eine Tabelle für Notizen, eine "Link" -Tabelle, eine Verknüpfung, eine Beziehung zwischen Kunden und Notizen namens customer_note und eine Kunden-Tabelle. Die Notizentabelle hat ein ID-Feld, die customer_note hat customer_id und note_id (eins zu viele) und die Kundentabelle hat ebenfalls eine ID.TSQLQuery und Update von Daten bewusst Komponenten

Die Abfrage der Hinweise für einen ausgewählten Kunden zu erhalten ist:

SELECT * FROM note n 
INNER JOIN customer_note cn 
ON (cn.note_id = n.id) 
WHERE customer_id = :customerID 
ORDER BY created_on ASC 

Die Abfrage in einem Fall ausgeführt wird, in dem die Kunden Client-Datenmenge gescrollt wird, dh

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(); 

}

Die Abfrage wird von einem DataSetProvider, einer ClientDataSet-Komponente und einer DataSource-Komponente referenziert. Auf der Benutzeroberfläche empfängt eine TDBLookupListbox die Daten.

Problem ist, die TDBLookpListbox zeigt alle Notizen für alle Kunden. In den Protokollnachrichten, aus dem obigen Code, kann ich sehen, dass die Abfrage ihre Aufgabe jedoch korrekt zu tun scheint.

Irgendeine Idee, was schief läuft?

Antwort

0

Da das Ergebnis der Abfrage nur Notizen enthält, die korrekt vom Parameter gefiltert wurden, ist es nicht möglich, dass diese Abfrage die Daten an die Listbox liefert.

Die Antwort könnte daher sein, dass Sie DBLookupListBox falsch konfiguriert und ihm eine andere Datenquelle zugewiesen haben, die auf eine Abfrage verweist, die Ihre Notizen nicht filtert.

Auch können wir nicht sehen, wenn customerNotesQ wirklich geschlossen ist, wenn Sie den Parameterwert zuweisen und die Abfrage öffnen. Aber wenn nicht, würde der Param keine Wirkung haben.

Verwandte Themen