Autor Beitrag
Josef-B
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: 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.


ausblenden 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
//Steuerung wenn erste Seite des Pagecontrols aktiv ist
if pagecontrol.ActivePage = tabsheetkopf then
  begin
  if (Key = VK_Return) then
    begin
    self.Perform(WM_Nextdlgctl, 00);
    end;
  end;

if pagecontrol.ActivePage = tabsheetpos then //<------ das war nicht drin
  begin
  //Steuerung für Weiterspringen im Mastergrid
  //letzte Spalte dann wenn erfasst wird, nächste Position anlegen
  if (ViewArt.Controller.FocusedColumn.IsLast = true) and  (is_erfassen = true) then
    begin
    dsp.append;
    end;
  end;
end;
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mi 20.04.11 09:30 
user profile iconJosef-B hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TFAuftrag.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ViewArt.Controller.FocusedColumn.IsLast = true) and  (is_erfassen = true) then
end;



Ne kleinigkeit am Rande:
Fällt dir auf, was du da machst ?
wenn man das mal auflöst, sieht deine If-Zeile so
ausblenden Delphi-Quelltext
1:
if (True = True) and (True = True) then					

oder z.b so
ausblenden Delphi-Quelltext
1:
if (False = True) and (True = True) then					

aus ...

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!