Problem mit SQL-Insert im Script

Ferum

Mitglied
Hallo,

ich habe ein Problem mit dem VBScript. (Ich hoffe es ist auch das richtige Forum)

Das Skript liest Daten aus einer Textdatei (separiert mit Semikolas) und schreibt diese per Insert in eine MSSQL-Datenbank.

Im Grunde läuft es so, nur habe ich ein paar kleine Probleme. Das Skript bricht ab wenn ich in den Daten ein ' steht. Diese läßt sich auch leider nicht verhindern, da es sich um Firmenbezeichungen usw handelt. Ein weiteres Problem ist, dass er führende Nullen abschneidet. Also wenn eine Information an sich 05 lautet, steht in der Tabelle nur eine 5.

Code:
objRecordset.Open "SELECT * FROM " & sOrigFileName , oConnFile, adOpenStatic, adLockOptimistic, adCmdText
objRecordset.Movefirst
 
 
DoUntil objRecordset.EOF
strCmd = "INSERT INTO .....

Ich habe die Vermutung, dass das Problem beim Recordset der Datei (also beim Select * from....) entsteht. Leider ist mir nicht klar, was die Optionen adOpenStatic usw. bedeuten und was ich damit bewirken kann.

Schon mal vielen Dank im voraus für die Hilfe.

Gruß,
Ferum
 

ronaldh

Erfahrenes Mitglied
Das ' ist ein Trennzeichen für Strings bei SQL. Dies musst Du austauschen durch 2 aufeinanderfolgende ', also ''. Dann weiß SQL, dass es nur einen ' speichern soll.

Bei den führenden Nullen wird der Wert offensichtlich als Wert, und nicht als String interpretiert.

Da müsstest Du den Wert also z.B. als '05' formatieren.

Grüsse
ronaldh
 

Ferum

Mitglied
Hi rolandh,

das er den Wert nicht als String interperiert habe ich schon fast befürchtet.
Das einfassen mit ' bekomme ich hin.
Das Problem ist das ' in den Daten. Die Datei wird automatisch aus einem ERP-System erzeugt und die Daten wie Ort, Name, usw. die dieses ' enthalten sind Stammdaten. Diese kann ich leider nicht verändern.
Müßte ich dann im Skript den Eintrag nach so einem Zeichen durchsuchen und ein weiteres ' dazu setzen? Oder gibt es noch einen andere Möglichkeit?

Gruß,
Ferum
 

ronaldh

Erfahrenes Mitglied
Du musst die SQL Strings in Deinem Script aufbereiten. Dazu solltest Du Dir eine kleine Funktion basteln, in der Du unzulässige Zeichen konvertierst.

Grüsse
ronaldh