Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Problem bei Insert mit "&" (https://www.delphipraxis.net/180296-problem-bei-insert-mit.html)

skyobserver 8. Mai 2014 16:26

Datenbank: Oracle • Version: 8.0 • Zugriff über: AnyDac v1.12.2

Problem bei Insert mit "&"
 
Hallo,


ich muß in einer Auftrags-Tabelle einen neuen Auftrag für einen Kunden anlegen.
Das Feld "Kundenkurzname" ist dabei ein Foreign-Key in der Kundentabelle...

Das Programm funktioniert soweit gut - allerdings bekam ich auf einmal eine
Foreign-Key-Constraint Verletzung (Kundenkurzname nicht in Kundentabelle gefunden)
als im Kundenkurzname das Zeichen "&" auftauchte...

-Der Eintrag in der Kundentabelle ist aber vorhanden!
-Das SQL-Kommando unmittelbar vor der Ausführung in ein TEdit geschrieben,
herauskopiert und im Delphi-SQL-Explorer ausgeführt funktioniert!

Ich habe den Verdacht, daß das TADCommand von den AnyDac (v1.12.2)
Datenbankkomponenten das "&" als Kommandozeichen interpretiert!?

Hat jemand eine Idee, wie ich mit AnyDac das "&" sauber zu Oracle schicken kann?

Bernhard Geyer 8. Mai 2014 16:33

AW: Problem bei Insert mit "&"
 
Das Problem wird mit 99,9%iger Sicherheit verschwinden wenn parametrisierte Abfragen/Inserts verwendet werden.

mkinzler 8. Mai 2014 16:33

AW: Problem bei Insert mit "&"
 
Verwendest du (SQL-)Parameter?
Ich würde eher mit künszlichen Schlüsseln arbeiten und keine Datenfelder hierfür verwenden.

Bernhard Geyer 8. Mai 2014 16:51

AW: Problem bei Insert mit "&"
 
Zitat:

Zitat von mkinzler (Beitrag 1258319)
Verwendest du (SQL-)Parameter?

Mit sicherheit nicht. Denn da würde das nicht funktionieren:

Zitat:

-Das SQL-Kommando unmittelbar vor der Ausführung in ein TEdit geschrieben,
herauskopiert und im Delphi-SQL-Explorer ausgeführt funktioniert!

himitsu 8. Mai 2014 17:46

AW: Problem bei Insert mit "&"
 
Im Postgres PgDAC sind die Parameter mit : und Makros mit & angeführt.
Wird hier bestimmt ähnlich sein.

Nja, und dann gibt es noch dutzende andere Steuerzeichen.
- entweder Parameter
- oder du nutzt die entsprechende Funktion "Quote"-Funktion, um die Steuerzeichen zu maskieren.

Eines von Beidem sollte man eh immer machen.

skyobserver 9. Mai 2014 08:43

AW: Problem bei Insert mit "&"
 
Erst mal Danke für die Antworten!

Zitat:

Das Problem wird mit 99,9%iger Sicherheit verschwinden wenn parametrisierte Abfragen/Inserts verwendet werden.
Das probiere ich gleich mal aus...(kann eine Weile dauern bis der Fall wieder auftritt)

Zitat:

Ich würde eher mit künszlichen Schlüsseln arbeiten und keine Datenfelder hierfür verwenden
Was ist ein künstlicher Schlüssel? Meinst Du eine Überprüfung der Konsistens der Daten durch die Software
anstatt über die Datenbank constraints? Es handelt sich um eine mehr als 10 Jahre alte Firmendatenbank
auf der noch unzählige andere Programme arbeiten - an den bestehenden Strukturen darf ich also nichts ändern...

Zitat:

oder du nutzt die entsprechende Funktion "Quote"-Funktion
Was wäre denn DIE entsprechende "Quote"-Funktion? Nach so etwas
hatte ich schon gesucht aber nicht gefunden...

mkinzler 9. Mai 2014 09:03

AW: Problem bei Insert mit "&"
 
Zitat:

Was ist ein künstlicher Schlüssel?
Ein zusätzliches Feld, welches nichts mit den eigentlichen Daten, die sich ja ändern können, zu tun hat und idealerweise automatisch gesetzt wird (ID, GUID, ...).
Zitat:

Meinst Du eine Überprüfung der Konsistens der Daten durch die Software
anstatt über die Datenbank constraints?
Nein.

skyobserver 9. Mai 2014 09:57

AW: Problem bei Insert mit "&"
 
Achso, eine Record-ID...(künstlich hatte mich irritiert...)

Kann leider an den Tabellen nichts ändern...

DeddyH 9. Mai 2014 10:04

AW: Problem bei Insert mit "&"
 
Und zu den Quotes: Bei Google suchenoracle quote ampersand. "set define off" scheint mir da noch die einfachste Möglichkeit zu sein, aber ich weiß nicht, wie man das in AnyDAC umsetzt.

p80286 9. Mai 2014 10:21

AW: Problem bei Insert mit "&"
 
Warum machst Du es mit dem Command und nicht mit der Query?
Die hat soweit ich weiß kein Problem mit dem "&"

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Seite 1 von 2  1 2      

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