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
|