Zeos und Lazarus 1.6.4
Zeos und Lazarus 1.6.4
Hallo Forengemeinde,
seit dem Lazarus Update auf Version 1.6.4 (32Bit, Windows-Version) mit Zeos (7.2 Rev. 3986) habe ich folgendes Problem :
Tabelle Test : Var1, Var2, Var3, Var4, Var5. Variablen Typ gleichgültig ...
Wenn ich in einem TZQuery als SQL Script z.B. "select * from ..." verwende ist alles OK,
verwende ich eine Teilmenge z.B. "select Var1, Var2 from ..." wird zur Laufzeit der Fehler "Field not found : Var3" ausgegeben,
also das nächste Feld das nicht in der Aufzählung enthalten ist.
Selbe Konfiguration mit Lazarus 1.6.2 läuft problemlos ...
Hat jemand eine Idee ?
seit dem Lazarus Update auf Version 1.6.4 (32Bit, Windows-Version) mit Zeos (7.2 Rev. 3986) habe ich folgendes Problem :
Tabelle Test : Var1, Var2, Var3, Var4, Var5. Variablen Typ gleichgültig ...
Wenn ich in einem TZQuery als SQL Script z.B. "select * from ..." verwende ist alles OK,
verwende ich eine Teilmenge z.B. "select Var1, Var2 from ..." wird zur Laufzeit der Fehler "Field not found : Var3" ausgegeben,
also das nächste Feld das nicht in der Aufzählung enthalten ist.
Selbe Konfiguration mit Lazarus 1.6.2 läuft problemlos ...
Hat jemand eine Idee ?
Zuletzt geändert von aebding am Mo 10. Apr 2017, 13:33, insgesamt 1-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Zeos und Lazarus 1.4.6
Schon geschaut ob da nicht fixe Felddefinition hinterlegt sind ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Zeos und Lazarus 1.4.6
... fixe Felddefinition ???
und wie gesagt, die selbe Konfiguration lief bis Lazarus 1.6.2 ohne Probleme ...
und wie gesagt, die selbe Konfiguration lief bis Lazarus 1.6.2 ohne Probleme ...
-
- Beiträge: 725
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Zeos und Lazarus 1.4.6
Es sieht danach aus dass du Var3 irgendwo verwendet hast und nachdem es jetzt in der Teilmenge nicht enthalten ist wird Fehlermeldung erzeugt.aebding hat geschrieben: ...
Wenn ich in einem TZQuery als SQL Script z.B. "select * from ..." verwende ist alles OK,
verwende ich eine Teilmenge z.B. "select Var1, Var2 from ..." wird zur Laufzeit der Fehler "Field not found : Var3" ausgegeben,
Lösung
1. Suche nach DBControl in dem Var3 als Feld eingetragen ist und entferne es.
2. Suche in persistenten Feldern von dein Query(=wo du SQL-ABfrage verwendest) nach Var3 und entferne es.
(Rechtsclick auf TZQuery > Felder bearbeiten)
Am besten öffne LFM-Datei in Texteditor und such nach Var3
Re: Zeos und Lazarus 1.6.4
Danke für die schnelle Anwort aber ...
Rechner 1, Lazarus 1.6.2 -> Anwendung läuft !!
Rechner 2, Lazarus 1.6.4 -> beschriebener Fehler !!
Greife von beiden Rechnern auf die selbe Anwendung zu ...
Rechner 1, Lazarus 1.6.2 -> Anwendung läuft !!
Rechner 2, Lazarus 1.6.4 -> beschriebener Fehler !!
Greife von beiden Rechnern auf die selbe Anwendung zu ...
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Zeos und Lazarus 1.6.4
Was ist, wenn in Lazarus 1.6.2 noch ein Fehler in den DB Komponenten war, der mit 1.6.4 gefixt wurde ?
Kannst ja auch 'select Va1, Var2, 'Dummy' as Var3 from ..' probieren und sehen, ob irgendwo der Dummy auftaucht.
Auch mit einem guten Suchtool kann man im Source nach Var3 suchen. Das muss ja in einer pas oder lfm ja auftauchen.
Andreas
Kannst ja auch 'select Va1, Var2, 'Dummy' as Var3 from ..' probieren und sehen, ob irgendwo der Dummy auftaucht.
Auch mit einem guten Suchtool kann man im Source nach Var3 suchen. Das muss ja in einer pas oder lfm ja auftauchen.
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Zeos und Lazarus 1.6.4
Dann würde der Fehler bereits seit Lazarus 0.9.? existieren, mein Projekt läuft seit 2011 ...
Als Fehler wird immer das erste, nicht in der select-Anweisung enthaltene, Tabellenfeld ausgegeben.
z.B. "select Var1, Var2, Var3 from ..." -> "Field not found : Var4"
"select Var1, Var3, Var4 from ..." -> "Field not found : Var2"
usw.
Als Fehler wird immer das erste, nicht in der select-Anweisung enthaltene, Tabellenfeld ausgegeben.
z.B. "select Var1, Var2, Var3 from ..." -> "Field not found : Var4"
"select Var1, Var3, Var4 from ..." -> "Field not found : Var2"
usw.
Re: Zeos und Lazarus 1.6.4
Was machst du mit der Query? Hängt da vielleicht ein DBGrid dran, in dem alle Felder fest "verkabelt" sind? Wenn nicht, schreibe eine kleine Demo, in der alles weggelassen wird, außer der Abfrage, poste sie her, falls der Fehler hier auch auftritt.
Re: Zeos und Lazarus 1.6.4
Ich habe jetzt mal ein Beispiel angehängt.
Normalerweise arbeite ich nicht mit einem DBGrid aber für das Beispiel ist das OK. Im ZQuery1 sind alle Felder der Tabelle angelegt (select *).
Ich benutze das um bei bestimmten Abfragen nur Teilmengen in den Speicher zu laden, normalerweise werden alle Felder geladen ...
Programm arbeitet bis Lazurus 1.6.2 und Zeos 7.2 Rev. 3986 mit Firebird 2.5 problemlos, ab Lazarus 1.6.4 -> Fehler !!
Normalerweise arbeite ich nicht mit einem DBGrid aber für das Beispiel ist das OK. Im ZQuery1 sind alle Felder der Tabelle angelegt (select *).
Ich benutze das um bei bestimmten Abfragen nur Teilmengen in den Speicher zu laden, normalerweise werden alle Felder geladen ...
Programm arbeitet bis Lazurus 1.6.2 und Zeos 7.2 Rev. 3986 mit Firebird 2.5 problemlos, ab Lazarus 1.6.4 -> Fehler !!
- Dateianhänge
-
DB-Test.rar
- Beispiel ...
- (127.26 KiB) 90-mal heruntergeladen
Re: Zeos und Lazarus 1.6.4
Wenn jetzt noch die fbd-Datei mit dabei wäre, könnte man etwas machen, aber so: weiterhin nur mit den Schultern zucken...
Re: Zeos und Lazarus 1.6.4
Sorry, diemal mit Datenbank ...
- Dateianhänge
-
DB-Test.rar
- (6.85 MiB) 101-mal heruntergeladen
Re: Zeos und Lazarus 1.6.4
Wie oben schon von anderen vermutet wurde, hast du persistente Felder definiert, die aber beim Öffnen der Abfrage nicht mehr vorhanden sind, weil sie im SQL-Text fehlen. Ich kann bestätigen, dass Laz 1.6.2 das schluckt, wobei allerdings das DBGrid alle Felder anzeigt und die fehlenden leer lässt; Laz trunk meldet einen Fehler. Ersetze ich ZEOS durch SQLDB meldet auch Laz 1.6.2 einen Fehler. Delphi konnte ich nicht testen, weil ich die Rückumwandlung des Projekts nicht hingekriegt habe - ich erinnere mich aber an einige hässliche Erfahrungen mit Delphi, das permanent Probleme machte, wenn persistente Felder nicht korrekt definiert waren oder fehlten. Daher habe ich persistente Felder eigentlich immer vermieden, weil sie spätere Änderungen am Feldtyp o.ä. praktisch unmöglich machen.
Ich kann mir nicht vorstellen, dass es richtig ist, wenn persistente felder vorhanden sind, die aber in der Abfrage fehlen. Meiner Meinung nach lag bis einschließlich 1.6.2 ein Fehler vor, der dann offenbar irgendwann inzwischen behoben worden ist.
P.S.
Statt mit persistenten Feldern würde ich mit normalen Feldern arbeiten, auf die ich über FieldByName zugreife. Nur wenn die Felder in einer Schleife über viele Datensätze abgefragt werden, würde ich vor der Schleife lokale Variablen für die Felder definieren:
Ich kann mir nicht vorstellen, dass es richtig ist, wenn persistente felder vorhanden sind, die aber in der Abfrage fehlen. Meiner Meinung nach lag bis einschließlich 1.6.2 ein Fehler vor, der dann offenbar irgendwann inzwischen behoben worden ist.
P.S.
Statt mit persistenten Feldern würde ich mit normalen Feldern arbeiten, auf die ich über FieldByName zugreife. Nur wenn die Felder in einer Schleife über viele Datensätze abgefragt werden, würde ich vor der Schleife lokale Variablen für die Felder definieren:
Code: Alles auswählen
var
FirmenNrField: TField;
ArtikelNrField: TField;
begin
FirmenNrFeld := ZQuery1.FieldByName('FirmenNr');
ArtikelNrFeld := ZQuery1.FieldByName('ArtikelNr');
ZQuery1.First;
while not ZQuery1.EoF do begin
// mache etwas mit FirmenNrFeld und ArtikelNrFeld
ZQuery1.Next;
end;
Re: Zeos und Lazarus 1.6.4
Hallo Leute,
dieser "Trick" war für mich immer eine schnelle Möglichkeit eine Teilmenge einer Datenbank-Tabelle abzufragen ...
Das hat mich jetzt eingeholt und ich darf nun ca. 150 Units ändern, aber damit bin ich für die Zukunft sicher !!??
Vielen Dank für Eure Hilfe ...
PS
Wie kann ich diesen Zweig auf erledigt setzen ...
dieser "Trick" war für mich immer eine schnelle Möglichkeit eine Teilmenge einer Datenbank-Tabelle abzufragen ...
Das hat mich jetzt eingeholt und ich darf nun ca. 150 Units ändern, aber damit bin ich für die Zukunft sicher !!??
Vielen Dank für Eure Hilfe ...
PS
Wie kann ich diesen Zweig auf erledigt setzen ...