AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi EDBError: "Typ für Feld 'relative' unbekannt"
Thema durchsuchen
Ansicht
Themen-Optionen

EDBError: "Typ für Feld 'relative' unbekannt"

Ein Thema von Aenogym · begonnen am 30. Sep 2005 · letzter Beitrag vom 30. Sep 2005
Antwort Antwort
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#1

EDBError: "Typ für Feld 'relative' unbekannt"

  Alt 30. Sep 2005, 10:53
Datenbank: MySQL • Version: 3.51 • Zugriff über: MySQL ODBC Driver 3.51
hi ihr,

ich hab ein problem mit mySQL. zugreifen tu ich über TDatabase/TQuery.
mein code sieht so aus:

Delphi-Quellcode:
try
      Query.SQL.Clear();
      Query.SQL.Add('start transaction;');
      Query.ExecSQL();

      Query.SQL.Clear();
      Query.SQL.Add('TRUNCATE table greeting');
      Query.ExecSQL();

      Query.SQL.Clear();

      Query.SQL.Add('INSERT INTO `greeting` (`topic`, `message`, `simple`) VALUES (" ", "'+AdvGreetingHTMLPreview.Caption+'", "0")');

      Query.ExecSQL();

      Query.SQL.Clear();
      Query.SQL.Add('commit;');
      Query.ExecSQL();
    except
      Query.SQL.Clear();
      Query.SQL.Add('rollback;');
      Query.ExecSQL();
    end;
beim ausführen des INSERT-befehls bekomme ich unter bestimmten voraussetzungen den fehler:
Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt WebAdmin.exe ist eine Exception der Klasse EDatabaseError aufgetreten. Meldung: 'Typ für Feld 'relative' ist unbekannt'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK  Hilfe  
---------------------------
der fehler kommt nur, wenn innerhalb des SQL-statements folgendes vorkommt:

Zitat:
"foo:bar"
sprich: ein doppeltes anführungszeichen, dann irgendein string und dann ein doppelpunkt.
sobald dies innerhalb meines TQuery.SQL steht, bekomm ich diesen fehler an den kopf geworfen.
an der mysql kanns eigentlich nicht liegen, da ich mir das vom code genrierte statement kopiert und in phpMyAdmin getestet habe - klappt einwandfrei.

irgendwie muss der ODBC-treiber die angabe "foo:bar" als eine art feld interpretieren, dass er nicht kennt.

das problem an der sache ist, dass ich HTML-code in die tabelle einfügen muss. ich habe schon versucht, anführungszeichen zu escapen etc., aber das einzige, was hilft, ist den doppelpunkt aus dem string zu entfernen - was aber den informationsgehalt zerstört

könnt ihr mir helfen?

danke schonmal,
aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: EDBError: "Typ für Feld 'relative' unbekannt"

  Alt 30. Sep 2005, 11:09
Du verwendest eine falsche SQL-Syntax!
1.) Feld- und Tabellennamen werden nicht in Hochkomma's oder Akzentzeichen (´) gesetzt.
2.) Feld- und Tabellennamen dürfen in Anführungszeichen (") gesetzt werden.
3.) Stringliterale werden in einfache Hochkomma's gesetzt
4.) Verwende Parameter (<-die sauberste Lösung) oder zumindest die Funktion QuotedStr()

      Query.SQL.Text := 'INSERT INTO greeting (topic, message, simple) VALUES ('+QuotedStr(' ')+', '+QuotedStr(AdvGreetingHTMLPreview.Caption)+','+QuotedStr('0')+')'; 5.) statt Query.SQL.Clear und Query.SQL.Add reicht ein Query.SQL.Text := ...
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: EDBError: "Typ für Feld 'relative' unbekannt"

  Alt 30. Sep 2005, 11:18
danke für deine antwort, shmia.

Zitat von shmia:
Du verwendest eine falsche SQL-Syntax!
1.) Feld- und Tabellennamen werden nicht in Hochkomma's oder Akzentzeichen (´) gesetzt.
2.) Feld- und Tabellennamen dürfen in Anführungszeichen (") gesetzt werden.
3.) Stringliterale werden in einfache Hochkomma's gesetzt
:shocked: nicht? so lehrt es MySQL AB in seiner dokumentation höchstpersönlich. nungut - versuch ich's mal ohne

Zitat von shmia:
4.) Verwende Parameter (<-die sauberste Lösung) oder zumindest die Funktion QuotedStr()

      Query.SQL.Text := 'INSERT INTO greeting (topic, message, simple) VALUES ('+QuotedStr(' ')+', '+QuotedStr(AdvGreetingHTMLPreview.Caption)+','+QuotedStr('0')+')'; 5.) statt Query.SQL.Clear und Query.SQL.Add reicht ein Query.SQL.Text := ...
parameter? gut, werd ich mich mal informieren. das mit Query.SQL.Clear() zieh ich so durch, weil das der author des programms überall so macht...
(übrigens funktionierte die syntax mit dne akzenten etc. bis jetzt überall)

danke dir!

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: EDBError: "Typ für Feld 'relative' unbekannt"

  Alt 30. Sep 2005, 11:22
zu früh gefreut
das problem ist mit dieser syntax noch immer das gleiche.
dann werde ich mich mal über parameter informieren

aenogym

edit: und wieder was dazugelernt. parameter scheinen der grund für mein problem zu sei und ich hoffe, dass sie auch die lösung sind
(falls sich wer wundert: ich arbiete heute zume rsten mal mit den datenbank-komponenten )
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: EDBError: "Typ für Feld 'relative' unbekannt"

  Alt 30. Sep 2005, 11:32
Zitat von Aenogym:
Zitat von shmia:
1.) Feld- und Tabellennamen werden nicht in Hochkomma's oder Akzentzeichen (´) gesetzt.
2.) Feld- und Tabellennamen dürfen in Anführungszeichen (") gesetzt werden.
3.) Stringliterale werden in einfache Hochkomma's gesetzt
:shocked: nicht? so lehrt es MySQL AB in seiner dokumentation höchstpersönlich. nungut - versuch ich's mal ohne
MySQL lässt hier mehr als der SQL-92 Standard zu.
Das hängt auch von ANSI_QUOTES ab:
http://dev.mysql.com/doc/mysql/en/string-syntax.html
Man sollte trotzdem immer den Vorgaben von SQL-92 folgen!

Es scheint die Strategie fast aller Datenbank-Hersteller zu sein, SQL-92 zu unterstützen,
aber ausserdem eine geänderte Syntax zuzulassen.
Wenn ein Kunde eine grosse Datenbank + Anwendung entwickelt hat, kann er die Datenbank nicht mehr wechseln,
da andere Datenbanken z.B. mit dem Akzent nicht klarkommen.
(Aus dem gleichen Grund haben Felgen der Autohersteller einen unterschiedlichen Lochkreis & Nabendurchmesser)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: EDBError: "Typ für Feld 'relative' unbekannt"

  Alt 30. Sep 2005, 11:36
klingt einleuchtend
danke dir, mit parametern klappt's hervorragend

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  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 23:31 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