Avatar billede pewolle Nybegynder
19. oktober 2001 - 08:38 Der er 7 kommentarer og
1 løsning

Køre tilføjelsesforespørgelse x antal gange afhængig af postværdi.

Jeg har brug for at lave nogle etiketter til nogle kasser, hvor der skal en etiket på hver kasse. Hvis kunden har bestilt 2 stk. af en vare skal der skrives 2 stk etiketter ud.

Jeg har tænkt mig at lave en tilføjelsesforespørgelse hvor jeg føjer poster til en spool-tabel, som jeg tømmer efter udskrift.

Er der nogle der kan hjælpe mig med, hvordan man får en tilføjelsesforespørgelse til at køre x antal gange afhængigt af antalværdien i en post.

Jeg laver lige et eksempel:

Nr. Beskriv. Antal
001 Hundemad 2 stk.
002 Kattemad 3 stk.

skulle gerne blive til (i spool-tabellen):

001 Hundemad 2 stk.
001 Hundemad 2 stk.
002 Kattemad 3 stk.
002 Kattemad 3 stk.
002 Kattemad 3 stk.
Avatar billede bennytordrup Nybegynder
19. oktober 2001 - 08:40 #1
Opret et modul og kør forespørgslen x antal gange fra en løkke in en funktion
19. oktober 2001 - 08:52 #2
Du kan lave en stump kode som lægger posterne ind i Spooltabellen.
Spooltabellen kan enten kun indeholde Nr (hvis det er nøglefeltet) eller alle oplysninger, hvis du hellere vil det.

Public Function OpretSpoolTabel(Nr as String, Beskriv as String, Antal as Long)
Dim n as Long
Dim rs as DAO.Recordset
Set rs = currentdb.Openrecordset(\"Spooltabel\", dbopendynaset)
For n = 1 to Antal
  rs.addnew
  rs!Nr = Nr
  rs!Beskriv = Beskriv
  rs.Update
next n
rs.close
set rs = nothing
end function

Koden benytter DAO, så du både kan benytte den i Access 97 og 2000 (i 2000 skal du dog huske at lave en reference til \"Microsoft DAO 3.6 Object Library\"
Du skal også huske at tømme tabellen hver gang.

I dit tilfælde kaldes funktionen så 2 gange (f.eks. fra en knap):

private sub Udskriv_Click()
  currentdb.execute \"Delete From Spooltabel\"
  Call OpretSpoolTabel(\"001\", \"Hundemad\", 2)
  Call OpretSpoolTabel(\"002\", \"Kattemad\", 3)
  docmd.openreport \"Etiketter\",acviewpreview
end sub

/Thomas
Avatar billede pewolle Nybegynder
19. oktober 2001 - 09:29 #3
Det ligner noget af det rigtige.

Men hvordan laver jeg en reference til \"Microsoft DAO 3.6 Object Library\"?
Avatar billede mugs Novice
19. oktober 2001 - 10:00 #4
Åbn dit kodemodul, Funktioner > Referencer og find den i listen
21. oktober 2001 - 18:58 #5
Pewolle, har du fået det til at virke?
Avatar billede pewolle Nybegynder
22. oktober 2001 - 10:55 #6
Ja, det ser ud til at virke fint - tak for hjælpen.
Dit svar er rigtigt nok, men jeg ville gerne have en funktion, der løber posterne igennem, så man kan lave spoolen på en gang (så man ikke behøver at lave Call OpretSpool....... flere gange).
Her tænker jeg på at den kan løbe alle varelinierne igennem og spoole ved tryk på en knap.
Hvis du har en hurtig ide ville det være fint, men ellers ser jeg selv på det.

/Peter
22. oktober 2001 - 11:02 #7
Prøv denne i stedet så:

Public Function OpretSpoolTabel()
Dim n as Long
Dim rs as DAO.Recordset
Dim rsVare as DAO.Recordset
Set rs = currentdb.Openrecordset(\"Spooltabel\", dbopendynaset)
Set rsVare = currentdb.Openrecordset(\"Varetabel\", dbopensnapshot)
do
  For n = 1 to rsVare!Antal
    rs.addnew
    rs!Nr = rsVare!Nr
    rs!Beskriv = rsVare!Beskriv
    rs.Update
  next n
  rsVare.Movenext
loop until rsVare.EOF
rs.close
set rs = nothing
rsVare.close
set rsVare = nothing
end function
Avatar billede pewolle Nybegynder
22. oktober 2001 - 12:27 #8
Det var bare lige sådan det skulle virke!
Mange tak for hjælpen.
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