AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC ZSV bei Verwendung von IndexFieldNames
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC ZSV bei Verwendung von IndexFieldNames

Ein Thema von MasterDetail · begonnen am 4. Apr 2017
Antwort Antwort
MasterDetail

Registriert seit: 6. Sep 2016
8 Beiträge
 
#1

FireDAC ZSV bei Verwendung von IndexFieldNames

  Alt 4. Apr 2017, 11:43
Datenbank: MariaDB • Version: 10.1 • Zugriff über: FireDAC
Hallo,

Um Felder in einer gridähnlichen-Sichttabelle beim Klick auf einen Spaltenkopf zu sortieren, verwenden wir die Eigenschaft "IndexFieldNames" von "TFDQuery".
Um das Grid als Fehlerquelle auszuschließen, haben wir das Grid vom Formular entfernt und das Setzen von "IndexFieldNames" mit üblichen Buttons ersetzt (Siehe Anhang).

Wenn man den Index nun oft genug per Buttonklick wechselt, etwa 4-5 mal, anschließend die FDQuery einmal aktualisiert (via "Refresh") und dann die FDQuery schließt,
tritt eine Zugriffsschutzverletzung mit Fehlercode "00000004" auf, um genau zu sein, bei der FireDAC-internen Prozedur "RemRef".

Call stack:
[00728C83] FireDAC.DatS.Dats.TFDDatSView.RemRef$qqrv
[0075893F] FireDAC.Comp.DataSet.Comp.Dataset.TFDDataSet.Inter nalClose$qqrv
[00794D98] FireDAC.Comp.Client.TFDAdaptedDataSet.InternalClos e$qqrv
[006C468E] Data.DB.Db.TDataSet.CloseCursor$qqrv
[006C4572] Data.DB.Db.TDataSet.SetActive$qqro

Hierbei werden anscheinend temporäre "Views" (nicht zu verwechseln mit Views in der Datenbank),
gelöscht, die beim Setzen von "IndexFieldnames" erstellt wurden.
Gemäß Hilfe: "(...) Durch die Anwendung von Filtern, Indizes und Bereichen erstellt FireDAC Sichten zusätzlich zu diesem Sichtobjekt. (...)".
Mit "RemRef" (RemoveReference) werden die Referenzen auf diese Views FireDAC-intern gelöscht, bzw mit "AddRef" hinzugefügt.
Eine oder mehrere dieser Referenzen auf diese Sichten ist nil, und endet deshalb in einer ZSV. Und das nil ist das Problem.

Wir haben die Felder die manuell indiziert werden, überprüft und nochmal neu erstellt. Das Problem tritt in mehreren Tabellen auf. (es wurden nicht alle getestet)
Bei manchen Tabellen reicht es 2 Felder hintereinander zu indizieren.

Um den Fehler zu reproduzieren muss man mehrmals verschiedene Felder mit "IndexFieldNames" indizieren (mind. 4 mal),
die Datenmenge aktualisieren und anschließend die Datenmenge schließen.

Die FDQuery beinhaltet folgendes SQL-Statement "SELECT * FROM kunden" und alle Felder sind persistent vorhanden.

Hat jemand hiermit schonmal Erfahrung gesammelt? Ist es ein Bug? Wenn ja, wie können wir diesen Bug umgehen?
Das Problem tritt wie bereits erwähnt in mehreren Tabellen auf.

Mit freundlichen Grüßen.
Miniaturansicht angehängter Grafiken
screenshot_1.jpg   screenshot_2.jpg  
  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 20:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz