Avatar billede Gamper Nybegynder
30. maj 2012 - 10:09 Der er 5 kommentarer og
1 løsning

VBA loop

Hey,

Jeg forsøger at lave en kode i VBA der skriver al data fra en query i Access til en textfil, men mit loop fungerer ikke korrekt. Får kun skrevet den første kolonne til textfilen. Hvad mangler jeg?
Koden:

Function print_file()

Dim write_line As String, answer As VbMsgBoxResult, okay As Variant, fine As Variant, whatever As Variant, ok As Variant
Dim db As Database, rs As Recordset, tabel As TableDef, snumber As String,
Dim felt_nr As Integer, felt_antal As Double, raekke_antal As Integer
Dim file_nm As String
Set db = CurrentDb

file_nm = "C:\test.txt"


'Open file for output
Open file_nm For Output As #1


Set rs = db.OpenRecordset("qQueryName", dbOpenDynaset, dbReadOnly)


rs.MoveFirst

okay = False

felt_antal = rs.Fields.Count

   
    Do Until rs.EOF
 
        felt_nr = 0
        write_line = rs.Fields(felt_nr).Value
       
            Do Until felt_nr = felt_antal - 1
                               
                felt_nr = felt_nr + 1
                   
            Loop
       
        Print #1, write_line  ' Print record to file.
        rs.MoveNext
    Loop
   
Close #1
rs.Close

End Function
Avatar billede fdata Forsker
30. maj 2012 - 10:29 #1
Af og til kan man jo stirre sig blind.  :O)

Din løkke løber jo bare felterne igennem. Du mangler vist en Write-fætter inden i løkken.
Avatar billede hugopedersen Nybegynder
30. maj 2012 - 11:08 #2
Ja og hvorfor opfinde hjulet igen?
Der findes udmærkede indbyggede funktioner til at eksportere data direkte fra en query til en tekstfil :-)
Avatar billede Gamper Nybegynder
30. maj 2012 - 11:34 #3
skal der både være en write_line i begge løkker?
Avatar billede fdata Forsker
30. maj 2012 - 22:52 #4
Prøver at vise et forslag til koden; men det er godt nok bøvlet at skrive. ekspertens editor og Win 7 spiller altså ikke så godt sammen. Cursoren forsvinder hele tiden, suk!

>>>hugo: Vi er helt enige; men for begyndere kan det være lærerigt at kravle før man går. ;o)

----------------

Function print_file()

Dim write_line As String, answer As VbMsgBoxResult, okay As Variant, fine As Variant, whatever As Variant, ok As Variant
Dim db As Database, rs As Recordset, tabel As TableDef, snumber As String,
Dim felt_nr As Integer, felt_antal As Double, raekke_antal As Integer
Dim file_nm As String
Set db = CurrentDb

file_nm = "C:\test.txt"


'Open file for output
Open file_nm For Output As #1


Set rs = db.OpenRecordset("qQueryName", dbOpenDynaset, dbReadOnly)


rs.MoveFirst

okay = False

felt_antal = rs.Fields.Count

   
    Do Until rs.EOF
        felt_nr = 0
        Do Until felt_nr = felt_antal
          write_line = rs.Fields(felt_nr).Value             
          Print #1, write_line; ";";
          felt_nr = felt_nr + 1
        Loop   
        Print #1            ' Print record to file.
        rs.MoveNext
    Loop
   
Close #1
rs.Close

End Function
Avatar billede Gamper Nybegynder
31. maj 2012 - 17:24 #5
Tak for hjælpen :-)
Jeg havde fået det til at fungerer, da jeg gav point for dit svar..
Men jeg sætter pris på koden.
Avatar billede fdata Forsker
31. maj 2012 - 22:43 #6
Alt i orden. Takker for point ;O)
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