Avatar billede testpilot_dk Nybegynder
28. juli 2005 - 20:53 Der er 11 kommentarer og
2 løsninger

Loop i VBA

Hej!

Jeg har en database som jeg ønsker skal foretage et loop, når der trykkes på en knap.

Hændelsen der skal ske, er at den udfører et SQL kald og skriver den enkelte post ud.

Jeg har forsøgt mig med et recordset, men jeg tror ikke det virker efter hensigten, den dør med en compiler error
Avatar billede mugs Novice
28. juli 2005 - 20:56 #1
Hvis du looper gennem tabellen skriver den jo alle poster ud. Hvad er formålet med dette?
Avatar billede mugs Novice
28. juli 2005 - 20:59 #2
Hvis du vil udskrive formularens aktuelle post kan du bruge denne ved et alfanumerisk felt:

DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tekst] = '" & Me!tekst & "'"

Ved et numerisk felt:

DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tal] = '" & Me!tal & ""
Avatar billede mugs Novice
28. juli 2005 - 20:59 #3
Fejl - Ved et numerisk felt:

DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tal] = " & Me!tal & ""
Avatar billede testpilot_dk Nybegynder
28. juli 2005 - 21:38 #4
Hej!

Jeg har et et SQL kald som tager fra mange tabeller!

Hver enkelt post i den ene tabel, kædes så sammen med resten af de forskellige tabel udtræk!

Herefter udskrives de som en rapport!
Jeg gør det med den enkelte, men man skal vælge dem manuelt og det vil jeg gerne undgå
Avatar billede mugs Novice
28. juli 2005 - 21:41 #5
Hvis du laver en forespørgsel med alle relevante tabeller / felter, kan du i din formular vælge at udskrive den aktuele post, uanset fra hvilke tabller data kommer fra.
Avatar billede testpilot_dk Nybegynder
28. juli 2005 - 21:44 #6
Det er jeg godt klar over, men hvordan får jeg den til at fortage et gennemløb af mine poster, det resultere jo i at mit SQL ændres for hver position tælleren kommer forbi
Avatar billede mugs Novice
28. juli 2005 - 21:47 #7
Har dit spørgsmål noget med internetet at gøre?
Hvad er formålet med at gennemløbe tabellerne og udskrive hver enkelt post?
Avatar billede fdata Forsker
28. juli 2005 - 21:59 #8
Kunne dette være løsningen (dit spørgsmål er stadig ikke helt klart):
  Dim Rst as Recordset
  Set Rst = CurrentDb.OpenRecordset("DinTabel")
  With Rst
    Do
      ' Opstil et SQL udtryk
      ' Kald en eller anden rutine
      .MoveNext
    Loop Until .EOF
    .Close
  End With
  Set Rst = Nothing
Avatar billede testpilot_dk Nybegynder
29. juli 2005 - 07:42 #9
Hov!

Jeg mangler jo lige at fortælle, at den skal foretage nogle forskellige rutiner ved hver enkel post!

Hvordan kan jeg få den til det ?

Det har ikke noget med Internettet at gører, den skal skriev nogle forskellige oversigter ud, nogle gange kun få en post, andre for samtlige poster

fdata -> Sådan noget i den retning havde jeg også tænkt man kunne gøre!
Avatar billede mugs Novice
29. juli 2005 - 08:51 #10
Her et eksempel på en løkke:

Dim VARa As Integer
Dim VARb As Integer
VARa = InputBox(Prompt:="Antal", Title:="ny værdi", Default:="")
VARb = 0
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
Do Until VARb = VARa
DoCmd.GoToRecord acForm, "FORMULARNAVN", acNewRec
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPaste
VARb = VARb + 1
Loop
MsgBox "slut"

Løkken kopierer den aktuelle post og indsætter den som en ny post er valgt antal gange.

Du skal jo have "målt" hvad løkken skal gøre ved den enkelte post. Det kan du gøre med en If .. Then eller en Select Case:

Dim Rst as Recordset
Set Rst = CurrentDb.OpenRecordset("DinTabel")
With Rst
Do
If en betingelse Then
Udfør en kommando hvis bertingelsen er opfyldt
Else:
Gør noget andet
end if
.MoveNext
Loop Until .EOF
.Close
End With
Set Rst = Nothing
Avatar billede testpilot_dk Nybegynder
29. juli 2005 - 09:09 #11
Mugs, fungerer dette også når jeg lave en forespørgsel i Access ??
Avatar billede mugs Novice
29. juli 2005 - 10:16 #12
Alle koder du ser her i spørgsmålet er lavet i VBA som kodes i en formular. Hvor kommer forespørgslen ind i billedet.
Avatar billede testpilot_dk Nybegynder
29. juli 2005 - 12:02 #13
Undskyld det er mig som vrøvler, selvfølgelig er det i en formular. :)
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