AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DBLookup und Insert / Append
Thema durchsuchen
Ansicht
Themen-Optionen

DBLookup und Insert / Append

Ein Thema von rokli · begonnen am 3. Dez 2023 · letzter Beitrag vom 6. Dez 2023
Antwort Antwort
Seite 1 von 2  1 2      
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#1

DBLookup und Insert / Append

  Alt 3. Dez 2023, 10:23
Datenbank: MSSQL • Version: 2022 • Zugriff über: FireDAC
Moin,
ich habe seid ewigen Zeit mal wieder einige DBLookUpComboBoxen auf einer Form verwendet, um Daten aus einer Tabelle mit Schlüsseln aus einer anderen Tabelle anzuzeigen.

Beispiel:
Als Beispiel dient eine mini Adressverwaltung

Tabelle tAdresse:
Name
Vorname
Strasse
Plz

tAdresse enthält das (Schlüssel-)Feld PLZ

Tabelle tPlzOrt
Plz
Ortsname

tPLZOrt.Plz ist die Referenz auf tAdresse.Plz

Über die DBLookUpComboBox wird aufgrund des PLZ Feldes auf der Maske der Ort korrekt angezeigt.
Die anderen (Edit-)Felder werden aus tAdresse gefüllt.


Problem:
Wenn ich einen neuen Datensatz in tAdresse einfügen möchte, leere ich die Edit-Felder. Wenn dann in der DbComboLookUpComboBox die zugehörige PLZ für den neuen Datensatz ausgewählt wird, wird (quasi rückwärts) der Satzzeiger der tAdresse verändert und damit ist die Neueingabe in den Feldern weg, da die Edit-Felder mit den Inhalten des "gefunden" Datensatzes gefüllt werden.

Kann man das Verhalten abschalten, oder ist TDbComboLookupBox dafür nicht geeignet?
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#2

AW: DBLookup und Insert / Append

  Alt 3. Dez 2023, 11:27
Wenn dann in der DbComboLookUpComboBox die zugehörige PLZ für den neuen Datensatz ausgewählt wird, wird (quasi rückwärts) der Satzzeiger der tAdresse verändert
Das sollte nicht sein und ist es in der Regel auch nicht. Kannst du ein kleines Beispiel deiner Controls und ihrer Eigenschaften erstellen, aus dem die Eigenschaften und Verlinkungen der Controls ersichtlich sind?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: DBLookup und Insert / Append

  Alt 3. Dez 2023, 11:44
Hier ist mal einer der Objektinspektoren in der Anlage.

Besser wird es, wenn ich beim Insert die Verbindung zur Tabelle tAdresse im DBLookupComboBox trenne:

tAdresse.DataSource := nil;

Dann kann ich den INSERT durchführen und trotzdem aus den DBLookupComboboxen die ID über nehmen und durchs INSERT in den neuen Satz eintragen.
Danach mit

tAdresse.DataSource := dsqAdresse;

wieder einschalten.
Miniaturansicht angehängter Grafiken
2023-12-03-11_35_36-sbuch-delphi-10.4-fkonten.png  
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#4

AW: DBLookup und Insert / Append

  Alt 3. Dez 2023, 12:13
Heißen das verknüpfende Feld in beiden Tabelle iKtoArt?

Hast du noch irgendwelche Events in den DataSets verdrahtet?

Solche Probleme sind in der Regel nicht zu analysieren, wenn man die vermeintliche Ursache (hier TDBLookupComboBox) isoliert betrachtet. Meistens liegt es an irgendwas drumherum. Deswegen meine immer wiederkehrenden Fragen nach mehr Kontext.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
535 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: DBLookup und Insert / Append

  Alt 3. Dez 2023, 12:48
PLZ Ort ist auch nie eine eindeutige Beziehung. Viele Orte haben mehrere PLZ; auch gibt es dann noch eine Plz für mehrere Orte. Vielleicht wird bei Lookup dann ein schon vorhandener Datensatz aktiviert?
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Alt 3. Dez 2023, 16:49     Erstellt von Louisowers
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: DBLookup und Insert / Append

  Alt 5. Dez 2023, 12:06
Hallo und sorry, dass ich jetzt erst schreibe .. war viel zu tun.

Die Referenzen in den Tabellen bekommen immer gleiche Namen. iKtoArt (Ertragkonto = 1, Aufwandskonto = 2 und Neutralkonto =3) wird sowohl in der Tabelle tKtoArt (Kontoarten-Tabelle) und tKonto (Konto-Tabelle) verwendet.

Auf der Form:
Es gibt neben den DBLookUpComboBoxen noch ein Grid, was den Inhalt von tAdressen (um beim Beispiel zu bleiben) anzeigt. Daneben gits einige Edit-Felder, die DB-Inhalte anzeigen und über Buttons <neuer Satz>, <speichern> und <löschen> die Software bedienbar machen.
(Ja ich programmiere noch einzelne Daten-Edit-Felder und keine Universal-Grids, in den alles abgewickelt wird.)

Also im DataSource.OnDataChange der Tabelle tAdressen wird das füllen der Edit-Felder ausgelöst. Damit erreiche ich ja, wenn der Satzzeiger im DbGrid bewegt wird, dass die Edit-Felder auf der Maske aktualisiert werden; der Inhalt der DBComboLookUpBoxen kommen ja "von selbst".

@Neumann: Keine DB-Tabelle sieht bei mir tatsächlich wie in tAdresse und tPLZOrt beschrieben aus. Das Beispiel mit PLZ würde ich so, in real, nie ausführen. Daher Beispiel.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#7

AW: DBLookup und Insert / Append

  Alt 5. Dez 2023, 12:38
Wie schon gesagt, das passiert in der Regel nicht. Ich kann aber anhand der bisherigen Informationen so nicht sehen, was der Auslöser dafür ist.

Also im DataSource.OnDataChange der Tabelle tAdressen wird das füllen der Edit-Felder ausgelöst.
Sind das denn keine datensensitiven Controls? Bei denen wäre das ja nicht nötig.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: DBLookup und Insert / Append

  Alt 5. Dez 2023, 12:57
das ist korrekt, dass sind TEdit Felder, die über eine Procedure mit Edit1.Text := qryAdressen.FieldByName('Name').AsString z. B. gefüllt werden.

Ich werde das mal auf TDbEdit Felder umbauen und ausprobieren.

Danke, Uwe.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#9

AW: DBLookup und Insert / Append

  Alt 5. Dez 2023, 13:01
Ich glaube aber nicht, dass das irgendwas mit dem Problem zu tun hat. War nur eine generelle Frage.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: DBLookup und Insert / Append

  Alt 5. Dez 2023, 14:26
das ist korrekt, dass sind TEdit Felder, die über eine Procedure mit Edit1.Text := qryAdressen.FieldByName('Name').AsString z. B. gefüllt werden.

Ich werde das mal auf TDbEdit Felder umbauen und ausprobieren.
Wäre es nicht sinnvoller die TDBLookupCombobox in eine gewöhnliche umzubauen oder so?
Ralph

Geändert von Jumpy ( 5. Dez 2023 um 14:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz