AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Access Violation - OnFilterRecord - UniDAC
Thema durchsuchen
Ansicht
Themen-Optionen

Access Violation - OnFilterRecord - UniDAC

Ein Thema von Ritsch · begonnen am 21. Okt 2016 · letzter Beitrag vom 1. Nov 2016
Antwort Antwort
Benutzerbild von Ritsch
Ritsch

Registriert seit: 15. Apr 2014
Ort: Wolfenbüttel
33 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Access Violation - OnFilterRecord - UniDAC

  Alt 21. Okt 2016, 10:50
Datenbank: Sybase • Version: 10 • Zugriff über: ODBC
Hallo.

Unsere Software wurde bisher mit RAD Studio XE7 entwickelt.
Jetzt möchten wir auf 10.1 Berlin umsteigen und stoßen dabei auf ein erhebliches Problem.
Wir verwenden die UniDAC DB-Komponenten.

An unserem TUniTable arbeiten wir dem Event "OnFilterRecord".

Dort ist bspw. folgender Code

Delphi-Quellcode:
begin
  inherited;
    Accept:= (DataSet.FieldByName('D10B00000_Aktiv').AsInteger = 1);
    Accept:= (Accept and (StrToInt64Def(DataSet.FieldByName('D10B00000_ModulNr').AsString, -1) = Self.oMyD11D00000Config.iModulNr));
    Accept:= (Accept and (StrToInt64Def(DataSet.FieldByName('D10B00000_ModulUnterNr').AsString, -1) = 1));
end;
Dieser Code funktioniert tadellos wenn ich das Projekt mit XE7 erstelle.

Unter 10.1 Berlin bekomme ich nun allerdings eine Access Violation, allerdings erst beim zweiten Öffnen eines Datensatzes.
D.h. ich öffne das Programm bzw. das Modul, öffne einen Datensatz und das Event arbeitet korrekt.
Schließe ich jetzt den Datensatz und öffnen den gleichen oder einen anderen Datensatz erneut, bekomme ich eine Access Violation.
Wenn ich vorher das komplette Modul schließe und wieder öffne, funktioniert es wieder beim ersten Datensatz.

Irgendwelche Tipps?

Gruß
Richard
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.869 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Access Violation - OnFilterRecord - UniDAC

  Alt 21. Okt 2016, 10:58
In welcher Zeile tritt die AV auf?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Ritsch
Ritsch

Registriert seit: 15. Apr 2014
Ort: Wolfenbüttel
33 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Access Violation - OnFilterRecord - UniDAC

  Alt 21. Okt 2016, 11:01
Accept:= (DataSet.FieldByName('D10B00000_Aktiv').AsInteger = 1);
Richard
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#4

AW: Access Violation - OnFilterRecord - UniDAC

  Alt 21. Okt 2016, 11:16
Ist da die Exception oder steht da nur der Cursor, nach der Exception? (der Cursor steht oft gern im nachfolgenden Befehl)

Zitat:
inherited;
Ist eure Form vererbt und passiert daher eventuell was im inherited?
Wenn nicht vererbt, dann macht inherited nix, da es im Vorfahren keine gleichnamige Methode gibt.


Statt DataSet darf man hier auch gern TDataSet(Sender) oder (Sender as TDataSet) verwenden, denn da steht immer das richtige DataSet drin.

Zitat:
.AsInteger = 1
.AsBoolean kommt doch auch mit Integern klar? (nur als Hinweis, abber hier erstmal egal)
Aber wenn, dann würde ich hier sicherheitshalber eher .AsInteger <> 0 anstatt .AsInteger = 1 verwenden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Okt 2016 um 11:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Ritsch
Ritsch

Registriert seit: 15. Apr 2014
Ort: Wolfenbüttel
33 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Access Violation - OnFilterRecord - UniDAC

  Alt 21. Okt 2016, 11:34
(Sender as TDataSet) Kann ich leider nicht verwenden, da:procedure (DataSet: TDataSet; var Accept: Boolean)
Wir verwenden das Event so gut wie in allen Modulen, überall tritt dieser Fehler auf.
Z.B. auf hier:
Accept:= (FieldAsInt64(DataSet.FieldByName('D41400000_ID')) <> Self.iCurrID); Bin mal mit F7 in die Funktion FieldAsInt64 gegangen. Habe ein Snip in den Anhang gesetzt.
Angehängte Grafiken
Dateityp: png AV.PNG (10,7 KB, 31x aufgerufen)
Richard
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Access Violation - OnFilterRecord - UniDAC

  Alt 21. Okt 2016, 17:53
Zugriffsverletzungen erscheinen nur dann, wenn auf eine nicht (mehr) existente Instanz zugegriffen wird. In dem Fall ist Field wohl nil. Jetzt gilt es, herauszufinden wieso das der Fall ist.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz