AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sonderzeichen ( z.b. " ' ) auslesen und schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Sonderzeichen ( z.b. " ' ) auslesen und schreiben

Ein Thema von Real_Thunder · begonnen am 12. Mär 2007 · letzter Beitrag vom 15. Mär 2007
Antwort Antwort
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#1

Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 12. Mär 2007, 00:31
Datenbank: ACCESS • Version: 2002 SP1 • Zugriff über: ADO Ms Jet 4.0
Moin erstmal von mir

Ich stehe vor der Aufgabe mit hilfe eines Delphi Programmes mehrere Datenbanken / Tabellen auszulesen,
und diese zu einer zusammenzufügen..
ok das auslesen hat soweit geklappt...
Nur wenn ich eine Neue Tabelle schreiben will, und in einem
der ausgelesenen Felder ein Sonderzeichen vorkommt wie z.b. ' oder " bzw ( etc...
dann bekomme ich eine ole exeption....

Das mein einfügedtring falsch sei...
erscheint mir an sich auch loisch... das er mit den hochkommas etc nciht mehr ganz passt..
also nun meine frage... wie kann ich die sonderzeichen abändern um string, so das sie von der Accessdatenbank bzw ADO
angeommen werden.

Ich füge die daten volgenermaßen ein:
Delphi-Quellcode:
  memo1.Lines.Add('Erstelle Tabelle (Personen)');
  NeuDbCon.connected:=true;
  NeuDbQuery.SQL.Text:='CREATE TABLE pers59 ('+
                       'id varchar(8) , '+
                       'altid varchar(8) PRIMARY KEY,'+
                       'geschlecht varchar(1),'+
                       'anrede varchar(40),'+
                       'Nachname varchar(50), '+
                       'Vorname varchar(50), '+
                       'strasse varchar(90), '+
                       'plz varchar(10), '+
                       'ort varchar(55), '+
                       'tel varchar(20), '+
                       'tel2 varchar(20), '+
                       'fax varchar(20), '+
                       'email varchar(60), '+
                       'bemerkung text, '+
                       'erstellt varchar(10), '+
                       'modify varchar(10), '+
                       'sterntaler bit, '+
                       'patenschaft bit, '+
                       'kastration bit, '+
                       'kostrin bit'+
                       ')';
   NeuDbQuery.ExecSQL;
währe nett wenn ich eine antwort bekommen könnten.

MfG
Real Thunder
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 12. Mär 2007, 06:29
Guten Morgen.

Wenn du die Daten mit einer Variation von

INSERT INTO neu SELECT * FROM alt1 übernimmst, dann kümmern dich Sonderzeichen nicht. Versuchst du die Sätze einzeln per INSERT zu übernehmen, dann kannst du die Feldwerte per Eigenschaft "Parameter" setzen und auch dann ist dir egal, welche Zeichen vorkommen. Nur wenn du das INSERT Statement aus Strings zusammensetzt musst du die Feldwerte mit QuotedStr() vorbehandeln.

Grüße vom marabu
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#3

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 12. Mär 2007, 08:44
Ich kann die werde nicht gleich wieder in neu andere tabelle schreiben, weil sie vorher ersteineinmal vom programm analysiert werden...
das mit dem QuoteStr klapt irgendi auch nicht....

ich .. ich schriebe die datn folgenermaßen in die datenbank:
Delphi-Quellcode:
 NeuDbQuery.SQL.Text:='INSERT INTO [pers59] ('+
                       'id, altid, geschlecht, anrede, Nachname, Vorname, strasse, plz, ort, tel, '+
                       'tel2, fax, email, bemerkung, erstellt, modify, sterntaler, '+
                       'patenschaft, kastration, kostrin'+

                       ') VALUES ('+

                       '"'+getid+'", '+
                       '"'+NeuDbRec_Pers_Array[a].ID + '", '+
                       '"'+NeuDbRec_Pers_Array[a].gesch + '", '+
                       '"'+NeuDbRec_Pers_Array[a].Anrede + '", '+
                       '"'+NeuDbRec_Pers_Array[a].Nname + '", '+
                       '"'+NeuDbRec_Pers_Array[a].vname + '", '+
                       '"'+NeuDbRec_Pers_Array[a].strasse + '", '+
                       '"'+NeuDbRec_Pers_Array[a].plz + '", '+
                       '"'+NeuDbRec_Pers_Array[a].ort + '", '+
                       '"'+NeuDbRec_Pers_Array[a].tel + '", '+
                       '"'+NeuDbRec_Pers_Array[a].tel2 + '", '+
                       '"'+NeuDbRec_Pers_Array[a].fax + '", '+
                       '"'NeuDbRec_Pers_Array[a].email + '", '+
                       '"'NeuDbRec_Pers_Array[a].bemerkung + '", '+
                       '"'+NeuDbRec_Pers_Array[a].datum + '", '+
                       '"'+NeuDbRec_Pers_Array[a].modify + '", '+
                       'false, '+
                       'false, '+
                       'false, '+
                       'false'+
                       ')';
 NeuDbQuery.ExecSQL;
Und sobald ein wert kommt der " oder ' enthält, schmeißt er mir ne ole exeption an den kopf
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 12. Mär 2007, 08:55
In deinem Code setzt du aber die Hinweise gar nicht um.

Entweder so:

Delphi-Quellcode:
NeuDbQuery.SQL.Text := 'INSERT INTO [pers59] (
  + 'id, altid, geschlecht, anrede, Nachname, Vorname, strasse, plz, ort, tel, '
  + 'tel2, fax, email, bemerkung, erstellt, modify, sterntaler, '
  + 'patenschaft, kastration, kostrin'
  + ') VALUES (
  + QuotedStr(getid) + ', '
  + QuotedStr(NeuDbRec_Pers_Array[a].ID) + ', '
  + ...
Oder so:

Delphi-Quellcode:
with NeuDbQuery do
  SQL.Text := 'INSERT INTO [pers59] (
            + 'id, altid, geschlecht, anrede, Nachname, Vorname, strasse, plz, ort, tel, '
            + 'tel2, fax, email, bemerkung, erstellt, modify, sterntaler, '
            + 'patenschaft, kastration, kostrin'
            + ') VALUES (
            + ':id, :altid, ....';
  Parameters.ParamValues['ID'] := GetId;
  ...
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#5

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 15. Mär 2007, 14:33
Ich habe es versucht so umzusetzten... kamm allerdings eine andere execption..

Zitat:
Erste Zufalls-Exception bei $7C812A5B. Exception-Klasse EOleException mit Meldung 'Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben'. Prozess PA_Datentrans.exe (1864)
Und was das nun wieder zu bedeuten hat, weiß ich auch nicht...
Langsam drehe ich hier durch....
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#6

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 15. Mär 2007, 14:36
Steht doch da im Exceptiontext: Du hast den Parameter nicht komplett definiert.
Was an der Exception ist denn nicht verständlich?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#7

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 15. Mär 2007, 15:19
Dies ist der SQL String wie er Angelegt wird wenn ich Qouted bnutze:
Da gibt er mir beim ersten Insert die Exeption:

'Ein Parameterobjekt ist nicht ordnungsgemäß definiert. Inkonsistente oder unvollständige Informationen wurden angegeben'

SQL-Code:
INSERT INTO [pers59]
   (id, altid, geschlecht, anrede, Nachname, Vorname, strasse, plz, ort, tel, tel2, fax,
    email,bemerkung, erstellt, modify, sterntaler, patenschaft, kastration, kostrin)
VALUES
   ("0000", "p_1", "w", "Frau", "xxxxxxxx", "Annemarie", "xxxxxxxxx", "82319", "Starnberg", "", "", "", "",
"'Psotka gest. 9.7.02, Patenschaft gilt über Vermittlung u. Tod hinaus, bish. Patenhunde: Amerigo (verm), Mascotte (verm), Psotka gestorben'", "1111111111", "", false, false, false, false)

Und wenn ich es ohne Qouted versuche, läuft er durch bis zu einer zeile in dem im Bemerkungsfeld ein " auftaucht.

her sieht der sqlstring dann so aus:

INSERT INTO [pers59] (id, altid, geschlecht, anrede, Nachname, Vorname, strasse, plz, ort, tel, tel2, fax, email, bemerkung, erstellt, modify, sterntaler, patenschaft, kastration, kostrin) VALUES ("0178", "p_139", "w", "Frau", "xxxxx", "Sissy", "xxxxxxxx", "72275", "xxxxxxxxxxx", "xxxxx", "", "", "", "Vertrag gilt "immer",, bish. Patenhunde: Cevdet (verm.)", "", "", false, false, false, false) beim 2. stimmt der sqlstring ja nicht, da die Anführungszeichen ja eigendlich das ende eines eintages bekonnatgeben...
also muß ich dieses feld irgendwie escapen.. allerdings habe ich keine ahnung wie...

Edit:
Ich habe nun das '"' durch ein '''' ersetzt... nun geht es soweit, bis halt ein ' im bemerlungsfeld steht...
und wie gehabt beim QoutedStr, gibt er mit gleich bei der ersten zeile eine eception
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 15. Mär 2007, 15:31
Hallo,

benutze prinzipiell Parameter.

Delphi-Quellcode:
with Query do
begin
  SQL.clear;
  SQL.add('INSERT INTO [pers59] (id, altid, geschlecht, anrede')
  SQL.Add('Values(:Id,:altid,:geschlecht,:anrede);

ParamByName(
'Id').AsInteger:= 100;
ParamByName(
'altid').AsInteger:= 1;
ParamByName(
'geschlecht').AsString:= 'M';
ParamByName(
'anrede').AsString:= 'bla';

ExecSQL;
end;

Heiko
Heiko
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#9

Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben

  Alt 15. Mär 2007, 16:41

Hat schien so als wenn etwas mit meinem Jet ODBC treiber nicht in ordnung war... habe ihn neu raufgespielt und non hats funktioniert mit dem quotedstr....

das mit den params schaue ich mir aber auch noch mal genauer an... falls wieder soetwas sein sollte....

Vielen dank fpr die Hilfe...

Mfg Real Thunder
  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 17:29 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