Zoeken…


Invoering

Soms moet u een gescheiden tekstbestand maken voor verschillende doeleinden. Het volgende voorbeeld is een van de vele manieren om u hierbij te helpen. Ik heb een pijp ("|") gebruikt voor mijn scheidingsteken, om dat te veranderen, verander gewoon de toewijzing van de Sep variabele. In mijn voorbeeld dump ik de recordset naar een array, dit is geenszins de defacto-benadering, het is gewoon mijn bestemming. Dit kan eenvoudig worden gedaan met behulp van de recordset zelf.

Opmerkingen

Dit is het vermelden waard:

 Wholeline = Wholeline & aRR(i, j) & Sep

Omdat recordsets naar getransponeerde arrays worden gedumpt, moet u deze achteruit naar het tekstbestand lezen. Dit is eigenlijk een beetje handig als je met dynamische arrays werkt, omdat het al voor je is getransponeerd, dus het opnieuw instellen van het "aantal rijen" kan worden gedaan voordat zwaar tillen wordt uitgevoerd.

Ook niets waard:

Je kunt je array eenvoudig transponeren door het regel voor regel in een nieuwe regel te dumpen met deze syntaxis:

    Dim xaRR() As String
    ReDim xaRR(q, z)
    xaRR(j, i) = aRR(i, j)

dit is niet te relevant voor mijn bericht, maar het is de moeite waard erop te wijzen.

Voorbeeld:

Private Sub this()
    Dim rs As DAO.Recordset
    Dim q%: Dim z%
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Invoice;")

    With rs
        rs.MoveLast
        q = rs.RecordCount
        rs.MoveFirst
        z = rs.Fields.Count
    End With
    
    Dim aRR As Variant
    
    aRR = rs.GetRows(q)
    
    Dim i%: Dim j%: Dim counter#: Dim Sep$: Dim Wholeline$: Dim NewTextFile$: Dim path$: Dim fileNameV$
    
    Sep = "|"
    path = Environ("USERPROFILE") & "\Desktop" & "\"
    fileNameV = "Text007.txt"
    NewTextFile = path & fileNameV
    Open NewTextFile For Output As #2
    For j = LBound(aRR, 2) To UBound(aRR, 2)
        For i = LBound(aRR, 1) To UBound(aRR, 1)
            Wholeline = Wholeline & aRR(i, j) & Sep
        Next i
        Print #2, Wholeline
        Wholeline = vbNullString
    Next j
    Close #2

    rs.Close
    Set rs = Nothing
    Erase aRR
    
End Sub


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow