Avatar billede maria.cand Nybegynder
06. august 2004 - 19:41 Der er 7 kommentarer og
2 løsninger

Udskriv rapport

Jeg har en formular hvor man kan vælge medarbejdere fra rulleliste - Fra denne vil jeg gerne kunne udskrive - her har jeg koden

Private Sub Kommandoknap25_Click()

stDocName = "Rptkontroltimer"
    DoCmd.OpenReport stDocName, acPreview, , "MedarbejderID= " & Me.MedarbejderId
DoCmd.Close acForm, Me.Name
End Sub

Denne virker også fint - men jeg vil gerne have mulighed for også at kunne udskrive for alle - Jeg har en filtering i min liste hvor man kan vælge alle - Men koden virker ikke når jeg vælger alle!! Nogle som kan hjælpe;-)
Avatar billede nih Novice
06. august 2004 - 21:16 #1
Hvis 'alle' har et id der er -1 kan det gøres sådan:

stDocName = "Rptkontroltimer"
if Me.MedarbejderId <> -1 then
    DoCmd.OpenReport stDocName, acPreview, , "MedarbejderID= " & Me.MedarbejderId
else
    DoCmd.OpenReport stDocName, acPreview
end if

Niels
Avatar billede maria.cand Nybegynder
06. august 2004 - 21:27 #2
Den tager kun en af medarbejderne med ved denne kode - medarbejderne har feks. nummer 123, 124 ovs. og den tager kun 123 med - den kan stadig godt opdele på enkelte medarbejdere !!
Avatar billede kabbak Professor
06. august 2004 - 22:50 #3
if Me.MedarbejderId <> "*" then
    DoCmd.OpenReport stDocName, acPreview, , "MedarbejderID= " & Me.MedarbejderId
else
    DoCmd.OpenReport stDocName, acPreview
end if

hvis du har alle som * i din rulleliste
Avatar billede nih Novice
06. august 2004 - 22:59 #4
Du skal på en elleranden måde vælge at du vil udskrive alle.

Jeg plejer at lave min rowsouce på lister og rullelister sådan her:
Select -1 as id, "<Alle>" as navn from dintabel
UNION
select id, navn from dintabel

Derved kan du i listen vælge <Alle> med værdien -1, derved kan du skelne <Alle> som jeg har vist 06/08-2004 21:16:55

Ellers må du prøve at forklarer hvordan du filtrere din liste, hvis det er en knap kunne løsningen være at sætte en boolean i formens modul til sand og derved skelne om du ønsker alle udskrevet.

Niels
Avatar billede nih Novice
06. august 2004 - 23:31 #5
Ellers kan du prøve at løbe listen igennem:

Function getLstId() As String
Dim i As Long
Dim s As String
For i = 0 To Liste.ListCount - 1
    s = s & Liste.Column(0, i) & ", "
Next i
s = Mid(s, 1, Len(s) - 2)
getLstId = s
End Function

Herefter skal du kalde din rapport

DoCmd.OpenReport stDocName, acPreview, , "MedarbejderID in(" & getlstid() & ")"

Niels
Avatar billede kabbak Professor
06. august 2004 - 23:43 #6
godt lavet nih, jeg havde tanker i den retning, men har aldrig testet.
Avatar billede kabbak Professor
06. august 2004 - 23:45 #7
men hvorfor -2 og ikke -1 i
s = Mid(s, 1, Len(s) - 2)
Avatar billede kabbak Professor
06. august 2004 - 23:46 #8
ok, nu ser jeg det der er også et mellemrum ;-))
Avatar billede fynbohans Nybegynder
08. august 2004 - 15:14 #9
En simpel løsning er at bruge to rapporter. En uden og en med kriterier.
Hvis "Alle" står øverst på listen kan du bruge listens index:

IF [ListensNavn].Listindex = 0 then
  brug rapport1
else
  brug rapport2 (med kriterium)
end if
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