Avatar billede maggerholm Nybegynder
13. oktober 2006 - 12:14 Der er 41 kommentarer og
1 løsning

Variabel antal af Labels

Hejsa Genier  ;o)

Jeg har nogle rapporter som jeg skal have printet.
Hver rapport er baseret på en tabel, hvori jeg har en celle som hedder [AntKopi], denne varierer meget fra row til row, og fortæller hvor mange kopier der skal laves af hver enkel rapport.

Øhh, er det muligt og bruge denne variabel til og lave x antal kopier af hver rapport enten under udskrifning, eller under generering af rapporten.  ??

Mvh,  Michael Aggerholm, Coop Danmark
Avatar billede Slettet bruger
13. oktober 2006 - 12:45 #1
Du kan altid lave et from x=1 to x=me.antkopi loop!~)
Avatar billede mugs Novice
13. oktober 2006 - 12:50 #2
Dim i As Integer
Dim AntKopi As Integer
If IsNull([Antal]) = -1 Then
MsgBox "Du har ikke indtastet antal eksemplarer."
Exit Sub
End If
AntKopi = [Antal]
If Antalex <= 1 Then
MsgBox "Du har ikke indtastet antal eksemplarer."
Exit Sub
End If
For i = 1 To AntKopi
DoCmd.OpenReport "Rapport2", acNormal, "", ""
Next i
Avatar billede Slettet bruger
13. oktober 2006 - 13:07 #3
Hvis du har en tabel, hvor der er rapportnavn og antkopi, så kan du lave en kombiboks på disse 2 variable. Så skjuler du antkopi ved at sætte bredden på kolonne 2 til 0. Så kan du have et skjult felt, som hedder antal og et som hedder navn. Så bliver koden:

Private sub NavnKombiboks_afterupdate()
me.navn=me.navnkombiboks.column(0)
me.antal=me.navnkombiboks.column(1)
end sub

Så laver du en print knap, som siger:

Private sub PrintKnap_click()
dim x
for x=1 to me.antal
docmd.openreport me.navn, acnormal
next x
end sub
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:25 #4
spq:  hvor laver jeg den henne ?
Jeg gætter på at jeg skal have noget VisBas startet op ?


Mugs: Jeg skal ikke indtaste antallet af kopier.
Men for at den For-Next løkke skal virke, så skal jeg jo ha ´plukket' værdien af cellen [AntKopi] og det kan jeg ikke.

Har prøvet Me.AntKopi og Me.AntKopi.Value og får ikke andet end en RuntimeError 2465 ;o(
Avatar billede Slettet bruger
13. oktober 2006 - 13:27 #5
Du skal have en formular i programmet, hvor du har tænkt dig at skrive ud fra.
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:30 #6
spq:
Min tabel indeholder flg. variabler:
AntKopi, rapport,pris1,pris2,moms,diverse

rapport & diverse er begge notater, mens AntKopi er integer, og de 3 sidste er currency

Alle cellerne bliver brugt i selve rapporten på nær AntKopi som skal bruges til og definere hvor mange kopier der skal være af selve rapporten.
Avatar billede Slettet bruger
13. oktober 2006 - 13:32 #7
Ok, indsæt en komboboks i den tabel du ønsker at skrive ud fra...
Avatar billede Slettet bruger
13. oktober 2006 - 13:33 #8
Under egenskaber for boksen vælger du feltet rækkekilde og trykker på de 3 prikker ved siden af feltet.
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:33 #9
Hændelsesproceduren på knappen er en standard som jeg ikke har fiflet meget ved.

Private Sub Kommandoknap16_Click()
On Error GoTo Err_Kommandoknap16_Click

; For i = 1 to Me.AntKopi
    DoCmd.OpenReport "Rapport", acPreview
; Next i

Exit_Kommandoknap16_Click:
    Exit Sub

Err_Kommandoknap16_Click:
    MsgBox Err.Description
    Resume Exit_Kommandoknap16_Click
   
End Sub
Avatar billede Slettet bruger
13. oktober 2006 - 13:34 #10
Ja, det skal jo så ikke være acPreview, men acNormal
Avatar billede Slettet bruger
13. oktober 2006 - 13:35 #11
For i = 1 to Me.AntKopi
    DoCmd.OpenReport "Rapport", acNormal
Next i

Men virker det?~)
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:35 #12
grunden til jeg bruger AcPreviev er for ikke og skrive ud mens jeg tester!
Lidt meget spild af papir!  ;o)
Avatar billede Slettet bruger
13. oktober 2006 - 13:37 #13
Prøv:

Dim i
For i = 1 to Me.AntKopi
msgbox me.rapport
    'DoCmd.OpenReport "Rapport", acPreview
Next i
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:39 #14
~ Method or Data member not found ~  ;o(

Denne metode er den som jeg selv har forsøgt(og et par stykker som ligner), men alle desværre uden anden resultat end Compile error og det som er værre!  ;o/
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:41 #15
Den stopper ved Me.AntKopi hver gang.. [IRRITATION ON]
Avatar billede Slettet bruger
13. oktober 2006 - 13:45 #16
Den vil også kun virke hvis du står i posten!~)
Avatar billede Slettet bruger
13. oktober 2006 - 13:49 #17
Dvs. at den formular du står i, har tabellen som record source.
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:50 #18
øhh, står i posten ?
(Undskyld, men jeg er autodefekt til det her)
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:51 #19
Nåee, formularen har ingen records i sig, det er en ren menu med ca. 15 knapper  ;o)
Avatar billede Slettet bruger
13. oktober 2006 - 13:52 #20
Ok, så er det eks. komboknappen eller et inputfelt..

eller er det en knap for hver rapport?~)
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:55 #21
Jeg har én knap som der skal udskrive 15 forskellige rapporter, baseret på 15 rows i tidligere nævnt tabel. (Kan dog variere lidt op og ned, men det er jo ligegyldigt i denne sammenhæng)
Avatar billede Slettet bruger
13. oktober 2006 - 13:57 #22
Ved siden af knappen indsætter du en komboboks..
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 13:57 #23
Nu satte jeg min menu form op med kilde tilselve tabellen, og nu finder den Me.AntKopi fint, men der kommer ikke noget print ud.
Avatar billede Slettet bruger
13. oktober 2006 - 14:00 #24
Hvis du skrev:

For i = 1 to Me.AntKopi
    DoCmd.OpenReport me.rapport, acNormal
Next i

så ville der komme noget, men det vil altid være den første post...

Du kunne sådan set bare indsætte tekstfeltet Rapport og så bruge navigationsknapperne til at vælge!~)
Avatar billede Slettet bruger
13. oktober 2006 - 14:00 #25
igen husk:

Dim i
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:01 #26
HA HA HA, nu skriver den alle 15 rapporter ud 5 gange. (Første rapport har AntKopi=5)
Avatar billede Slettet bruger
13. oktober 2006 - 14:03 #27
Ok, hvad har du løst til at gøre!~)

Så tager vi den derfra..
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:06 #28
Kunne man lave noget i denne stil ?

For Row=1 to EndOfRecord
  Rec = NextRow
  For i = 1 to Rec.AntKopi
    DoCmd.OpenReport me.rapport, acNormal
  Next i
Next Row

Bad English, I know!  men du forstår sikkert hvad jeg mener ??
Avatar billede Slettet bruger
13. oktober 2006 - 14:08 #29
Jeg tror lige vi skal slå koldt vand i blodet....

Jeg mener stadig at en komboboks, som forklaret i 13/10-2006 13:07:46 er den bedste løsning!~)
Avatar billede mugs Novice
13. oktober 2006 - 14:09 #30
Ha Ha:

(Undskyld, men jeg er autodefekt til det her)

Den bemærkning alene er 200 point værd.
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:11 #31
Men med en kombobox, så skal jeg (og andre) sidde og skifte mellem de 15 rapporter, og klikke på PRINT for hver indlæg ??  right ?
Avatar billede Slettet bruger
13. oktober 2006 - 14:14 #32
Ja, vil du bare have hele molevitten ud på en gang?~)
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:24 #33
ja, uden dikkedarer, men hver rapport skal ud i forskellige mængder fra dag til dag, ellers havde jeg bare hardcodet det største antal, og så stået og frasorteret en masse print (Lidt som jeg gør i dag)  ;o)

Jeg leger lidt med en lille ting, men det vil ikke rigtig virke!

Dim i
Dim rs As Recordset
Set rs = db.OpenRecordset("Rapporter", dbOpenDynaset) 'Snapshot)
If Not rs.EOF Then
    rs.MoveFirst
    Do
      For i = 1 To Me.AntKopi
        DoCmd.OpenReport "Rapport", acNormal
    ;  MsgBox "test", vbInformation
      Next i
      rs.MoveNext
    Loop Until rs.EOF
End If
Avatar billede Slettet bruger
13. oktober 2006 - 14:24 #34
Dim i as integer
Dim r as DAO.Recordset
Set r = me.recordset
Do Until r.EOF

For i = 1 to Me.AntKopi
    DoCmd.OpenReport me.rapport, acNormal
Next i

r.Movenext
Loop
Avatar billede Slettet bruger
13. oktober 2006 - 14:26 #35
Dette kræver selvfølgelig at du stadig har tabellen sat på som kilde til formularen..
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:32 #36
Type Mismatch (Jeg kører kun Access 2000)
Den kunne ikke godtage Dim r as DAO.Recordset
så jeg ændrede den til Dim r as Recordset

Ved ikke hvor meget det betyder..

Men nu sker der da andet end Compile Error!  ;oD
Avatar billede Slettet bruger
13. oktober 2006 - 14:32 #37
Du mangler nok en reference til DAO
Avatar billede Slettet bruger
13. oktober 2006 - 14:34 #38
I VisualBasic gå i værktøjer, referencer og vælg Microsoft DAO 3.6 Objekt Library eller det, som kommer nærmest...
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:45 #39
DAO var ikke slået til, det er den nu, og DAO linien er rettet i koden, og programmet restartet..

Nu gik den helt grasat!

Først skrev den alle rapporterne ud 5 gange, derefter lavede 3 kopier af dem alle, og så resatte jeg printeren!  ;o)
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 14:55 #40
SPQ: Jeg tror nok du har hjulpet mig en del videre, nu gider jeg ikke mere i dag, nu begynder koden og drille for meget til at jeg kan tage den seriøst!  ;o/

Mange tak for hjælpen..

Mvh, Michael.
Avatar billede Slettet bruger
13. oktober 2006 - 14:56 #41
Altså hvis jeg laver en tabel, med 2 felter, nemlig rapport og antkopi, og bruger tabellen til Record Source på formularen. Herefter en printknap med koden:

Private Sub UdskriftsKnap_Click()
Dim r As DAO.Recordset
Set r = Me.Recordset
Do Until r.EOF
Dim i As Integer
For i = 1 To Me.AntKopi
MsgBox Me.Rapport
Next i
r.MoveNext
Loop
End Sub

Så virker det altså!~)

Held og lykke, go' weekend....
Avatar billede maggerholm Nybegynder
13. oktober 2006 - 15:21 #42
Ja den har jeg også lige prøvet, men jeg tror at det er fordi selve rapporten linker til samme tabel, og den så skriver alle felterne ud.

men måske man bare skal lege lidt med

DoCmd.OpenReport me.rapport, acNormal,,ID 

for låse den fast til kun en enkelt record!


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