![]() |
Datenbank: ACCESS • Version: 2002 SP1 • Zugriff über: ADO Ms Jet 4.0
Sonderzeichen ( z.b. " ' ) auslesen und schreiben
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:
währe nett wenn ich eine antwort bekommen könnten.
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; MfG Real Thunder |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
Guten Morgen.
Wenn du die Daten mit einer Variation von
SQL-Code:
ü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.
INSERT INTO neu SELECT * FROM alt1
Grüße vom marabu |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
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:
Und sobald ein wert kommt der " oder ' enthält, schmeißt er mir ne ole exeption an den kopf
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; |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
In deinem Code setzt du aber die Hinweise gar nicht um.
Entweder so:
Delphi-Quellcode:
Oder so:
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) + ', ' + ...
Delphi-Quellcode:
Freundliche Grüße
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; |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
Ich habe es versucht so umzusetzten... kamm allerdings eine andere execption..
Zitat:
Langsam drehe ich hier durch.... :wall: |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
Steht doch da im Exceptiontext: Du hast den Parameter nicht komplett definiert.
Was an der Exception ist denn nicht verständlich? |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
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:
SQL-Code:
beim 2. stimmt der sqlstring ja nicht, da die Anführungszeichen ja eigendlich das ende eines eintages bekonnatgeben...
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)
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 |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
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 |
Re: Sonderzeichen ( z.b. " ' ) auslesen und schreiben
:thumb:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz