AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehlerhafte Feldinformationen beim Öffnen einer FDQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlerhafte Feldinformationen beim Öffnen einer FDQuery

Ein Thema von MasterDetail · begonnen am 29. Mai 2018
Antwort Antwort
MasterDetail

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

Fehlerhafte Feldinformationen beim Öffnen einer FDQuery

  Alt 29. Mai 2018, 16:07
Datenbank: MariaDB • Version: 10.1.13 • Zugriff über: FireDAC
Hallo,

wir haben das Phänomen, dass beim Öffnen einer FDQuery die Konfiguration der automatisch erstellten Felder fehlerhaft sind:
FireDAC erkennt nicht, dass manche Felder gejoint/kalkuliert sind.
Dies hat zur Folge, dass alle Felder in .Fields als persistente Felder der Basistabelle angesehen werden, und bei einem .Post versucht wird,
diese Felder aus der Basistabelle zu aktualisieren, was in einem sofortigen Fehler resultiert.
Auszug aus der Log:
Zitat:
177 Query SELECT A.ARTIKEL_SPERRHINWEIS, LAST_INSERT_ID() AS id,
FROM liefdb2A
WHERE A.id = LAST_INSERT_ID()
177 Query ROLLBACK
Das Feld "ARTIKEL_SPERRHINWEIS" ist hierbei ein gejointes Feld, es existiert nicht in der Tabelle "liefdb2".

Die FDQuery wird mit einem Statement geöffnet, welches ein Subselect beinhaltet. Dies ist in unserer Philosophie essentiell aus bestimmten Gründen.
Das Statement sieht etwa so aus:
Code:
SELECT * FROM (SELECT
  liefdb2.*,
  artstamm.FARBE,
  artstamm.SPERR_BENENNUNG,
  artstamm.ARTIKEL_SPERRHINWEIS,
FROM liefdb2
LEFT JOIN artstamm ON liefdb2.sachnr = artstamm.sachnr
LEFT JOIN arts_mm ON liefdb2.sachnr = arts_mm.sachnr
) A ORDER BY ID
Nachvollzogen haben wir die falschen Informationen im FireDAC-Abfrageeditor. Dort kann man sich die erhaltene Struktur anzeigen lassen, siehe Screen "falsch1.jpg".
Dabei ist das Feld WERANL das letzte persistente Feld aus der Tabelle "liefdb2".

Das phänomenale hierbei ist, dass wenn man im besagten Screenshot "falsch1.jpg" das "LEFT" bei "LEFT JOIN artstamm" weglässt, es auf einmal richtig funktioniert, und die gejointen Felder richtig erkannt werden, siehe Screen "richtig2.jpg".

Lässt man wiederum das "ORDER BY ID" am Ende weg, funktioniert es wiederum nicht, siehe Screen "falsch3.jpg".

Wir können uns dieses Verhalten nicht rational erklären, weshalb wir uns an das Forum wenden möchten.
Miniaturansicht angehängter Grafiken
falsch1.jpg   richtig2.jpg   falsch3.jpg  

Geändert von MasterDetail (29. Mai 2018 um 16:38 Uhr)
  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 19:39 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