roberth
Goto Top

Mini Script um Access 2007 import funktion zu öfffnen, evt. mit bestimmten Vorgaben

Liebe Admins,

ich habe eine kleines Script zusammengebastelt mit einer super Hilfe eines netten Users, welches am Schluss ein VB-Script aufrufen sollte, welches folgendes machen sollte

1.) schau nach ob Access 2007 schon läuft
2.) wenn nicht dann öffne es mit einer bestimmten Datenbank
3.) öffne mir den Import Assistenten (Funktion) um txt Dateien in eine Tabelle einzufügen
4.) Der Clou an der Sache wäre wenn ich die Datei die zu importieren ist (imp.txt) schon irgendwie vorgeben kann

Ich denke mal dass dies nicht mehr wie ein 3 Zeiler wird....Kann und mag mir bitte jemand helfen...?

Grüße,
Roberth

Content-Key: 114396

Url: https://administrator.de/contentid/114396

Printed on: April 25, 2024 at 04:04 o'clock

Mitglied: 77559
77559 Apr 22, 2009 at 08:19:51 (UTC)
Goto Top
Hallo Roberth,

wenn deine Datensätze in der Textdatei immer die gleiche Struktur aufweisen ließe sich der Import ggfs auch komplett automatisieren.

Wenn das Beispiel aus deinem anderen Thread
A1234567;098234;oifdfdwd;000s04
Heißt vier Felder mit Semikolon getrennt fehlen noch Datenbank-,Tabellen- Feldnamen und Typen.

Gruß
LotPings
Member: roberth
roberth Apr 22, 2009 at 08:26:16 (UTC)
Goto Top
Ah, Hi guten Morgen:

genau hat immer die gleiche Struktur und zwar so:


B1249600;;;;;Abgenommen;22.04.2009;

die Tabelle in der DB heisst txt-import

Gruß,
roberth
Mitglied: 77559
77559 Apr 22, 2009 at 08:35:27 (UTC)
Goto Top
Google existiert übrigens immer noch, mit ein paar geeigneten Suchbegriffen findet man fast alles.
Zum Beispiel hier dieses
Set DataFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("IMP.txt",1)  

Set objConnection = CreateObject("ADODB.Connection")  
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=database.mdb"  

Set objRecordset = CreateObject("ADODB.Recordset")  
objRecordset.CursorLocation = 3
objRecordset.Open "SELECT * FROM TableName" , objConnection, 3, 3  

Do Until DataFile.AtEndOfStream
    arrTemp = Split(DataFile.ReadLine, ";")  
    If IsArray(arrTemp) Then
    	objRecordset.AddNew
    	objRecordset("FieldName1") = arrTemp(0)  
    	objRecordset("FieldName2") = arrTemp(1)  
    	objRecordset("FieldName3") = arrTemp(2)  
    	objRecordset.Update
    Else
    	'Only one item of data is on this line  
    End If 
Loop 

DataFile.Close
objConnection.Close
Set DataFile = Nothing
Set objRecordset = Nothing
Set objConnection = Nothing 

Das weiter anpassen (zu lassen face-wink sollte möglich sein.

Gruß
LotPings
Member: roberth
roberth Apr 22, 2009 at 10:10:31 (UTC)
Goto Top
so, erstaml wieder danke und dann versuche ichs mal zu verstehn was da angepasst werden muss:

Set DataFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("IMP.txt",1)   

-> muss das script jetzt in dem verzeichnis liegen wo auch die imp.txt ist ? oder kann/muss ich mit pfaden arneiten ? wenn ja mit mappings oder unc ?

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=database.mdb"  

-> selbe frage: datasource= DATENBANKNAME aber muss das script jetzt in dem verzeichnis liegen wo auch die imp.txt ist ? oder kann/muss ich mit pfaden arneiten ? wenn ja mit mappings oder unc ?

objRecordset.Open "SELECT * FROM TableName" , objConnection, 3, 3  

TableName = Tabellename ist klar, aber was heist die 3,3 dahinter ?

Do Until DataFile.AtEndOfStream
    arrTemp = Split(DataFile.ReadLine, ";")  
    If IsArray(arrTemp) Then
    	objRecordset.AddNew
    	objRecordset("FieldName1") = arrTemp(0)  
    	objRecordset("FieldName2") = arrTemp(1)  
    	objRecordset("FieldName3") = arrTemp(2)  
    	objRecordset.Update

meine interpretation:
gehe zum letzten datensatz
dann arrTemp = Split(DataFile.ReadLine, ";") da schreibt er sich ein temporäres array , dass er durch ; trennt
dann muss ich in
objRecordset("FieldName1") = arrTemp(0)
alle meine Spaltennamen eintragen
also bei meinem bsp wären das dann
(B0704600;;;;;Abgenommen;22.04.2009;xy) 7 Fieldnames (spaltennamen)

    Else
    	'Only one item of data is on this line  
    End If 
Loop 

dass versteh ich nicht ganz, also wann kommt das else end if und der loop ?

der rest ist klar, er löscht die variablen....

Stimmt das so ?
Mitglied: 76109
76109 Apr 22, 2009 at 13:55:50 (UTC)
Goto Top
Hallo roberth,

ich möchte LotPings ein wenig unterstützen und versuchen Deine Fragen zu beantwortenface-smile


Eine wichtige Frage vorweg: Hat Deine Datenbank einen Passwortschutz. Dann wird's etwas komplizierter?


Alternativ können die Dateinamen auch per Batch als Argumente übergeben werden, ansonsten:


Zum Import:
 
Set DataFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("IMP.txt",1)   

Anstatt "IMP.txt" muss hier der komplette Dateipfad der Datei stehen z.B: "D:\Test\Import.Txt"


Zur Datenbank:
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb;"  

Anstatt Source=database.mdb" muss hier der komplette Dateipfad der Datei stehen z.B: ...Source=D:\Test\Datenbank.Mdb;"


Zu TableName und 3,3:
objRecordset.Open "SELECT * FROM TableName" , objConnection, 3, 3  

Anstatt TableName muss hier der Tabellenname der Tabelle in der Datenbank stehen z.B: ...FROM Tabelle1"...

Die 3,3 stehen für den Datenbankzugriff = adModeReadWrite, adUseClient


Zu Loop, IF, Feldnamen etc.:
Do Until DataFile.AtEndOfStream
    arrTemp = Split(DataFile.ReadLine, ";")  
    If IsArray(arrTemp) Then
    	objRecordset.AddNew
    	objRecordset("FieldName1") = arrTemp(0)  
    	objRecordset("FieldName2") = arrTemp(1)  
    	objRecordset("FieldName3") = arrTemp(2)  
    	objRecordset.Update
    Else
    	'Only one item of data is on this line  
    End If 
Loop 

1. Die Anweisung Do bis Loop bildet eine Schleife und wird für jede Textzeile in Import.Txt einmal ausgeführt.

2. If prüft ob die aktuelle Zeile Trennzeichen (;) enthält, wenn ja werden die Einträge in die Datenbank geschrieben
wenn Nein (Else) wird hier bestimmt was passieren soll, wenn eine Zeile keine Trennzeichen beinhaltet.
Entweder Else entfernen, was soviel heisst wie Zeile ignorieren oder mit Else eine Fehlermeldung ausgeben.
Aktuell steht hier nur ein Kommentar mit (') gekennzeichnet

3. Mit Feldnamen sind nicht die Einträge in der Import.Txt gemeint, sondern die Feldnamen, wie sie in der
Datenbank-Tabelle stehen. (B0704600;;;;;Abgenommen;22.04.2009;xy) sind Einträge und keine Feldnamen.
Hier wäre es nicht schlecht zu wissen ob die Anzahl der Einträge in Import.Txt und die Anzahl der Felder
in der Datenbank und auch die Reihenfolge übereinstimmt?

Hoffe, ich hab alles so erklärt, dass Du es auch verstehst.


Gruß Dieter
Mitglied: 77559
77559 Apr 22, 2009 at 14:02:24 (UTC)
Goto Top
Zitat von @roberth:
so, erstaml wieder danke und dann versuche ichs mal zu verstehn was da
angepasst werden muss:

> Set DataFile =
> CreateObject("Scripting.FileSystemObject").OpenTextFile("IMP.txt",1)  
> 
> 

-> muss das script jetzt in dem verzeichnis liegen wo auch die imp.txt ist ?
Nein
oder kann/muss ich mit pfaden arneiten ?
JA
wenn ja mit mappings oder unc ?
AFAIK Beides

selbe frage: datasource= DATENBANKNAME aber muss das script jetzt in dem verzeichnis liegen wo auch die imp.txt ist ?
oder > kann/muss ich mit pfaden arneiten ? wenn ja mit mappings oder unc ?
Wie oben

> objRecordset.Open "SELECT * FROM TableName" ,  
> objConnection, 3, 3
> 

TableName = Tabellename ist klar, aber was heist die 3,3 dahinter ?
Übernommener Code, habe derzeit keinenen Access auf Access face-wink da musst du jemand anderen Fragen.


Do Until DataFile.AtEndOfStream
arrTemp = Split(DataFile.ReadLine, ";")
If IsArray(arrTemp) Then
objRecordset.AddNew
objRecordset("FieldName1") = arrTemp(0)
objRecordset("FieldName2") = arrTemp(1)
objRecordset("FieldName3") = arrTemp(2)
objRecordset.Update


meine interpretation:
gehe zum letzten datensatz
Nein, arbeite Zeilen 11 bis 20 ab bis die DO Bedingung zutrifft.

dann arrTemp = Split(DataFile.ReadLine, ";") da schreibt er sich ein temporäres array , dass er durch ; trennt
Richtig hatte ich schon so angepasst.

dann muss ich in
objRecordset("FieldName1") = arrTemp(0)
alle meine Spaltennamen eintragen
also bei meinem bsp wären das dann
(B0704600;;;;;Abgenommen;22.04.2009;xy) 7 Fieldnames (spaltennamen)
Wobei aber der Text Fieldname1 durch deinen ersten Spaltenamen auszutauschen ist, die folgenden Zeilen entsprechend.

Else
'Only one item of data is on this line
End If
Loop


dass versteh ich nicht ganz, also wann kommt das else end if und der loop ?
Das Else bezieht sich auf das vorherige IF (Dafür sind doch die Einrückungen da, um das zu verdeutlichen)
Sprich wenn es ein Array IST werden die Spalten zugeordnet. Wenn es keine Array ist wird die Zeile ignoriert.


der rest ist klar, er löscht die variablen....

Stimmt das so ?
Siehe meine Anmerkungen, also nicht ganz face-wink

Gruß
LotPings
Member: roberth
roberth Apr 23, 2009 at 08:10:37 (UTC)
Goto Top
vielen Dank für diese ausführlcihe interpretation, ich werds glecih mal zusammenstricken.
die db hat keinen passwortschutz.
kann ich auch mit unc pfaden arbeiten ?
die einträge sind in der richtigen reihenfolge auch wie die feldnamen

gruß,
roberth
Member: roberth
roberth Apr 23, 2009 at 08:13:03 (UTC)
Goto Top
erstmal vielen Dank !! Ich werds jetzt mal zusammenstricken mal gucken....
Gruß,Roberth
Member: roberth
roberth Apr 23, 2009 at 09:04:30 (UTC)
Goto Top
Also nach dem Anpassen sagt mir der Windows Script Host folgendes:

Skript: Z:\blabla\import_access.vbs
Zeile: 4
Zeichen: 1
Fehler: Nicht erkennbares Datenbankformat "\\blbla\bla.accdb
Code: 80004005
Quelle: Microsoft Jet Database Engine

mhhh, was das denn jetzt ? Fehler Code im Internet nachgeguckt: Allgemeiner Fehler, kann alles mögliche sein, u.U. Rechteprobleme, Passwort etc.
Allerdings ist die DB nicht passwort geschützt o.ä.

Gruß,
Roberth
Mitglied: 76109
76109 Apr 23, 2009 at 10:12:19 (UTC)
Goto Top
Hallo roberth,

hast Du den Pfad der Datenbank-Datei richtig angegeben? Die Datei muss natürlich schon existieren.

Aber ich vermute mal, selbst wenn ja, das es so trotzdem noch nicht funktioniert, weil wahrscheinlich
noch UserID, User-Passwort etc beim Schreib-Modus mit angegeben werden müssen, was dann
leider auch noch den Zugriff auf die Sicherheitsdatei "%System32%\System.Mdw" erfordert.

Falls der Dateipfad stimmt und es trotzdem noch nicht funktioniert, muss Du etwas Geduld haben.
Muss es selbst erst testen.

Gruß Dieter
Member: roberth
roberth Apr 23, 2009 at 10:26:49 (UTC)
Goto Top
Hallo,

danke für Deine Antwort. Also der Pfad stimmt 100% -> habs mit ausführen...etc getestet.
Das mit den Schreib-Modus kann schon sein, liegt auf nem Netzlaufwerk...oder hat das nix damit zu tun ?

Gruß,
roberth
Mitglied: 76109
76109 Apr 23, 2009 at 11:05:21 (UTC)
Goto Top
Hallo roberth,

das Script müsste nach entsprechender Anpassung funktionieren:

1. Dateipfade anpassen
2. Tabellenname anpassen (From Tabelle1)

Option Explicit

Const mdbPath = "F:\Test\Script05\Test.mdb"	  
Const csvPath = "F:\Test\Script05\Test.csv"  	  

Const mdbSql = "SELECT * FROM [Tabelle1]"   	  

Const adModeRead = 1
Const adModeReadWrite = 3
Const adUseClient = 3
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Const adPromptComplete = 2

Dim mdbCon, mdbRec, Data, Fso, csvFile, i

'Main Begin  
    
    Set Fso = CreateObject("Scripting.FileSystemObject")  
    Set csvFile = Fso.OpenTextFile(csvPath)
    
    Call OpenRecordset
    
    Do Until csvFile.AtEndOfStream
        Data = Split(csvFile.ReadLine, ";")  
        If UBound(Data) = 7 Then
            With mdbRec
                .AddNew
                 For i = 0 To 6:  .Fields(i) = Data(i):  Next
                .Update
            End With
        End If
    Loop
    
    mdbRec.Close:   mdbCon.Close:  csvFile.Close

    WScript.Quit

'Main End  


Private Sub OpenRecordset()
    
    Set mdbCon = CreateObject("ADODB.Connection")  
    Set mdbRec = CreateObject("ADODB.Recordset")  
    
    With mdbCon
        .Mode = adModeReadWrite
        .CursorLocation = adUseClient
        .Provider = "Microsoft.ACE.OLEDB.12.0"    'Access 2007  
        .Properties("Data Source") = mdbPath  
        .Properties("Persist Security Info") = False  
        .Open
    End With
    
    With mdbRec
        .ActiveConnection = mdbCon
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Source = mdbSql
        .Open
    End With
End Sub

Gruß Dieter


[edit]Korrekturen vorgenommen am24.04.2009 um 14:27[/edit]
Member: roberth
roberth Apr 23, 2009 at 11:17:06 (UTC)
Goto Top
testes glecih, danke !!!
sind diese alten script zeilen da auch untergebracht ? versteh das script nämlcih jetzt gar nimmer.....

Do Until DataFile.AtEndOfStream
    arrTemp = Split(DataFile.ReadLine, ";")  
    If IsArray(arrTemp) Then
    	objRecordset.AddNew
    	objRecordset("Systemnummer") = arrTemp(0)  
    	objRecordset("Feld2") = arrTemp(1)  
    	objRecordset("Feld3") = arrTemp(2)  
	objRecordset("Feld4") = arrTemp(3)  
	objRecordset("Abgenommen") = arrTemp(4)  
	objRecordset("Austausch Datum") = arrTemp(5)  
	objRecordset("Bemerkung") = arrTemp(6)  
    	objRecordset.Update
    Else
    	'ignoriere Zeilen ohne vollständige Inhalt  
    End If 
Loop 

Gruß,roberth
Mitglied: 76109
76109 Apr 23, 2009 at 11:45:12 (UTC)
Goto Top
Hallo roberth,

dies ist im Prinzip genau identisch.

Der Unterschied ist nur, dass das was zwischen <With> und <With End> steht mit einem "." abgekürzt werden kann.
D.h. wenn da steht <With objRecordset> und dann <Punkt..AddNew> ist das dasselbe wie <objRecordset.AddNew>.

Die Feldnamen der Tabelle kann man auch über Item(0), Item(1) usw. ansprechen. D.h. Item(0) = Feld "Sytemnummer"
Item(1) = "Feld2" usw. Dadurch kann ich mit einem Zähler in der For-Schleife alle Felder mit der Zahl 1 - 7 ansprechen.
Ubound repräsentiert die Zahl bzw. Anzahl der Spalten im Import-Array.

Sofern Du keine Fehlermeldung ausgeben möchtest, falls sich in der Import.txt eine Leerzeile befindet, dann kann das Else entfallen.

Gruß Dieter
Member: roberth
roberth Apr 23, 2009 at 11:54:35 (UTC)
Goto Top
ah,ok !
meinste mit der zeile:

Const csvPath = "F:\Test\Script05\Test.csv"   


dass der sich noch ne csv "zwischentabelle" anlegt ?
oder ist dass der verweis auf meine imp.TXT ?
weil ich habe ja keine csv datei zum importieren sondern eine txt

Gruß,
Roberth
Mitglied: 76109
76109 Apr 23, 2009 at 11:59:32 (UTC)
Goto Top
Hallo roberth,

nö, hier soll Deine Pfadangabe für die Import-Datei stehen. Das war mein Pfad zum Testenface-smile

Habe ich doch am Anfang vom Code darauf hingewiesen?


Gruß Dieter

PS. Ob die Datei jetzt *.Csv oder *.Txt heisst, ist völlig wurscht. Wicht ist nur das die Einträge mit dem Trennzeichen ";" getrennt sind.
Mitglied: 76109
76109 Apr 23, 2009 at 12:44:35 (UTC)
Goto Top
Hallo roberth,

habe im Code Zeile 26 eine Kleinigkeit übersehen und bereits geändert.

If UBound(Data) Then

muss heissen:
If UBound(Data) = 6 Then 

Gruß Dieter
Member: roberth
roberth Apr 23, 2009 at 12:57:02 (UTC)
Goto Top
so, jetzt kommt der selbe Fehler bei :

Zeile 53
Zeichen 9
nicht erkennbares Datenbankformat
Fehlercode: 80004005

Gruß,
roberth
Mitglied: 76109
76109 Apr 23, 2009 at 13:07:13 (UTC)
Goto Top
Hallo roberth,

hast Du den Pfad der Datenbank-Datei in <mdbPath= "?"> richtig angegeben (*.mdb)?
hast Du den Tabellennamen angepasst <From ?(Tabellenname)>

Gruß Dieter
Member: roberth
roberth Apr 23, 2009 at 13:20:24 (UTC)
Goto Top
mhh, immer noch, exakt der selbe Fehler:

Zeile 53
Zeichen 9
nicht erkennbares Datenbankformat
Fehlercode: 80004005

Gruß,roberth
Mitglied: 76109
76109 Apr 23, 2009 at 13:26:40 (UTC)
Goto Top
Hallo roberth,

also, trifft das zu: Die Datenbank-Datei *.Mdb existiert bereits und beinhaltet eine Tabelle mit 7 Feldern?

Den Tabellennamen hast Du in <FROM ?> anstelle von Tabelle1 hingeschrieben?

Gruß Dieter
Mitglied: 76109
76109 Apr 23, 2009 at 13:54:29 (UTC)
Goto Top
Hallo roberth,

Der Fehler liegt vermutlich doch am Datenbank-Format.

Habe noch Access 2002 und Access 2007 hat wahrscheinlich ein anderes Format.

Dazu muss ich wissen, welche Dateierweiterung Deine Datenbank-Datei hat, *.mdb oder anders?

Wenn *.accdb, dann muss folgendes in Zeile 50 geändert werden:

<.Provider = "Microsoft.Jet.OLEDB.4.0"> in <.Provider="Microsoft.ACE.OLEDB.12.0">

Gruß Dieter
Member: roberth
roberth Apr 23, 2009 at 14:29:41 (UTC)
Goto Top
so, ja genau das wars, die db ist ne 2007er mit der .accdb endung.....
allerdings kommt jetzt folgende FM:

Zeile: 62
Zeichen: 9
Fehler : Syntax Fehler in From-klausel
Code: 80040e14

hab gogoogelt aber leider kann ich mir keinen reim drauf machen...

Gruß,
Roberth
Member: roberth
roberth Apr 23, 2009 at 14:31:44 (UTC)
Goto Top
ja, ich habe alles individualisiert....
Mitglied: 76109
76109 Apr 23, 2009 at 14:43:05 (UTC)
Goto Top
Hallo roberth,

da bin ich im Moment leider auch überfragt.

Ist Dir vielleicht eine Stringquote am String-Ende abhanden gekommen "SELECT ......"

Hast Du stehen "SELECT * FROM Tabellenname" ?

Dann Versuch mal: "SELECT * FROM [Tabellenname]"


Gruß Dieter
Member: roberth
roberth Apr 23, 2009 at 14:48:40 (UTC)
Goto Top
ja, hab ich:

Const mdbSql = "SELECT * FROM txt-import"  

Gruß,roberth
Mitglied: 76109
76109 Apr 23, 2009 at 14:51:02 (UTC)
Goto Top
Versuch mit [ ]: Const mdbSql = "SELECT * FROM [txt-import]"

Gruß Dieter
Member: roberth
roberth Apr 24, 2009 at 08:42:25 (UTC)
Goto Top
naja, jetzt kommt keine FM mehr, aber es funktioniert auch nicht...also es passiert nix, er schreibt die daten nicht in die tabelle txt-import

oder meinst du ich soll das mit vorne dran ? Natürlicht nicht , oder ?

Gruß,
roberth
Mitglied: 76109
76109 Apr 24, 2009 at 09:22:38 (UTC)
Goto Top
Hallo roberth,

nö, natürlich nicht. Nur das, was hinter dem Doppelpunkt stehtface-smile

Steht in der Import.Txt was drinne und enthält eine Zeile 6 oder 7 Trennzeichen ";" ?

Gruß Dieter
Member: roberth
roberth Apr 24, 2009 at 09:38:17 (UTC)
Goto Top
scherzchen auf meine kosten, weil ich halt das script überhaupt nimmer richtig versteh....war schon klar...face-wink))

also, die imp.txt da steht was drinne, und eine original zeile wäre:


B1845252;;;;;Abgenommen;24.04.2009; -> macht 7 ";"

mir ist aber aufgefallen dass manchmal die erste zeile / oder die ersten 2 zeilen leer sind, das kommt daher weils halt noch alles manuell gemacht wird und dann die imp.txt auch noch händisch gelöscht wird, dann abgespeichert mim cursor in der falschen zeile....kann das auch damit zu tun haben ?

oder wäre das hier die lösung:

If UBound(Data) = 7 Then



gruß,
roberth
Mitglied: 76109
76109 Apr 24, 2009 at 09:51:39 (UTC)
Goto Top
Hallo roberth,

das wäre schon mal richtig, aber es muss noch etwas geändert werden:

If UBound(Data) = 7 Then

Und:

For i = 0 To 6:  .Fields(i) = Data(i):  Next

Leerzeichen sind egal, sofern Leerzeilen keine 7 Trennzeichen beinhalten.


Gruß Dieter
Member: roberth
roberth Apr 24, 2009 at 09:55:59 (UTC)
Goto Top
nicht so :

For i = 0 To 7:  .Fields(i) = Data(i):  Next  

also bei der der for schleife eine 6 und nicht 7 ? erklärung ? 0 ist schon was sozusagen....

-> und ohne das doppelte next was hier komischerweise angezeigt wird ...face-wink

Gruß,
roberth
Mitglied: 76109
76109 Apr 24, 2009 at 09:58:56 (UTC)
Goto Top
Hallo roberth,

eine 6 bitte. Es sind ja nur 7 Felder und in der For-Schleife wird ab 0 gezählt. D.h. von 0-6 ergibt 7 Felder.

Die For-Zeile genauso, wie angegeben.

Gruß Dieter
Member: roberth
roberth Apr 28, 2009 at 11:04:16 (UTC)
Goto Top
hallo dieter,

also ich konnts jetzt erst testen, es funktionert nun perfekt, vielen herzlichen Dank !!!!
gruß,
roberth
Member: roberth
roberth Apr 28, 2009 at 14:09:49 (UTC)
Goto Top
noch eine kleinigkeit:


wie lösche cih denn jetzt am ende des scripts den inhalt der xyz.txt ?? (nicht die datei sondern nur den inhalt)

gruß,
roberth
Mitglied: 76109
76109 Apr 28, 2009 at 22:34:36 (UTC)
Goto Top
Hallo roberth,

gottseidankface-smile

Schreibe bzw. kopiere diese Code-Zeile und füge sie im Script (siehe weiter oben) in Zeile 36 ein.
Dadurch wird die Datei auf 0 gesetzt und gespeichert..
Set csvFile = Fso.CreateTextFile(csvPath):   csvFile.Close 

Gruß Dieter

PS. Um eventuellen Missverständnissen vorzubeugen: Die Zeile 35 und 37 bleiben genauso wie sie sind.
Member: roberth
roberth Apr 29, 2009 at 07:21:41 (UTC)
Goto Top
super vielen Dank, dass hat jetzt jede Menge rumfummelei per Hand erspart !!!
Was passiert denn jetzt eigentlcih wenn ein Fehler kommt, sagen wir mal doppelter Eintrag, da motzt dann eh Access aber wird das File dann trotzdem gelöscht ?

gruß,
roberth
Mitglied: 76109
76109 Apr 29, 2009 at 07:43:19 (UTC)
Goto Top
Hallo roberth,

Access schreibt auch mehrfach gleiche Datensätze in die Datenbank.

Und sollte ein Fehler auftreten, wird der Dateinhalt nicht gelöscht, da sich die Anweisungen - Datei auf 0 setzen - am Code-Ende befinden und nicht mehr ausgeführt werden.

Gruß Dieter