Avatar billede jens_lynild Nybegynder
07. oktober 2005 - 10:25 Der er 9 kommentarer og
1 løsning

Tabel til tabulator separeret fil 2

Hej,

Jeg fik desværre lukket mit spørgsmål lidt for tidligt sidst.(http://www.eksperten.dk/spm/652649) Mit problem blev ikke helt løst.

Problemet er at jeg ikke kender antalet af kolonner af den tabel jeg gerne vil have lavet til en tabulator separeret fil. Samtidigt med at når der skrives til filen skal tekst felter ikke markeres med "".

Jeg har prøvet at benytte:
DoCmd.TransferText acExportDelim, , "TabelNavn", ExportFileName & ".txt", True
Men dette virker ikke da jeg får en ; separeret fil og tekststrenge bliver indkapslet i "". Jeg kan som skrevet tidligere ikke lave en eksport specifikation fordi jeg ikke kender antalet og navnene på alle kolonnerne da disse oprettes dynamisk.

Er der nogen mulihed for at ændre på standart eksport skemaet?
eller er der en anden måde at lave en tabulator separet fil på hvor jeg får kolonne navnen med uden "".?

Håber der er nogen der kan hjælpe
Avatar billede jens_lynild Nybegynder
07. oktober 2005 - 10:33 #1
Filen skal se så ledes ud:

Kunde    Medarbejder    S1    S2    S3
1      2        3      1      5      4
4      1        7      2      4      7
...

Den skal ikke se sådan her ud
"Kunde"    "Medarbejder"    "S1"    "S2"    "S3"
1      2        3      1      5      4
4      1        7      2      4      7
...
Avatar billede supertekst Ekspert
07. oktober 2005 - 12:52 #2
Hvorfor skal du kende antallet af kolonner/felter? Vil det ændre sig løbende?

Når du opbygger en export-specifikation via guiden er det på baggrund af en bestemt tabel, hvori du kan specificere feltafgrænser og tekstkvalifikator -  men det er du med på?

-

I givet fald kan der skrives VBA-kode i et Modul, der skriver i en tekstfil - altså en alternativ for export.

Vil gerne forsøge at hjælpe - men lidt mere info om omstændigheder er måske nødvendig.
Avatar billede jens_lynild Nybegynder
07. oktober 2005 - 13:29 #3
Ja, antalet af kolonner vil ændre sig derfor kan jeg så vidt jeg ved ikke benytte en export-specifikation da den som du skriver knytter sig til en bestemt tabel.

Det må gerne være noget VBA-kode der skriver til en fil i stedet for export funktionen.

Filen skal bare se ud som jeg skrev i den tidligere kommentar.
Avatar billede supertekst Ekspert
07. oktober 2005 - 13:37 #4
Resultat:
kunde    medarbejder    S1    S2   
1    2    3    4   
2    3    4    5   
3    4    5    6   
4    5    6    7   

Kode i module:
Sub simX()
Dim db, tabel, tdef As TableDef, posten As String

    Set db = CurrentDb
    Set tabel = db.OpenRecordset("kunder")
   
    Open "kunderX.txt" For Output As #1
   
    Set tdef = db.TableDefs("kunder")
   
    posten = ""
    For Each ff In tdef.Fields
        posten = posten + ff.Name + vbTab
    Next ff
    Print #1, posten
   
    For antal = 1 To tabel.RecordCount
        posten = ""
        For felt = 0 To tabel.Fields.Count - 1
            posten = posten + CStr(tabel.Fields(felt)) + vbTab
        Next felt
        Print #1, posten
       
        tabel.MoveNext
    Next antal
   
    Close #1
End Sub

Kan dette anvendes??

MVH
Avatar billede jens_lynild Nybegynder
07. oktober 2005 - 13:50 #5
Det virker helt perfekt mange tak for det... hvis du opretter et svar så er der points til dig :)
Avatar billede jens_lynild Nybegynder
07. oktober 2005 - 14:03 #6
Jeg har faktisk líge et spørgsmål mere som jeg ville blive rigtig glad for hvis du også kunne svare på det

Lige nu bliver der lavet en tabulering efter den sidste post også, hvordan kan jeg undgå det?
Avatar billede supertekst Ekspert
07. oktober 2005 - 15:39 #7
Her er et svar-dit spørgsmål klares ved følgende:
tabel.fields.count er en tæller for antal felter - første felt har nr.: 0
d.v.s. du kan teste på om det er sidste felt - hvis ja skal der ikke skrives Tab

Giv blot signal - hvis dette ikke lykkes for dig.
Avatar billede jens_lynild Nybegynder
07. oktober 2005 - 16:27 #8
Jeg har prøvet med

IIf felt = tabel.Fields.Count - 1, posten = posten + CStr(tabel.Fields(felt)), posten = posten + CStr(tabel.Fields(felt)) + vbTab

Men det virker ikke
Avatar billede supertekst Ekspert
08. oktober 2005 - 15:13 #9
OK - prøve at se følgende:
Sub simX()
Dim db, tabel, tdef As TableDef, posten As String, næste, antalFelter, f

    Set db = CurrentDb
    Set tabel = db.OpenRecordset("kunder")
    antalFelter = tabel.Fields.Count
   
    Open "kunderX.txt" For Output As #1
   
    Set tdef = db.TableDefs("kunder")
   
    posten = ""
    For f = 0 To antalFelter - 1
        If f = antalFelter - 1 Then
            næste = ""
        Else
            næste = vbTab
        End If
        posten = posten + tabel.Fields(f).Name + næste
    Next f
    Print #1, posten
   
    For antal = 1 To tabel.RecordCount
        posten = ""
        For felt = 0 To tabel.Fields.Count - 1
            If felt = antalFelter - 1 Then
                næste = ""
            Else
                næste = vbTab
            End If
            posten = posten + CStr(tabel.Fields(felt)) + næste
        Next felt
        Print #1, posten
       
        tabel.MoveNext
    Next antal
   
    Close #1
End Sub
Avatar billede jens_lynild Nybegynder
10. oktober 2005 - 11:24 #10
super mange tak for hjælpen supertekst
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester