![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: FireDAC
Eindeutiger Bezeichner bei Livebindings zuordnen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich beschäftige mich gerade etwas mit den Livebindings unter XE5. Soweit klappt auch alles ganz gut. Nur ein Problem habe ich: wenn ich ein Binding mit BindSource zu ListView mache, sehe ich zwar die Daten, doch möchte ich die Daten z.B. löschen und benötige dafür die eindeutige ID der Tabelle, kann die irgendwie bei den Bindbaren Membern aber nicht unterkriegen. Sowas wie Items.Tag oder Items.ID fehlt. Im Anhang zwei Bilder - einmal das Mapping und einmal die Ansicht der Daten (soll eine App geben, ähnlich wie Evernote). Bindsource ist eine TFDQuery, die sich aus zwei verschiedenen Tabellen zusammensetzt:
Code:
Es existieren derzeitig zwei Tabellen: notes und groups. In beiden Tabellen ist eine eindeutige ID vorhanden (AutoInc).
SELECT notes.note_id, notes.description, notes.group_id, notes.note, groups.groupname
FROM groups INNER JOIN notes ON groups.group_id = notes.group_id ORDER BY groups.groupname; Wie schaffe ich also, bei einem OnClick auf TListView die note_id herauszufinden, um z.B. Daten per SQL zu ändern oder zu löschen? Oder: kann man Bindbare Memeber auch selbst definieren? Wenn ja: wie? Grüße |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Was macht denn dieses Synch oder LookupData?
Von denen nirgendwo in der Hilfe was zu finden ist. :roll: Aber müsste es nicht in deiner Datenbank-Query-Komponente irgendwo das ID-Feld angegeben werden können? |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Zitat:
Zitat:
|
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Zitat:
Die Klingen doch irgendwie danach, als wenn das Werte für die "Synchronisierung" der Livebinding-Verbindung seinen könnten? Nachlesen konnte ich das aber nicht, da ich nirgendwo eine Info dazu fand. Zitat:
Und dann sollte das Ding einfach nur das "Delete" deiner QueryKomponente aufrufen, welche nun mit dem ihr bekannten ID-Feld das Löschen in der DB vornimmt. |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Zitat:
Vermutlich, weil ich zwei verschiedene Tabellen in der Query habe. Aber ich will mich einfach an die Datenbankgrundsätze halten und den Gruppenname schön mit einer ID in einer anderen Tabelle speichern. Das löschen würde ich dann "von Hand" (also wie früher) vornehmen. Aber irgendwie läßt mich XE5 da hängen bzw. die Livebindings... |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Könnte es sein, daß Item.LookupData dafür da ist, intern z.B. die ID deines Datensatzs zu erhalten?
note_id -> Item.LookupData |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Zitat:
Trotzdem Danke! Die Frage nach "Oder: kann man Bindbare Memeber auch selbst definieren?" steht noch. Da habe ich bisher noch nichts gefunden. |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Eigentlich sollen die LiveBindings auch unidirektional sein können.
Hier ![]() Zitat:
Es gibt den das Lookupfeld, welches den internen Wert (z.B. die ID) enthält und es gibt ein Textfeld, welches den Anzeigewert (deinen Text) enthält. Zitat:
![]() |
AW: Eindeutiger Bezeichner bei Livebindings zuordnen
Hallo,
habe es jetzt so gelöst, wie im Link unten: Meine note_id mit ListView1.ItemLookupData per Livebindings verbunden. Beim OnClick-Event dann zum aufrufen und prüfen z.B.
Delphi-Quellcode:
Mit AsInteger kommt eine Exception, obwohl note_id ein Integer ist.
procedure TForm1.ListView1ItemClick(const Sender: TObject;
const AItem: TListViewItem); var N_ID_Str: string; begin N_ID_Str := LinkFillControlToField1.BindList.GetSelectedValue.AsString; showmessage(N_ID_Str); end; Die Tabelle wurde so aufgebaut:
Code:
Falls jemand eine elegantere Lösung findet, bitte hier posten. Ansonsten ist das 'ne schnelle Lösung für das Problem. Nicht schön, aber selten^^
CREATE TABLE `notes` (
`note_id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `description` VARCHAR, `group_id` INTEGER, `note` TEXT ); Original-Lösung/Post: ![]() Interessant ist, daß im Original-Post der Benutzer "Eli M" vorschlägt, daß ganze per "Tag" zu erledigen. Das Problem ist eben, daß das angebotene Tag beim Livebinding das von der ListView an sich ist und eben nicht von Item.Tag -> genau das fehlt. Warum, weiß wohl nur Embarcadero... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz