online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Matty vom 17.08.2019, 12:43 Options

Zeilenumbruch in der Ausgabedatei

Hallo, hallo,

ich versuche hier mei Problem zu schildern

Ich habe in Access97 eine Tabelle, ca. 70 Spalten, welche danach in einer Texdatei ausgegeben werden soll (*.txt), wo die Felder mit Semikolon ";" getrennt sein sollen. Soweit ok, habe ich hinbekommen.
Das Problem ist, dass jede Zeile in drei geteilt werden soll und untereinander linksbündig angeordnet. Ich versuche mal hier ein Beispiel darzustellen:

Beispiel Access Tabelle, ohne Überschrift, nur der Inhalt:
A | 1 | 2 | 3 | 4 | B | 5 | 6 | 7 | 8 | C | 9 | 10 | 11 | 12
A | 1 | 2 | 3 | 4 | B | 5 | 6 | 7 | 8 | C | 9 | 10 | 11 | 12 usw
Die Zeilen sind natürlich nicht identisch.

Das Ergebnis soll so als Textdatei aussehen:
A;1;2;3;4
B;5;6;7;8
C;9;10:11;12
A;1;2;3;4
B;5;6;7;8
C;9;10:11;12 usw.

Also bei B und C ein Zeilenumbruch, dann wieder A usw.

Hoffe, dass ich deutlich genug war ;-)
Hat schon jemand von euch die Erfahrung gemacht und mir weiterhelfen kann?

Vielen Dank

Gruß Matty


Antwort schreiben

Antwort 1 von Teddy7 vom 17.08.2019, 14:21 Options

das ist m.E. nur mit VBA-Programmierung möglich.

Gruß
Teddy

Antwort 2 von Coolpix vom 17.08.2019, 15:12 Options

hallo Matty,

ich habe hier eine kleine Prozedur, welche die Datensätze einer Tabelle in ein Textfile im TEMP-Vezeichnis ausgibt...
ich hoffe das hilft dir weiter!

Sub TextAusgabe()
    Dim Datei As String
    Dim strSQL As String
    Dim RS As DAO.Recordset
    Dim DB As DAO.Database
    Dim Part As Variant
    Dim Parts As Variant
    Dim strDS As String
    Dim strAusgabe As String
    Dim i As Integer
    Dim Schalter As Boolean

    'Pfad der Ausgabedatei
    Datei = VBA.Environ("TEMP") & "\Ausgabe.txt"
    strSQL = "SELECT * FROM tblDaten"

    Close #1
    'Achtung Ausgabedatei wird durch jeden Prozeduraufruf überschrieben
    'Falls die Datei nicht existiert wird sie erstellt
    Open Datei For Output As #1

    Set DB = CurrentDb()
    Set RS = DB.OpenRecordset(strSQL, dbOpenDynaset)

    Do While Not RS.EOF
        strDS = ""
        For i = 0 To RS.Fields.Count - 1
            strDS = strDS & RS.Fields(i) & "|"
        Next i
        strDS = VBA.Mid(strDS, 1, (VBA.Len(strDS)) - 1)
        Parts = VBA.Split(strDS, "|")
        For Each Part In Parts
            If IsNumeric(Part) = False Then
                If VBA.Len(strAusgabe) > 0 Then
                    strAusgabe = VBA.Mid(strAusgabe, 1, (VBA.Len(strAusgabe)) - 1)
                    Print #1, strAusgabe
                End If
                strAusgabe = ""
                strAusgabe = Part & ";"
            Else
                strAusgabe = strAusgabe & Part & ";"
            End If
        Next Part
        RS.MoveNext
    Loop
    'Letzten Datensatz schreiben
    strAusgabe = VBA.Mid(strAusgabe, 1, (VBA.Len(strAusgabe)) - 1)
    Print #1, strAusgabe
    Close #1
    RS.Close
    Set RS = Nothing
    DB.Close
    Set DB = Nothing
End Sub




Da ich z.Z. nur Access 2007 zur Verfügung habe musst du evtl. in der Entwicklungsumgebung den Verweis auf die DAO-Bibliothek neu setzen...
Im VBA-Editor -> Menü Extras -> Verveise -> "Microsoft DAO ..."



Feedback fänd ich klasse

Greetings ;-)

Antwort 3 von Coolpix vom 17.08.2019, 15:13 Options

upps....

Zitat:
Dim Schalter As Boolean


kannst du weglassen.

Greetings ;-)

Antwort 4 von erik vom 17.08.2019, 16:03 Options

Hallo!

Das sollte auch über eine Abfrage gelöst werden können. Dazu müssen mehrere Abfragen erzeugt werden, die nur die jeweiligen Teile zurückgeben. Danach können die einzelnen Abfragen ihre Ergebnisse über eine UNION-Abfrage untereinander zurückgeben.

Um eine korrekte Sortierung sicherzustellen, sollte in jeder Abfrage ein zusätzliches Sortierungsfeld aufgenommen werden, in der einfach nur eine fortlaufende Zahl angezeigt wird. In der UNION-Abfrage kann dann nach z.B. Primärschlüssel und dann nach diesem Sortierfeld sortiert werden.

Beispiel:

SELECT ID, Feld1, Feld2, Feld3, Feld4, 1 AS Sortierung
UNION
SELECT ID, Feld5, Feld6, Feld7, Feld8, 2 AS Sortierung
UNION
SELECT ID, Feld9, Feld10, Feld11, Feld12, 3 AS Sortierung
ORDER BY ID, Sortierung;


Die jetzt überflüssigen Spalten ID und Sortierung können in einer weiteren Abfrage unterdrückt werden:

SELECT Feld1, Feld2, Feld3, Feld4
FROM qryMeineAbfrage;


Hinweis: Die erste Abfrage in der UNION-Abfrage bestimmt die Namen der Felder.

Anschließend müsste ein passender
DoCmd.TransferText
für den Export reichen.

Viele Grüße
erik

Antwort 5 von Matty vom 20.08.2019, 15:45 Options

hallo Coolpix,

danke für die Antwort, deine Prozedur ist etwas komliziert (für mich).
Ich habe versucht, aber irgendwie nicht zurecht gekommen. Nachher habe ich gesehen, dass du meine Anfrage wohl nicht richtig interprettiert hast.
Die Zeichen "|" in meine Anfrage haben keine Bedeutung, dienten mir nur zur Darstellung der Tabellenspalten, dürfen nicht irgendwie in der Prozedur auftauchen.

Vielen Dank nochmal,

Gruss Matty

Antwort 6 von Matty vom 20.08.2019, 16:13 Options

Hallo erik,

du hast mir eine gute Idee gegeben. Habe das Problem, nicht wie du vorgetragen hast mit Abfragen gemacht, sondern über einen Bericht, bezüglich auf eine Abfrage.
Dort kann man in einen Textfeld ein Zeilenumbruch machen, an der Stelle wo man eben Braucht.
Die Felder werden in diesen Textfeld aneinendergereiht, wie z.B.

=[Vorname]&" "&[Nachname]&"
"&[Strasse]&" "&[Nummer]&"
"&[PLZ]&" "&[Ort]

Damit ergibt sich, natürlich mit anderen Angaben, genau das was ich wollte, eine Zeile in drei trennen. Dann dieses Bericht exportieren in Word und als *.txt abspeichern, Fertig. ;-)

Danke

Gruss Matty

Antwort 7 von Teddy7 vom 21.08.2019, 08:46 Options

Warum machst Du das nicht direkt in einer Abfrage ?

Da kann man Spalten hinzufügen und die können dann genauso aussehen.

Gruß
Teddy

Ähnliche Themen

Zeilenumbruch in einer Zelle
jofischi  23.09.2007 - 272 Hits - 2 Antworten

Automatischer Zeilenumbruch in <textarea>
Schamhorst  21.01.2008 - 120 Hits - 4 Antworten

SPPS- Öffenen der Ausgabedatei .spo
Arminia78  20.05.2008 - 23 Hits - 2 Antworten

Zellen mit Zeilenumbruch aufschlüsseln ?
Jermaine-D2811  08.06.2008 - 149 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 16:59:01 2026