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

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

Member: Snuffchen
Snuffchen May 30, 2013 at 08:13:36 (UTC)
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;"
Member: thomas1972
thomas1972 May 30, 2013 updated at 08:36:51 (UTC)
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
Member: colinardo
colinardo May 30, 2013, updated at May 31, 2013 at 08:15:49 (UTC)
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
Member: Biber
Biber May 30, 2013 updated at 14:35:17 (UTC)
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
Member: thomas1972
thomas1972 May 30, 2013 at 16:25:25 (UTC)
Goto Top
Hallo an alle,
danke für die hilfreiche Unterstüzung