2.6k Aufrufe
Gefragt in Datenbanken von bassix Einsteiger_in (37 Punkte)
Batch soll per VBS Daten in MDB schreiben


Meine Batch bearbeitet Werte aus einer CSV, die anschließen in eine MDB (Access 2000) geschrieben werden sollen.

Beim kopieren über Zwischenablage aus Excel nach Access können die Daten nicht eingefügt werden, weil immer die Fehlermeldung "Sie haben einen Wert eingegeben, der für dieses Feld nicht zulässig ist" erscheint. z.B. Text in ein numerisches Feld eingegeben, oder eine Zahl eingegeben, die größer ist, als die Feldgröße-Einstellung erlaubt.

Nun ist mein Lösungsansatz, mit einem VBScript die Daten mit DIM wert AS STRING etc richtig zu definieren und einzufügen.


Aus der Batch soll das VBS mit den entsprechenden Werten als Startparameter aufgerufen werden,
z.B. so (oder so ähnlich)

------------------------------------------------------------------------------
CALL connect2mdb.vbs Datenbankname.mdb Tablename Wert1 Wert2 Wert3 Wert4 Wert5
------------------------------------------------------------------------------

zusätzlich müssten die Felddatentypen definiert werden,
dies könnte statisch im VBS fixiert sein:

Beispiel:
-----------------------------------------------
Felddatentyp1=Zahl
Felddatentyp2=Text
Felddatentyp3=Datum/Uhrzeit
Felddatentyp4=Ja/Nein
-----------------------------------------------

Die Werte für die Datenfelder sollen ja als Startparameter ans VBS übergeben werden,
Beispiele:
-----------------------------------------------
Wert1={002BFA1A-3884-46AE-B499-2E02C283E8AC}
Wert2=Markus
Wert3=14.04.2009 15:05:55
Wert4=0
-----------------------------------------------

Im ersten Schritt müsste das VBS die Datenverbindung zur MDB herstellen
und danach einen Datensatz auf das entsprechende Table der MDB schreiben.

Hier bitte ich euch um Hilfe, wie müsste das VBS aussehen?
vielen Dank schon mal vorab...

mfg Bassix

3 Antworten

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Bassix,

Acces akzeptiert "Wert1={002BFA1A-3884-46AE-B499-2E02C283E8AC}" sicher nicht als Zahl, hier müsste in Access der Felddatentyp auf "Text" geändert werden.

Schau es Dir nochmals an.


Gruß

Paul1
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Bassix,

ich würde dir empfehlen, die Daten die du nach Access importeiren willst in eine CSV-Datei zu schreiben bzw anzuhängen und dann die Daten über einen automatiserten Import (Macro autoexec) in die MDB zu importieren. Dann brauchst du nur die MDB ohne Parameter aufzurufen. Der Code in der MDB müsste dann die CSV-Datei suchen, laden und sich wieder beenden.
Alternativ kannst du den VBS-Kram auch mit der Original CSV direkt in Access machen, um nicht zwei Wartungsfronten zu haben.

Gruß
Ralf
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Beim kopieren über Zwischenablage aus Excel nach Access können die Daten nicht eingefügt werden, weil immer die Fehlermeldung "Sie haben einen Wert eingegeben, der für dieses Feld nicht zulässig ist" erscheint. z.B. Text in ein numerisches Feld eingegeben, ....................................


Das geht alles wunderbar über Access, dafür brauchst Du doch kein Script:

Importiere die Datei einmalig mit dem Assistenten von Hand nach Access.
Das Festlegen des Feldformates machst Du mit einer Importspezifikation. Du gibst im Assistenten den Felddatentyp für jedes Feld ein. Über die Schaltfläche im Assistenten ”Weitere…”
kannst Du während des Importdialoges die Einstellungen als Importspezifikation speichern.

oder eine Zahl eingegeben, die größer ist, als die Feldgröße-Einstellung erlaubt


Wenn du noch Zellinhalte bearbeiten musst, dann importier in eine neue Tabelle und hol Dir die entsprechenden Teile aus dieser Tabelle heraus oder, falls Du die Feldgröße benötigst, ändere vor dem Import die Feldgröße, wenn die zu klein ist. (altes Feld umbenennen, neues Feld anlegen in entsprechender Größe, dann die Daten aus dem alten Feld rüberkopieren, altes Feld löschen).

Falls ich jetzt etwas falsch verstanden habe, dann erklär nochmal genauer was Du brauchst an der Stelle, wo Du die Fehlermeldung bekommst.

Gruß Marie
...