Neuerdings Probleme bei csv-Export
Andrea
Gesendet: 02.01.24 12:15
Betreff: Neuerdings Probleme bei csv-Export


Regular

Beiträge: 77
252525

Hallo zusammen,

bei einem Kunden gibt es neuerdings Probleme mit dem Export von Daten in eine csv-Datei.

Konstellation: SQL-Server Backend und Access-Frontend; die Daten für die Endlosformulare werden mittels Pass-Through-Abfrage und gespeicherter Prozedur vom SQL-Server geholt

 

Die Vorgehensweise:

1. Mit dem Filedialog wird der Speicherplatz bestimmt; der Dateiname "Export.csv" wird vorgegeben, kann aber geändert werden

2. Aus der Recordsource des betroffenen Formulars wird eine temporäre Abfrage erstellt

3. Aus der temporären Abfrage wird eine temporäre Tabelle "tblExportTemp" erstellt

4. Export als csv, und hier setzen die Probleme ein. Ich habe die beiden mir bekannten Varianten ausprobiert:

 Variante A: DoCmd.TransferText acExportDelim, "ExportTempSpezifikation", "tblExportTemp", strCSVFilename, True

Führt zu Laufzeitfehler 3011: Das Microsoft Access-Datenbankmodul konnte das Objekt 'Export#csv' nihct finden. Stellen Sie sicher, dass das Objekt vorhanden ist und dass die Namens- und Pfadangaben richtig eingegeben wurden. Ist 'Export#csv' kein lokales Objekt sollten Sie die Netzwerkverbindungen prüfen oder sich an den Serveradministrator wenden.

--> Es ist ein lokales Objekt, der Pfad ist korrekt

--> aber woher kommt plötzlich die Raute anstelle des Punktes im Dateinamen?

Variante B: DoCmd.OutputTo acOutputTable, "tblExportTemp", acFormatTXT, strCSVFilename

 Exportiert die csv, allerdings werden die Daten nach 17 Zeichen abgeschnitten.

 

Hier noch mein Code:

    Dim fd As Object
    Dim strCSVFilename As String
    Dim db As DAO.Database
    Dim qdfExportTemp As DAO.QueryDef
           
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    fd.AllowMultiSelect = False
    fd.InitialFileName = CurrentProject.Path & "\Export.csv"
    
    If fd.Show Then
        strCSVFilename = fd.SelectedItems(1)
        Set db = CurrentDb
        If QueryExistsDAO("qryExportTemp" Then DoCmd.DeleteObject acQuery, "qryExportTemp"
        Set qdfExportTemp = db.CreateQueryDef("qryExportTemp"
        With qdfExportTemp
            .Connect = strConnectionString
            .SQL = Me!frm_CustomerOverviewSub.Form.RecordSource
            On Error GoTo 0
        End With
        Set db = Nothing
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "qryCreateExportTemp"
        DoCmd.SetWarnings True
        'Debug.Print strCSVFilename
        'Variante A:
        'DoCmd.TransferText acExportDelim, "ExportTempSpezifikation", "tblExportTemp", strCSVFilename, True
        'Variante B
        DoCmd.OutputTo acOutputTable, "tblExportTemp", acFormatTXT, strCSVFilename
        If QueryExistsDAO("qryExportTemp" Then DoCmd.DeleteObject acQuery, "qryExportTemp"
    End If

 

Hat jemand eine Idee?

 

Viele Güße

Andrea

Top of the page Bottom of the page