Avatar billede pemaje Nybegynder
25. november 2007 - 15:20 Der er 7 kommentarer og
1 løsning

Kode til eksport af udvalgte filer fra tabel

Jeg har en tabel T_VARER, hvorfra jeg gerne vil eksportere felterne LAGERNUMMER, BEHOLDNING, LOKATION og LEV_STREGKODE til en semmikolon separeret fil i nævnte rækkefølge.
Eksporten skal udføres ved tryk på en kommandoknap ved hjælp af en kode.
Jeg har forgæves ledt efter noget der kunne anvendes.
Er der nogen der kan hjælpe?
Avatar billede kabbak Professor
25. november 2007 - 21:22 #1
Private Sub Overfør_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from T_VARER")
    Open "C:\test.txt" For Append As #1
    With rs
        .MoveFirst
        Do Until .EOF
            Print #1, !Lagernummer & ";" & !BEHOLDNING & ";" & !LOKATION & ";" & !LEV_STREGKODE
            .MoveNext
        Loop
    End With
    Close #1

End Sub
Avatar billede pemaje Nybegynder
26. november 2007 - 23:46 #2
Jeg har stadig lidt problemer, men jeg har fået det til at virke med denne:

Private Sub Overfør_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MyFile As String
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from EKSPORT_T_VARER")
    MyFile = Application.CurrentProject.Path & "\LAGER.DAT"
    Kill MyFile
    Open MyFile For Append As #1
    With rs
        .MoveFirst
        Do Until .EOF
            Print #1, !LOKATION & ";" & !BEHOLDNING & ";" & !LAGERNUMMER & ";" & !LEV_STREGKODE & ";" & !GENSTANDSNAVN
            .MoveNext
        Loop
    End With
    Close #1

End Sub

Men min scanner kræver følgende format:
15550;    88888;          ;2222334445555            ;
14440;    66666;          ;1111223334444            ;
18810;      222;1000000001;                        ;Gaffatape, b50mm
10110;      111;1000000001;                        ;Gaffatape, b50mm
10220;      -444;1000000002;                        ;Skruetrækker, ligekærv 5mm
18830;      666;1100000001;                        ;Hammer

Altså faste længder mellem semmikolonnerne på 5, 10, 10, 25, 50 karakter
Hvordan får jeg lagt space ind så filen bliver korrekt?

Vil gerne hæve point for dette spørgsmål, hvordan gør jeg det?
Avatar billede kabbak Professor
27. november 2007 - 17:00 #3
Noget i denne retning

Private Sub Overfør_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MyFile As String, D(3) As String, MM As String
    MM = "                                                  "    ' 50 mellemrum
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from EKSPORT_T_VARER")
    MyFile = Application.CurrentProject.Path & "\LAGER.DAT"
    Kill MyFile
    Open MyFile For Append As #1
    With rs
        D(0) = Left(MM, 10 - Len(!BEHOLDNING))
        D(1) = Left(MM, 10 - Len(!Lagernummer))
        D(2) = Left(MM, 25 - Len(!LEV_STREGKODE))
        D(2) = Left(MM, 50 - Len(!GENSTANDSNAVN))
        .MoveFirst
        Do Until .EOF
            Print #1, !LOKATION & ";" & D(0) & !BEHOLDNING & ";" & D(1) & !Lagernummer & ";" & D(2) & !LEV_STREGKODE & ";" & D(3) & !GENSTANDSNAVN
            .MoveNext
        Loop
    End With
    Close #1

End Sub
Avatar billede kabbak Professor
27. november 2007 - 17:01 #4
ret lige den sidste D(2) til D(3)
Avatar billede pemaje Nybegynder
27. november 2007 - 20:46 #5
Det er der hen af, men den melder fejl når GENSTANDSNAVN er Null eller "". Hvordan kringler jeg den?

Private Sub Overfør1_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MyFile As String, D(2) As String, MM As String
    MM = "                                                  "    ' 50 mellemrum
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from EKSPORT_T_VARER")
    MyFile = Application.CurrentProject.Path & "\LAGER.DAT"
    Kill MyFile
    Open MyFile For Append As #1
    With rs
        .MoveFirst
        Do Until .EOF
        D(0) = Left(MM, 10 - Len(!BEHOLDNING))
        ' D(1) = Left(MM, 10 - Len(!LAGERNUMMER))
        D(1) = Left(MM, 25 - Len(!LEV_STREGKODE))
        D(2) = Left(MM, 50 - Len(!GENSTANDSNAVN))
        Print #1, !LOKATION & ";" & D(0) & !BEHOLDNING & ";" & !LAGERNUMMER & ";" & D(1) & !LEV_STREGKODE & ";" & !GENSTANDSNAVN & D(2)
        .MoveNext
        Loop
    End With
    Close #1

End Sub
Avatar billede pemaje Nybegynder
27. november 2007 - 20:47 #6
Det gælder iøvrigt alle felterne
Avatar billede kabbak Professor
27. november 2007 - 21:20 #7
så er du nød til at lave sådan en for hver af dem

            If IsNull(!BEHOLDNING) Then
                D(0) = Left(MM, 10)
            Else
                D(0) = Left(MM, 10 - Len(!BEHOLDNING))
            End If
Avatar billede pemaje Nybegynder
27. november 2007 - 22:03 #8
Tip top! tak for hjælpen igen ;-)
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