[Erledigt] Zeos schmiert ab

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

[Erledigt] Zeos schmiert ab

Beitragvon MacWomble » 21. Aug 2018, 17:17 [Erledigt] Zeos schmiert ab

Hallo,

im Code
Code: Alles auswählen
          if qryAuftrag.State = dsEdit  then
          begin
            qryAuftrag.Post; //<<< hier hängt das Programm
            qryAuftrag.ApplyUpdates;
          end;   


steigt mein Programm komplett aus. Der Debugger zeigt nur ............ hinter den Adressen an. Dies tritt allerdings nur mit den Zeos-Versionen der letzten 6 Monate auf.
Wenn ich das Release starte, kommt an der Stelle Access Violation.

Hat jemand hierzu eine Idee, wie ich den Fehler weiter eingrenzen oder beseitigen kann?

Hier mal der vollständige Programmteil:
Code: Alles auswählen
 
   if IDAuftrag > 0 then
    begin
      OpenSQLSet(qryAuftrag, 'Select * from Auftraege Where idauftrag = ' + IntToStr(IDAuftrag));
 
      F := TfrmAuftrag.Create(nil);
 
      if qryAuftragsListe.FieldByName('colorn').AsVariant <> NULL then
        F.pnlHeader.Color := qryAuftragsListe.FieldByName('colorn').AsVariant;
 
      try
        F.ShowModal;
        if DoSave then
        begin
          if qryAuftrag.State = dsEdit  then
          begin
            qryAuftrag.Post;
            qryAuftrag.ApplyUpdates;
          end;
          qryAuftragsListe.Refresh;
          qryAuftragsListe.Locate('idauftrag', qryAuftrag.FieldByName('idauftrag').AsInteger, []);
          Result := True;
        end
        else
        begin
          qryAuftrag.CancelUpdates;
          Result := False;
        end;
      finally
        FreeAndNil(F);
      end;
    end;               


In der Form befinden sich TDBMemo und TDBEdit-Felder, welche an die DB angebunden sind. Die DB ist MYSQL 5.7
Zuletzt geändert von MacWomble am 28. Aug 2018, 10:43, insgesamt 2-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 21. Aug 2018, 19:08 Re: Zeos schmiert ab

Zeos mit debuginfos gebaut ? Dann solltest du ja eine exception haben und die mit dem Stacktrace mal ansehen was los ist.

Eine Vermutung ins blaue ist, das der Probleme mit dem automatischen Erzeugen des Update Statements hat. Bei Zeos mal sehen ob du mit dem SQLMonitor siehst ob da überhaupt ein Statement gebildet und gesendet wird.

Man darf nicht vergessen, die automatik muss aus dem SQL ja ein updatestatement ableiten. Dazu muss es ja auch nach den PK suchen und dann ein Statemet bilden.Dazu sollte das Sql Statement sich auf keine view (oder join) beziehen. In der Vergangenheit sind so eigentümliche Exception beim Generieren des internen Updatestatements passiert.

Habe es früher eher bei SqlDb als Problem gehabt, deswegen habe ich Zeos verwendet. Mittlerweile sind Zeos und SqlDb in etwa gleich stark.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3501
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 21. Aug 2018, 20:04 Re: Zeos schmiert ab

- weder im ZEOS-Log noch im Debugmodus komme ich an das Problem heran.
- das Update bezieht sich auf keine Join und keine View (deswegen habe ich qryAuftrag (select auf einzelnen Datensatz in einer Tabelle) zum Editieren und zur Anzeige im DBGrid (nach dem Update von qryAuftrag) dann qryAuftragsliste <- und da habe ich Joins drin

Im Moment die einzige funktionierende Lösung: alte ZEOS-Version verwenden - aber das finde ich auch nicht wirklich OK
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 22. Aug 2018, 07:06 Re: Zeos schmiert ab

Die genaue Stelle, wo es kracht ist hier (ZAbstractDataset):

Code: Alles auswählen
 
procedure TZAbstractDataset.ApplyUpdates;
begin
  if not Active then
    Exit;
 
  Connection.ShowSQLHourGlass;
  try
    if State in [dsEdit, dsInsert] then
       Post;                                                    //<==================== hier kommt der Fehler, da Änderungen stattfanden, ist State = DSEDIT
 
    DoBeforeApplyUpdates; {bangfauzan addition}
 
    if CachedResultSet <> nil then
      if Connection.AutoCommit and
        not ( Connection.TransactIsolationLevel in [tiReadCommitted, tiSerializable] ) then
        CachedResultSet.PostUpdates
      else
        CachedResultSet.PostUpdatesCached;
    UpdateCursorPos;
    if not (State in [dsInactive]) then
      Resync([]);
 
  DOAfterApplyUpdates; {bangfauzan addition}
 
  finally
    Connection.HideSqlHourGlass;
  end;
end;                               
 


...und mit Zeosdbo SVN Rev 3942 tritt das Problem noch nicht auf !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 22. Aug 2018, 07:48 Re: Zeos schmiert ab

Du kannst die Frage auch mal hier stellen: http://zeoslib.sourceforge.net/

TZUpdateSQL kann man verwenden, falls die TZQuery Probleme hat. Da kann man dan Feintunen was bei Update/Insert/Delete/Refresh passieren soll. Das könntes du dann ev. mit der Querylist direkt arbeiten, weil du ja weisst wie und welche Tabellen du ändern musst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3501
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 22. Aug 2018, 20:23 Re: Zeos schmiert ab

Ich habe das bereits im Zeos-Forum gepostet, aber dort wird es noch nicht angezeigt. Die prüfen dort jeden Eintrag manuell, bevor er veröffentlicht wird...

Das Problem betrifft ca. 40 Tabellen eines Projekts mit ca. 100 ZQuerys, was ich ungern alles neu aufbauen möchte. Ich verwende einfach die ältere ZEOS-Version, welche ja funktioniert - zumindest bis ich eine Lösung gefunden habe.

Ich entwickle nun seit 35 Jahren Datenbanksysteme, aber solche Probleme sind mir nicht einmal bei MS VisualBasic unter gekommen :shock: (dafür aber einige andere ... :D ). Schade eigentlich. - Aber keine Angst: Lazarus ist dennoch mein Favorit - und wird es vermutlich auch bleiben. :P

Leider taugt der Debugger bei Lazarus bzw. der GDB nicht sonderlich viel, sonst würde man den Fehler bestimmt besser lokalisieren können. Ich habe keine Ahnung, was ich noch überwachen könnte, um die Ursache meines Problems zu finden. Da die Routine in den ZEOS-Versionen gleich ist, muss der Fehler an einer früheren Stelle auftreten. Da es auch nicht funktioniert, wenn ich den Modus händisch auf edit setze, liegt es vermutlich auch nicht an der Automatik. Sicher ist nur: irgendwo stimmt was nicht - im Programm oder meinem Kopf ;-)
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 22. Aug 2018, 20:38 Re: Zeos schmiert ab

MacWomble hat geschrieben:Ich habe das bereits im Zeos-Forum gepostet, aber dort wird es noch nicht angezeigt. Die prüfen dort jeden Eintrag manuell, bevor er veröffentlicht wird...

Das ist am Anfang normal, ab ein paar Posts wirst du freigeschalten :-)

Wenn du das auf ein Beispiel runterbrechen kannst, so kann ich gerne mir das mal ansehen. Kannst du so ein Beispiel mal wirklich herunterbrechen auf ein einfaches Beispiel. Ich habe kein Problem auch den entsprechenden DB Server auf meinem Computer zu installieren. Nur bitte gib mir die (Create-)Statements dazu.

Übrigends habe ich wieder festgestellt, Debugger Einstellung ist nicht Debugger Einstellung. Die verschiedenen Varianten haben aktuell noch SInn und verhalten sich nicht wirklich gleich. GDB ist das Problem, da der für C gemacht wurde und viel vom Pascal halt nicht passt, da gibt es ja die abenteuerlichsten Workarounds und interenen Vorgänge damit wir überhaupt was sehen, was ich so mitbekommen habe :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3501
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 22. Aug 2018, 20:49 Re: Zeos schmiert ab

Das mit GDB habe ich auch so verstanden. Bisher hat er mir ja gute Dienste geleistet, aber in diesem speziellen Fall komme ich damit nicht zum Ziel.

Danke für das Hilfsangebot, aber ich fürchte die Sache ist zu komplex um ein einfaches Beispiel zu erstellen. Im Endeffekt mache ich nichts anderes, als eine Form zu starten, welche mit DBEdit, DBLookupCombo und DBMemo meine Daten aus der DB zum Editieren bereit stellt. Das funktioniert mit der alten ZEOS einwandfrei. Alle neueren Releases verursachen Probleme:
1. Das oben geschilderte
2. mit inaktiven DBEdits
3. bei der Auswahl aus eine DBLookupCombo
Es ist durchaus denkbar, dass die Komponente probleme mit der Autoedit-Einstellung hat, aber das sollte dann ja auch in der Komponente korrigiert werden.
Denkbar wären aber auch Problem in Verbindung der Strukturierung meines Projekts in Zahreiche Datenmodule (Adresse, Auftrag usw.) und den dynamischen Forms.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 22. Aug 2018, 21:29 Re: Zeos schmiert ab

Was mir anhand der vorliegenden Daten nicht ganz eingeht ist der unspezifische Fehler. Da du in DsEdit bist, sollte ein Updatestatement erzeugt werden. Wenn du im SqlMonitor nichts siehst, so muss das vorher passieren. Deswegen der Vorschlag, das dieser einen Query ein TZUpdateSql beiseite stellst und dort die Statements händisch einträgst. Ist das Problem weg und dasUpdatestatemnt ausgeführt liegt es wahrscheinlich in SQL Generator.

Ist zeos wirklich mit Debugsymbolen gebaut? Weil ich bekomme bei mir immer Info wo es innerhalb von Zeos die Exception gegeben hat. Ich fange mit der Zeos Version und der Svn nummer von dir nicht wirklich viel an. Ist das 7.2.4 stable oder 7.3 trunk ?

BTW Die exception ist im abstract dataset, dann mal nach dem spezielisierten Dataset suchen und dort die Post routine, dort kann man weiterdebuggen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3501
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 22. Aug 2018, 21:43 Re: Zeos schmiert ab

af0815 hat geschrieben:Ist zeos wirklich mit Debugsymbolen gebaut? Weil ich bekomme bei mir immer Info wo es innerhalb von Zeos die Exception gegeben hat. Ich fange mit der Zeos Version und der Svn nummer von dir nicht wirklich viel an. Ist das 7.2.4 stable oder 7.3 trunk ?


Ich denke schon, muss ich aber nochmal prüfen.
Die Version welche funktioniert ist 16 Monate alt, alle danach haben die Probleme.
Außer der SVN Rev 3942 habe ich keine Versionsnummer, da PilotLogic diese leider ändert (Ich verwende CodeTyphon)
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 23. Aug 2018, 07:10 Re: Zeos schmiert ab

Ich verwende immer Lazarus und die Pakete über OPM. Bei Codetyphoon hast du auch öfters das es dort Pakete gibt, wo das Copyright nicht wirklich klar ist und das kann ich nicht brauchen. Auch die Art und Weise wie die originalen Pakete umbenannt werden entspricht nicht meinen Vorstellungen.
Ich verwende Lazarus installiert mit fpcupdeluxe und fixiere teilweise die Versionen. Vor allen kann ich so mehrer Versionen am Rechner haben und direkt testen ob es Probleme mit einer neuen Version gibt.
Alle anderen Pakete die nicht über OPM kommen, werden in lokalen GIT repros gehalten, damit ich eine direkte Kontrolle von Änderungen habe. Weil die Projekte mūssen beim Kunden funktionieren, auch wenn sich was an den Paketen geändert hat. Weil die Produktivversionen immer ineinem extra Branch sind. So ist es egal ob sich etwas geändert hat.
Die Version steht normalerweise im Objektinspector drinnen unter Version. Beispiel "7.2.1-rc" bei mir für eine ältere Version.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3501
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 23. Aug 2018, 07:39 Re: Zeos schmiert ab

Auf CT möchte ich hier nicht eingehen, darum geht es nicht.

Wie stelle ich sicher, dass ZEOS im Debmodus kompiliert wird? Ist dies nicht automatisch, wenn ich das Projekt mit Debugsymbolen erzeuge?
Zuletzt geändert von MacWomble am 23. Aug 2018, 07:42, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon af0815 » 23. Aug 2018, 07:41 Re: Zeos schmiert ab

MacWomble hat geschrieben:Auf CT möchte ich hier nicht eingehen, darum geht es nicht.

Wie stelle ich sicher, dass ZEOS im Debmodus kompiliert wird? Ist dies nicht automatisch, wenn ich das Projekt mit Debugsymbolen erzeuge?
IMHO Nein

DU musst das Paket extra mit Debug kompilieren. In den Eigenschaften des Paketes die Debuggersachen anwählen und dann das Paket extra kompilieren. Zumindest bei Lazarus.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3501
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon MacWomble » 23. Aug 2018, 07:49 Re: Zeos schmiert ab

Ok, im Prinzip ja logisch :oops:

Nein, dann habe ich den Debugger nicht in Zeos aktiv. Ich werde das Problem nochmals angehen, sobald es die Zeit erlaubt.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon MacWomble » 23. Aug 2018, 11:18 Re: Zeos schmiert ab

Ich habe wie im Bild den Debugger aktiviert und Zeos kompiliert. Dennoch bekomme ich keine Debuginfo bzw nur ein Assemblerfenster ohne Code. Muss ich da sonst noch etwas beachten?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 610
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19 Cinnamon / CodeTyphon Generation V Plan 6.60 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried