| Autor |
Beitrag |
Josef-B
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Mi 20.04.11 06:01
Hallo,
ich hab folgendes Problem:
Ich hab Tdbedit Felder an ein TIB-Dataset.
Das Dataset hat noch ein Detail-Dataset verknüpft.
Wenn ich ein Master-Feld im TDBEdit ändern möchte bekomme ich eine Zugriffsverletzung.
Was kann das sein?
Kann man anhand der Zahlen in der Fehlermeldung herausbekommen, was es genau für ein
Fehler ist?
Die Meldung lautet genau: Zugriffsverletzung bei Adresse 0082C228. Lesen von Adresse
000000D0
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 20.04.11 06:45
Ist das IBDataset bzw. das Masterfield auch erzeugt worden ?
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
Josef-B 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Mi 20.04.11 06:52
also ich erzeuge es ja nicht zur Laufzeit.
Hab die entsprechenden Komponenten ja auf meinem Formular
Wie kann ich es feststellen?
Wenn ich auf das TDbEdit klicke wird das Event on Enter ausgelöst.
Sobald ich aber was eingebe in dem Feld kommt die Zugriffsverletzung.
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 20.04.11 07:01
Zeig mal etwas von deinem Code (wo der Fehler auftritt und ggf. was du zum erzeugen/Öffnen des Datasets gecodet hast)
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 20.04.11 07:31
Das endet hier nur in einem Ratespiel.
Es gibt zu viele mögliche Gründe für so einen Fehler.
Hast du das denn schon mal mit dem Debugger geprüft, um die Fehlerstelle einzugrenzen?
Ich würde dabei bevorzugt erst mal die Stellen prüfen, wo sich Änderungen bei der Eingabe auswirken:
- OnChange-Ereignisse
- Abfangen von Tastendruck (z.B. OnKeyPress)
- Ereignisse in den zugehörigen DataSets und DataSources
- ...
|
|
Josef-B 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Mi 20.04.11 08:19
Hört sich jetzt völlig verrückt an, ich weiss:
Die Daten des Details werden in einem Devexpress QuantumGrid angezeigt.
Das Liegt auf einem Pagecontrol auf dem zweiten Tabsheet
Auf dem ersten Tabsheet die Master-Daten mit den DBedit Feldern.
Das komische ist, wenn ich jetzt das Grid mal rausnehme, aber die Dataset drin lasse,
also die Detail-Daten nicht angezeigt werden, dann kommt die Zugriffsverletzung nicht.
Und sie kommt auch nicht, wenn man einmal auf die zweite Seite des Pagecontrols geht und
dann zurück auf die erste.
Wieso kommt die Zugriffsverletzung denn bei den Master-Daten wenn das Grid die Detail-Daten
darstellt.
Bin da total verwirrt.
Irgendwie denke ich es hängt mit dem Grid zusammen.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 20.04.11 08:46
- Benutzt du vielleicht persistente Felder, die auch noch Einstellungen (Formatierung, etc.) haben?
- Aktivierst du die Details-Daten vielleicht erst, wenn du die Seite im PageControl wechselst?
|
|
Josef-B 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: Mi 20.04.11 09:18
Jasocul:
Ich denke ich habs: Dein Tip mit Key down wars
Hatte die ganze Zeit auch bei den Datenbank-Kompos und so geschaut.
Er wollte auf das View im Grid zugreifen, das ging nicht.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TFAuftrag.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if pagecontrol.ActivePage = tabsheetkopf then begin if (Key = VK_Return) then begin self.Perform(WM_Nextdlgctl, 0, 0); end; end;
if pagecontrol.ActivePage = tabsheetpos then begin if (ViewArt.Controller.FocusedColumn.IsLast = true) and (is_erfassen = true) then begin dsp.append; end; end; end; |
|
|
zuma
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 20.04.11 09:30
_________________ Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
|
|