sqldb

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Michl
Beiträge: 2349
Registriert: Di 19. Jun 2012, 12:54

Re: sqldb

Beitrag von Michl »

Dann poste doch mal das Projekt oder noch besser ein minimiertes Bsp (als Zip), sonst raten alle nur ins Blaue...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: sqldb

Beitrag von hde »

Michl hat geschrieben:Dann poste doch mal das Projekt oder noch besser ein minimiertes Bsp (als Zip)

das würde ich auch sagen, denn deine Fehlermeldung ist ganz eindeutig:
Es gibt Fieldnames die dein select nicht bedient. Und irgendwo müssen die definiert sein, evtl. in der Query?

drunblut
Beiträge: 12
Registriert: Di 8. Dez 2009, 09:09

Re: sqldb

Beitrag von drunblut »

ich habe jetzt durch Eure Tips festgestellt, woran es liegen kann. Der User kann auf einer Form in einem dbgrid wählen, ob er einen neuen Datensatz eingeben oder einen bereits vorhandenen Datensatz auswählen möchte. Sucht er einen vorhandenen Datensatz öffnet sich das Grid mit Name, Vorname, Geburtsdatum. Durch Klick in eine Zeile öffnet sich eine neue Form mit dem ausgewählten Datensatz, wobei jetzt weitere dbedit-Felder mit Angaben zu diesem Patienten gezeigt werden (Patnr, Aufnahmedatum, Entlassungsdatum usw.). Ich hatte alle dbedit-Felder im Objektinspektor mit den Datenbankfeldern verbunden. Wenn ich jetzt in der ersten Form meine select-Abfrage (Name, Vorname, Geburtsdatum) starte, dann werden den anderen dbedit-Feldern in der zweiten Form nicht mehr die geforderten Werte zugewiesen und es kommt zu der Fehlermeldung. Ich hatte die Verbindungen der dbedit-Felder zu den Datenbankfeldern gelöscht, dann funktionierte die select-Abfrage. Ich stelle jetzt die Verbindungen der dbedit-Felder mit den Datenbankfeldern zur Laufzeit her. Dann funktioniert es. Das kommt mir irgendwie sehr umständlich vor, aber es funktioniert wenigstens. Ich bin Euch allen für Eure Tips sehr dankbar!!!

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: sqldb

Beitrag von hde »

Klar, das ist der Grund.
Du musst aber nicht alle DBEdits einzeln ab- und ankuppeln, das geht auch über einen zweiten TDataSource

Christian
Lazarusforum e. V.
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: sqldb

Beitrag von Christian »

@hde, kannst mir den Fehler mal erklären ?
Ist auf der 2. Form die ID mit drauf oder was ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: sqldb

Beitrag von hde »

Christian hat geschrieben:@hde, kannst mir den Fehler mal erklären ?
Ist auf der 2. Form die ID mit drauf oder was ?

Wenn er auf der zweiten Form DBEdits mit der Datasource der ersten Form verbindet und Fieldnames einträgt, dann muss der Select (die Query) der die Datasource (und damit auch die DBEdits der zweiten Form) beliefert auch die Values dieser Fieldnames liefern, sonst kommen die in der Frage genannten Fehlermeldungen. Da ist es dann völlig egal welche SQL-Tools er einsetzt.
hde

Christian
Lazarusforum e. V.
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: sqldb

Beitrag von Christian »

Das war mir schon klar, ich geh aber davon aus das er die ID auch auf der 2. Form nicht braucht. Sonst müsste er sie ja in die Abfrage mit aufnehmen was er ja aber nicht will.
Aber genau das war der Denkfehler ja ?
Dann ist es vllt die beste Lösung ein eigenes Query auf der 2. Form einzusetzen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: sqldb

Beitrag von hde »

Christian hat geschrieben:Dann ist es vllt die beste Lösung ein eigenes Query auf der 2. Form einzusetzen.

Natürlich kann er auch eine zweite Query nehmen. Ob die nun auf der ersten oder zeiten Form oder einem Datamodul steht ist dabei egal.
Es reicht aber auch, wenn er zwei Datasource einsetzt. Eines zum DBGrid und das andere zu den DBEdits. Er muss dann dynamisch nur immer das eine oder andere mit der Query verbinden. Das ist Geschmackssache.
Ich nehme meist für die DBGrids und die DBEdits getrennte Queries. Weil das sauber ist und ich eh für DBGrids meist selects mit joins verwende.
hde

Christian
Lazarusforum e. V.
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: sqldb

Beitrag von Christian »

Dann muss er aber das SQL im Code austauschen, das ist umständlicher.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: sqldb

Beitrag von hde »

Viele Wege führen nach Rom. :wink:
aber wenn er in verschiedenen selects unterschiedliche Felder abfragt und in DBEdits anzeigen will braucht er entweder mehrere Forms oder muss etwas code schreiben. Nur bei reinem DBGrid ist's etwas einfacher, nur der nimmt automisch die Felder aus der Query, DBEdit eher nicht.

drunblut
Beiträge: 12
Registriert: Di 8. Dez 2009, 09:09

Re: sqldb

Beitrag von drunblut »

Liebe Leute,

vielen Dank noch einmal für Eure Hilfe. Durch Eure Diskussion ist mir noch einmal einiges klarer geworden. Ich habe es jetzt auch mit einer Extra Query gemacht. Das funktioniert wunderbar!!!

Antworten