Zitat:
Wenn "Verfalldatum" klein geschrieben ist
Normal ist in Postgre die Groß-/Kleinschreibung egal, so lange ein Name nicht in " angegeben wurde.
Es wird automatisch ein Lowercase über alles gelegt, außer bei 'Strings' und "Namen" mit " .
Zitat:
Das macht meiner Meinung nach bei einer einzelnen Tabelle bzw. bei einem Append keinen Sinn.
Ja, es gibt einmal den Fall, dass die Spalte bei einem JOIN in mehreren Tabellen/Quellen vorhanden ist und man hier den Namespace (Tabellenname) mit angeben muß, damit die
DB weiß was du eigentlich willst.
Und dann gibt es den Fall, dass eine Spalte mehrfach im Select vorkommt, z.B. nochmal mit AS umbenannt.
SELECT aaa, aaa AS bbb
oder bei
SELECT aaa, *
bzw,
SELECT aaa AS bbb, *
.
Hier gibt es erstmal kein Problem, aber wenn das Feld geändert wurde und man das POSTen will, dann weiß die DBKompoente nicht welchen Wert die nun speichern soll.
Den Wert von aaa oder den von bbb, welcher ja auch in aaa gespeichert würde.
Lösung:
- Entweder die Extended-Infos der DB-Komponente deaktivieren, also damit PgDAC/UniDAC/... nicht weiß dass bbb eigentlich aaa ist
- oder auf Seiten der DB bereits diese Verbindung auftrennen, indem man das Feld durch eine Funktion jagt
SELECT aaa, Trim(aaa) AS bbb, Coalsece(aaa, NULL) AS ccc, EineEigeneDetachFunctionDamitManAmNamenErkenntWarumDasHierSteht(aaa) AS ddd
.
- oder manuell ein Insert- und Update-Statement in der DB-Komponente hinterlegen, damit nicht versucht wird automatisch Eines zu generieren
Wie UniDAC hier nun clientseitig arbeitet .... wer weiß, aber vermutlich auch so wie PgDAC, welches die Vegleiche der Namen case-
insensitiv durchführt,
womit clientseitig das eigentlich auch egal wäre.
Hast du mal nachgesehn, wie es in der Datnbank aussieht?
Wurden die Felder
Verfalldatum oder
Status dort eventuell wirklich explizit mit Großschreibung erstellt?
PS: Bei nur einem Feld, wäre beim Locate der Weg über das Variant-Array nicht nötig.
APFAMPRU_SQL.Locate('PZN', VarArrayOf([xnPZN]), ...) = APFAMPRU_SQL.Locate('PZN', xnPZN, ...)