none
Ausgabe Daten (Access 2013) in Text-Datei (.txt)

    Frage

  • Habe eine Datenbank  (Access 2013) für Schwimmverein programmiert, bei der die Meldungen in einem bestimmten Format als Textdatei (.txt) mit dem Befehl >WriteLine< ausgegeben werden; nun hat der Deutsche Schwimmverband die tolle Idee gehabt und verlangt jetzt einen neuen Standard, wobei die Daten im UTF-8-Code ohne BOM ausgegeben werden müssen.

    Habe noch keine Idee, wie ich das codieren muss.

    Im Moment helfe ich mir mit Notepad, wo die Möglichkeit besteht, Textdateien von Ansi in Utf-8 ohne BOM zu konvertieren und umgekehrt; bei Einlesen von Daten aus der Textdatei setzt er nämlich die Umlaute und das ß nicht um.

    Diese fötische Möglichkeit kann ich zwar dem Anwender zumuten, ist aber nicht das Gelbe vom Ei.

    Wer kann mir weiter helfen? 

    Danke im voraus!

    Donnerstag, 3. Dezember 2015 17:47

Alle Antworten

  • Hallo Wolfgang,

    um dir überhaupt auch nur ansatzweise helfen zu können, müsstest Du uns deinen Code zeigen, mit dem Du die Textdatei erzeugst.

    WriteLine kann vieles sein. Poste daher bitte den gesamtem Code, der mit der Dateierstellung und dem Schreiben des Inhalts zu tun hat.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 3. Dezember 2015 22:08
  • Hallo, Stefan!

    Nachfolgend der Code zum Erstellen der Text-File:

            zwform5_exp_zz = 0
            meldeexcel.Index = "Zeilen_ZZ"
            meldeexcel.Seek ">=", 0
        If meldeexcel.NoMatch Then
            Antwort = MsgBox("Es liegen keine Daten zum Export vor !!", vbOKOnly + vbCritical, "Prüfen Export der Meldungen")
            GoTo Allesende1
        End If
    '
            Set fs = CreateObject("Scripting.FileSystemObject")
            Set a = fs.CreateTextFile(zwout_excel, True)
    '
            Do Until meldeexcel.EOF
    '
            a.WriteLine (meldeexcel.Fields![Format_5])
            zwform5_exp_zz = zwform5_exp_zz + 1
            meldeexcel.MoveNext
            Loop
            a.Close
    '
        If zwform5_exp_zz = 0 Then
            Antwort = MsgBox("Es liegen keine Daten zum Export vor !!", vbOKOnly + vbCritical, "Prüfen Export der Meldungen")
            GoTo Allesende1
        End If
    '
            Set fs_exp = CreateObject("Scripting.FileSystemObject")
            Set a_exp = fs_exp.OpenTextFile(zwout_excel)
            zwform5_exp_zz = 0
    '
    Kontr_Format_5:
            zwzeile_form5 = a_exp.ReadLine
        If zwzeile_form5 = "FORMAT:Vereinsmeldeliste;6;" Then GoTo Export_OK
            zwform5_exp_zz = zwform5_exp_zz + 1
        If zwform5_exp_zz > 2 Then
            a_exp.Close
            Antwort = MsgBox("Export der Meldungen im >Format 6< fehlerhaft!!", vbOKOnly + vbCritical, "Prüfen Export Format 6")
            GoTo Allesende1
        End If
            GoTo Kontr_Format_5
    '
    Export_OK:
            a_exp.Close
    '

    Im Feld Format_5 der Tabelle meldeexcel stehen die Informationen zum Exportieren; die Tabelle wird sequentiell gelesen und dann über das File a in den Ordner zwout_excel ausgegeben; also an und für sich relativ einfach. Da fangen aber jetzt meine Schwierigkeiten an, das Fiel im UTF-8-Code zu exportieren.

    Danke im voraus!

    Freitag, 4. Dezember 2015 06:54
  • Ich habe das letzte mal folgenden Code verwendet, um eine Datei in UTF-8 Codierung zu schreiben:

    Dim fsT As Object
    Set fsT = CreateObject("ADODB.Stream")
    fsT.Type = 2 'Specify stream type - we want To save text/string data.
    fsT.Charset = "utf-8" 'Specify charset For the source text data.
    fsT.Open 'Open the stream And write binary data To the object
    fsT.WriteText "special characters: äöüß"
    fsT.SaveToFile sFileName, 2 'Save binary data To disk

    Gruß

    Freitag, 4. Dezember 2015 07:05
  • Hallo, Stefan!

    Habe inzwischen das Problem der Ausgabe von Daten als Textfile im UTF8-Code ohne BOM gelöst; in der Set-Anweisung muss der Parameter TristateTrue zusätzlich angegeben werden, daurch erfolgt dann die entsprechende Ausgabe.

    Nachwievor habe ich aber das Problem mit dem Lesen von Textdateien im UTF-8-Code ohne BOM; in der Set-Anweisung wird der Parameter TristateTrue als Laufzeitfehler ausgewiesen; d.h. ohne zusätzlichem Parameter werden die Umlaute und das ß falsch dargestellt.

    Bin aber schon zufrieden, dass die Ausgabe korrekt funktioniert!

    Gruss

    Wolfgang

    Freitag, 4. Dezember 2015 11:17