Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FireDAC Fehler? #2 (https://www.delphipraxis.net/198320-firedac-fehler-2-a.html)

haentschman 24. Okt 2018 08:09

Datenbank: MSSQL • Version: 2012 • Zugriff über: FireDAC

FireDAC Fehler? #2
 
Hallöle...8-)

Callstack:
Zitat:

exception message : Zugriffsverletzung bei Adresse 00B5261E in Modul 'SEAM.exe'. Lesen von Adresse 000000B8.

main thread ($2508):
00b5261e +01e SEAM.exe FireDAC.DatS TFDDatSRow.InternalSetData
02d22e93 +02f SEAM.exe DMEdit 7829 +3 TDMED.SetDateName
02c9470a +06a SEAM.exe Form.Assignment 1083 +2 TfoAssignment.GridEdStoNeuDBTableViewAktuellDblCli ck
0096b518 +1a0 SEAM.exe cxControls 8368 +21 TcxControl.WndProc
00ead7c2 +03a SEAM.exe cxGridCustomView 5424 +3 TcxGridSite.WndProc
02d93c91 +d59 SEAM.exe SEAM 328 +217 initialization
Der Quelltext dazu:
Delphi-Quellcode:
procedure TDMED.SetDateName(DataSet: TDataSet);
begin
  if DataSet.State = dsEdit then // !!!!!
  begin
    DataSet.FieldByName('ixRecName').AsString := USER_KN; // Zeile 7829 ist die hier
    DataSet.FieldByName('RecDate').AsDateTime := Now;
  end;

  if DataSet.State = dsInsert then
  begin
    DataSet.FieldByName('ixAddName').AsString := USER_KN;
    DataSet.FieldByName('AddDate').AsDateTime := Now;
  end;
end;
...das sind Stellen an die man normalerweise nicht dran geht. :?

Hat das eine Verbindung mit https://www.delphipraxis.net/198316-firedac-fehler.html?

hoika 25. Okt 2018 03:14

AW: FireDAC Fehler? #2
 
Hallo,
gibt es den das Feld ixRecName im DataSet überhaupt?
Das sieht doch wie ein Nil-Zugriff aus.

Ist DMEdit Dein DataModul?

haentschman 25. Okt 2018 05:10

AW: FireDAC Fehler? #2
 
Moin...8-)
Zitat:

Ist DMEdit Dein DataModul?
Ja. Alle Querys sind darauf und sind automatisch erzeugt oder beim FormShow aktiviert.
Zitat:

gibt es den das Feld ixRecName im DataSet überhaupt?
Ja. Das Feld existiert in allen Datenmengen die vom User bearbeitbar sind.
Zitat:

Das sieht doch wie ein Nil-Zugriff aus
...ja eben. Aber selbst ein NULL Feld erzeugt keine Zugriffsverletzung. Wenn ein Feld nicht existiert gibt es eine vernünftige Meldung. :?

PS: Die procedure wird hundere Male am Tag aufgerufen. :roll:

hoika 25. Okt 2018 05:35

AW: FireDAC Fehler? #2
 
Hallo,
nein, ich meinte

Delphi-Quellcode:
DataSet.FieldByName('ixRecName').AsString
DataSet.FieldByName('ixRecName') ist nil, wenn es das Feld ixRecName nicht gibt.
Dann erzeugt nil.AsString eine Zugriffsverletzung.

Mach doch mal explizit eine Abfrage

Delphi-Quellcode:
if DataSet.FieldByName('ixRecName')=nil then
begin
  // ShowMessage irgendwas
end;

Zitat:

Querys sind darauf
Per Select * oder direkt als Select Field1,Field2?

Zitat:

Die procedure wird hundere Male am Tag aufgerufen
Also tritt das Problem nur sporadisch auf?

haentschman 25. Okt 2018 05:54

AW: FireDAC Fehler? #2
 
Zitat:

Also tritt das Problem nur sporadisch auf?
richtig...Ich hab nur so sporadischen Schei...
Zitat:

DataSet.FieldByName('ixRecName') ist nil, wenn es das Feld ixRecName nicht gibt.
...da gehe ich ich noch mit, aber
Zitat:

Wenn ein Feld nicht existiert gibt es eine vernünftige Meldung.
...seit wann gibt es eine Zugriffsverletzung wenn ein Feld in der Datenmenge nicht existiert? :gruebel:

Uwe Raabe 25. Okt 2018 07:29

AW: FireDAC Fehler? #2
 
Zitat:

Zitat von hoika (Beitrag 1416609)
DataSet.FieldByName('ixRecName') ist nil, wenn es das Feld ixRecName nicht gibt.

Das stimmt so nicht! Im Gegensatz zu
Delphi-Quellcode:
FindField
liefert
Delphi-Quellcode:
FieldByName
niemals ein
Delphi-Quellcode:
nil
zurück, sondern erzeugt vorher eine
Delphi-Quellcode:
EDatabaseError
Exception.

DasWolf 25. Okt 2018 08:30

AW: FireDAC Fehler? #2
 
Hallo,

kommt der Fehler auch, wenn Du einen anderen Wert zuweist oder ein
Delphi-Quellcode:
DataSet.FieldByName('ixRecName').Clear
machst?

haentschman 25. Okt 2018 08:45

AW: FireDAC Fehler? #2
 
Danke...
Zitat:

Also tritt das Problem nur sporadisch auf?
Das ist genau das Problem. Ich kann nicht sagen ob das funktioniert oder auch nicht. :?
Zitat:

PS: Die procedure wird hundere Male am Tag aufgerufen.
PS: Für mich wäre interessant ob das an den Daten liegen kann oder ob die Komponente querschießt.

Frickler 25. Okt 2018 11:02

AW: FireDAC Fehler? #2
 
Sicher, dass die Fehler-Zeile die richtige ist? Möglicherweise ist ja "DataSet" nil. Dann rummst es eine Zeile drüber...

haentschman 25. Okt 2018 11:32

AW: FireDAC Fehler? #2
 
Zitat:

Möglicherweise ist ja "DataSet" nil. Dann rummst es eine Zeile drüber...
:wink: Wie soll er dann diese Zeile kommen?
Zitat:

00b5261e +01e SEAM.exe FireDAC.DatS TFDDatSRow.InternalSetData


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf