thomas1972
Goto Top

Access 2010 VBA Datum aus Datei auslesen, per Variable in SQL einbinden und Tabelle Füllen.

Hallo ich habe auf einem Laufwerk Dateien die über eien schleife nach und nach eingelesen werden.
Nun versuche ich per VBA das Datum der Datei auszulesen und dne inhalt der Datei + ausgelesenes Datumein eine Tabelle per SQL zu schreiben. Dieses funktioniert leider nicht


Der Code sieht wie folgt aus
Sub schleife_info_xml()
' Prüfe ob verzeichnis leer  
Dim fs As Object, ordner As Object
Dim spath As String
Dim sfile As String
Dim Erstelldatum As Date

Set fs = CreateObject("Scripting.filesystemobject")  
Set ordner = fs.GetFolder("Q:\Zentral\DBA\Ressort\DT_XML\")  
Do
If ordner.SubFolders.Count * 1 + ordner.Files.Count * 1 = 0 Then
   SysCmd acSysCmdSetStatus, "Keine info_xml zum Einlesen vorhanden"  
   Exit Sub
Else
SysCmd acSysCmdSetStatus, "XML Dateien werden entpackt"  
'Datei verschieben  
ExecCmd "C:\7ZipA\xml_verschieben.bat"  
'Datum auslesen  
spath = "Q:\Zentral\DBA\Ressort\DT_XML\" ' Pfad setzen.  
sfile = Dir(spath & "K00VZF.DT.XML*")   ' Ersten Eintrag abrufen.  

Erstelldatum = Format(FileDateTime(spath & sfile), "dd.mm.yyyy")  
'Datei entpacken  
ExecCmd "C:\temp\entpacken.bat"  
   ' Start XML Dateien aufbereiten  
SysCmd acSysCmdSetStatus, "XML Dateien werden aufbereitet"  
     Call xmlDatein_einlesen

'Aktualisieren DB _Datum  
DoCmd.RunSQL "INSERT INTO DB_Betriebe_Anlage ( service, rnteb, ref, Datum) SELECT DBA_global.service, DBA_global.rnteb, DBA_global.ref, " & "[Erstelldatum]" & " FROM DBA_global;"  


SysCmd acSysCmdSetStatus, "XML Dateien erfolgreich aufbereitet"  
End If
Loop
End Sub

anstatt das Datum zu übernehmen erscheint ein Popup Fenster.
Erstelldatum
Gebe ich ein festes Datum vor
DoCmd.RunSQL "INSERT INTO DB_Betriebe_Anlage ( service, rnteb, ref, Datum) SELECT DBA_global.service, DBA_global.rnteb, DBA_global.ref, " & "'01.05.2013'"  &" FROM DBA_global;"  
übernimmt er den Wert 01.05.2013 in die Spalte Datum

Wie bekomme ich es hin, dass ohne Nachfrage die Variable Erstelldatum verwendet wird?

Content-Key: 207241

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

Ausgedruckt am: 29.03.2024 um 08:03 Uhr

Mitglied: Snuffchen
Snuffchen 30.05.2013 um 10:13:36 Uhr
Goto Top
DoCmd.RunSQL "INSERT INTO DB_Betriebe_Anlage ( service, rnteb, ref, Datum) SELECT DBA_global.service, DBA_global.rnteb, DBA_global.ref, " & Erstelldatum & " FROM DBA_global;"
Mitglied: thomas1972
thomas1972 30.05.2013 aktualisiert um 10:36:51 Uhr
Goto Top
Danke für die Rückmeldung,

dann erscheint der Hinweis:
Syntaxfehler in Zahl in Abfrageausdruck '08.05.201'.

er übernimmt nicht den reelen Wert 08.05.2013 sondern schneidet diesen ab.

gefolgt von

Laufzeitfehler '3075'
'|1' in Abfrageausdruck '|2'

gebe ich im Direktbereich
msgbox erstelldatum ein, wird mir der Wert richtig ausgegeben
Mitglied: colinardo
colinardo 30.05.2013, aktualisiert am 31.05.2013 um 10:15:49 Uhr
Goto Top
Muss das Datum nicht noch von einer # umschlossen sein, wenn das Feld vom Typ DateTime ist ? Ansonsten ist es beim Feldtyp "Text" mit einfachen Hochkommata(') einzuschließen.

DoCmd.RunSQL "INSERT INTO DB_Betriebe_Anlage ( service, rnteb, ref, Datum) SELECT DBA_global.service, DBA_global.rnteb, DBA_global.ref, #" & Erstelldatum & "# FROM DBA_global;"

Grüße Uwe
Mitglied: Biber
Biber 30.05.2013 aktualisiert um 16:35:17 Uhr
Goto Top
Moin thomas1972,

wenn du schreibst:
DoCmd.RunSQL "INSERT INTO DB_Betriebe_Anlage ( service, rnteb, ref, Datum) SELECT DBA_global.service, DBA_global.rnteb, DBA_global.ref, " & "'01.05.2013'" &" FROM DBA_global;"
-> dieses funktioniert, dann ist ja offensichtlich das Ziel-Feld in der Accesstabelle nur ein ZEICHENfeld, keines vom Datentyp DATUM.

dann wäre also ein Zusammenbau des SQLStatements wie folgt angesagt:
DoCmd.RunSQL "INSERT INTO DB_Betriebe_Anlage ( service, rnteb, ref, Datum) " &  _   
  "SELECT DBA_global.service, DBA_global.rnteb, DBA_global.ref, " & _   
       &"'" & Format(Erstelldatum, "dd.mm.yyyy") &"'"  &" FROM DBA_global;"  

Grüße
Biber
Mitglied: thomas1972
thomas1972 30.05.2013 um 18:25:25 Uhr
Goto Top
Hallo an alle,
danke für die hilfreiche Unterstüzung