Hallo!
ich habe eine Exportfunktion in Access die eine temporäre Tabelle befüllt und dann diese als CSV exportieren soll, ich erhalte aber beim Ausführen immer die Fehlermeldung aus folgendem Screenshot.
Screenshot 2023-07-07 114736.png
Hier der Code:
Private Sub CMD_WD_CSV_Click()
On Error GoTo Err_CMD_WD_CSV_Click
'Exportdatei
Dim FILE As String
FILE = "O:\Daten-Public\Mast\Wirtschaftsdünger\Meldungen\WD_" & Me.Txt_Jahr & Format(Me.Txt_Monat, "00") & ".csv"
Dim datexist As String
datexist = Dir(FILE)
If Len(datexist) <> 0 Then
If MsgBox("Vorhandene Datei " & FILE & " überschreiben?", vbYesNo + vbQuestion, "Datei überschreiben?") = vbYes Then
Shell ("cmd.exe /c " & FILE & "-y")
MsgBox "Vorhandene Datei gelöscht.", vbOKOnly + vbInformation, "Erstellung Meldedatei"
Else
GoTo Exit_CMD_WD_CSV_Click
End If
End If
DoCmd.SetWarnings False
'DoCmd.Hourglass True
'Temp-Tabelle löschen und füllen
DoCmd.RunSQL "DELETE FROM TBL_Wirtschaftsduenger_Export"
DoCmd.OpenQuery "QRY_WD_EXP"
'Textdatei erstellen
DoCmd.TransferText acExportDelim, "WD_Exportspezifikation", "TBL_Wirtschaftsduenger_Export", FILE, True, ""
DoCmd.SetWarnings True
DoCmd.Hourglass False
MsgBox "Meldedatei " & FILE & " wurde erstellt.", vbOKOnly + vbExclamation, "Erstellung Meldedatei"
'Exportdatei erstellen und öffnen
Open FILE For Output As #1
rs.MoveFirst
Print #1, "Spalte 1;Spalte 2"
Do Until rs.EOF = True
Print #1, rs!WD_DATUM_VON & ";" & rs!WD_DATUM_BIS
rs.MoveNext
Loop
'Datei schließen
Close #1
Exit_CMD_WD_CSV_Click:
Exit Sub
Err_CMD_WD_CSV_Click:
MsgBox Err.Description
Resume Exit_CMD_WD_CSV_Click
End Sub
Der Fehler kommt in der Zeile 'DoCmd.TransferText acExportDelim, "WD_Exportspezifikation", "TBL_Wirtschaftsduenger_Export", FILE, True, ""'
Den Pfad habe ich kontrolliert, der ist vorhanden, verstehe aber nicht warum Access die Datei versucht zu öffnen, obwohl die eigentlich ja erst an der stelle erzeugt wird.
kann sich jemand da einen Reim drauf machen?
Das Problem mit dieser unlogischen Fehlermeldung gabs erst kürzlich.
Es lag an einer fehlerhaften Exportspezifikation. Also mal prüfen.
Hallo,
unverständlicher Löschvorgang und unklare Programm-Logik...
(LuftCode!:)
ZitatPrivate Sub CMD_WD_CSV_Click()
On Error GoTo Err_CMD_WD_CSV_Click
'Exportdatei
Dim FILE As String
FILE = "O:\Daten-Public\Mast\Wirtschaftsdünger\Meldungen\WD_" & Me.Txt_Jahr & Format(Me.Txt_Monat, "00") & ".csv"
If Dir(FILE) <> "" Then
If MsgBox("Vorhandene Datei " & FILE & " überschreiben?", vbYesNo + vbQuestion, "Datei überschreiben?") = vbYes Then
Kill File
MsgBox "Vorhandene Datei gelöscht.", vbOKOnly + vbInformation, "Erstellung Meldedatei"
Else
Exit Sub
End If
End If
'DoCmd.Hourglass True
'Temp-Tabelle löschen und füllen
Currentdb.Execute "DELETE * FROM TBL_Wirtschaftsduenger_Export", dbFailOnError
' Hier fehlt das "Füllen" (der Tabelle) komplett.....
'Textdatei erstellen
DoCmd.TransferText acExportDelim, "WD_Exportspezifikation", "TBL_Wirtschaftsduenger_Export", FILE, True, ""
DoCmd.Hourglass False
MsgBox "Meldedatei " & FILE & " wurde erstellt.", vbOKOnly + vbExclamation, "Erstellung Meldedatei"
'Exportdatei erstellen und öffnen Was soll das Ganze hier?
Dim LU as Long, rs As dao.Recortset
LU = Freefile
set rs = currentdb.openrecordset ("Select * from TBL_XXXXXXX, Where strFeld1 = 'Wasdenn?'",dbOpenSnapShot)
Open FILE For Output As #LU
rs.MoveFirst
Print #1, "Spalte 1;Spalte 2"
Do Until rs.EOF = True
Print #1, rs!WD_DATUM_VON & ";" & rs!WD_DATUM_BIS
rs.MoveNext
Loop
'Datei schließen
Close #LU
'Exportdatei öffnen
FollowHyperlink File
Exit_CMD_WD_CSV_Click:
Exit Sub
Err_CMD_WD_CSV_Click:
MsgBox Err.Description
Resume Exit_CMD_WD_CSV_Click
End Sub
Wenn weiterhin an ".csv" gemeckert wird, dann benutze ".txt" als Datei-Endung.
Danke für die Rückmeldungen!
@markusxy Ich kann auf den ersten Blick nichts fehlerhaftes in der Exportspezifikation erkennen, kannst du mir etwas konkretes nennen das ich kontrollieren soll?
@DF6GL habe den Code leider nicht komplett selbst geschrieben, nur auf den Schreibtisch bekommen um die Schnittstelle anzupassen.... was der letzte Passus da bewirken soll ist mir auch nicht ganz klar, bis auf weiteres nehme ich den auch mal raus.
Das befüllen der Tabelle passiert über 'DoCmd.OpenQuery "QRY_WD_EXP"' direkt nach dem DELETE. Das ist eine Anfüge Abfrage, die dann die entsprechenden Daten der Tabelle hinzufügt.
Wenn ich die Endung auf txt ändere, erhalte ich die gleiche Fehlermeldung:
Screenshot 2023-07-10 112037.png
Zitat von: brueninghoff am Juli 10, 2023, 11:21:33... was der letzte Passus da bewirken soll ist mir auch nicht ganz klar, bis auf weiteres nehme ich den auch mal raus.
Nur weil hier jemand erkärt der Teil sei unklar weil der Code unvollständig gezeigt wird willst du ihn rausnehmen - obwohl du die Zusammenhänge nicht erkennen kannst?
Ernsthaft jetzt?
Bezüglich Spezifikation musst du einfach alles durchschauen, die Fehlermeldung ist ja unspezifisch.
Feldnamen, Datentypen, Formatierung für jedes Feld.
ich lösche den Teil ja nicht direkt, erstmal wird nur auskommentiert. Zudem arbeite ich mit einer Backup-Version, falls sich mir der Sinn also noch erschließt ist also nichts weg.