AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Eindeutiger Bezeichner bei Livebindings zuordnen
Thema durchsuchen
Ansicht
Themen-Optionen

Eindeutiger Bezeichner bei Livebindings zuordnen

Ein Thema von Catbytes · begonnen am 23. Okt 2014 · letzter Beitrag vom 24. Okt 2014
Antwort Antwort
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#1

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 14:27
Was macht denn dieses Synch oder LockupData?
Von denen nirgendwo in der Hilfe was zu finden ist.
War das jetzt ironisch gemeint, um mich auf die richtige Fährte zu bringen? Ich checks echt grad nicht.^^

Aber müsste es nicht in deiner Datenbank-Query-Komponente irgendwo das ID-Feld angegeben werden können?
In der Datenbank-Query ist das Feld drin. Nur bringt mir das nix, wenn ich auf einem Eintrag in der ListView markiere und auf löschen klicke. Was soll dann gelöscht werden? Bzw. welche ID ist gemeint, da die ja nirgends in der ListView gespeichert ist - das ist ja mein Problem^^
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 14:38
War das jetzt ironisch gemeint, um mich auf die richtige Fährte zu bringen? Ich checks echt grad nicht.^^
Beides?

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.

In der Datenbank-Query ist das Feld drin. Nur bringt mir das nix, wenn ich auf einem Eintrag in der ListView markiere und auf löschen klicke. Was soll dann gelöscht werden?
Ich "hoffe" mal das LiveBinding ist intelligent genug die Verbindung zwischen ListView-Item und DatenSatz herzustellen. (vielleicht auch mit Hilfe der oben genannten Property)

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 15:06

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.
Leider erkennt er das nicht. Wie im Bild oben sieht man ja, dass die Verbindung nur unidirektional ist und nicht bidirektional.

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...
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 15:12
Könnte es sein, daß Item.LookupData dafür da ist, intern z.B. die ID deines Datensatzs zu erhalten?
note_id -> Item.LookupData
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 15:22
Könnte es sein, daß Item.LookupData dafür da ist, intern z.B. die ID deines Datensatzs zu erhalten?
note_id -> Item.LookupData
Ich glaube, ich stehe grad mächtig auf dem Schlauch und werde mal Back to Basic meine Nase in die Hilfe/Bücher stecken -.-

Trotzdem Danke!

Die Frage nach "Oder: kann man Bindbare Memeber auch selbst definieren?" steht noch. Da habe ich bisher noch nichts gefunden.
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#6

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 15:36
Eigentlich sollen die LiveBindings auch unidirektional sein können.
Hier http://www.delphipraxis.net/181829-l...bjectlist.html werden die Daten ja auch wieder zurück in ie Objekte geschrieben, wenn man sie im Grid ändert.

Ich glaube, ich stehe grad mächtig
Wie bei einer LookupComboBox.

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.

Die Frage nach "Oder: kann man Bindbare Memeber auch selbst definieren?" steht noch. Da habe ich bisher noch nichts gefunden.
Theoretisch ja, aber hab dazu auch noch keine verständlichen Informationen entdeckt. (hatte gerstern mal nachgesehn, ob es möglich wäre das fehlende LiveBinding für den TreeView nachzurüsten)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (24. Okt 2014 um 15:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: Eindeutiger Bezeichner bei Livebindings zuordnen

  Alt 24. Okt 2014, 18:44
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:
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;
Mit AsInteger kommt eine Exception, obwohl note_id ein Integer ist.

Die Tabelle wurde so aufgebaut:

Code:
CREATE TABLE `notes` (
   `note_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
   `description`   VARCHAR,
   `group_id`   INTEGER,
   `note`   TEXT
);
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^^

Original-Lösung/Post: https://forums.codegear.com/thread.j...4999&tstart=-1

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...
Catbytes
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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 by Thomas Breitkreuz