Avatar billede bol Nybegynder
14. juli 2004 - 16:30 Der er 54 kommentarer og
1 løsning

Print pågældende formular

Hvordan kan jeg Vba lave en kode såldes, at den printer den post i formularen ud som jeg er placeret på!!- JEg har prøvet at anvende guiden, men da printer den alle mine poster ud - den skal kun tage den ene jeg står på!!
Avatar billede mugs Novice
14. juli 2004 - 16:47 #1
Hvis dit felt i formularen er alfanumerisk:

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

Hvis det er numerisk:

DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![TAL] = " & Me!TAL & ""
Avatar billede jensen363 Forsker
14. juli 2004 - 16:50 #2
Prøv :

DoCmd.RunCommand acCmdPrintPreview
Avatar billede mugs Novice
14. juli 2004 - 17:42 #3
jensen > Rart at se dig igen :o)
Printer den så ikke selve formularen ud ?
Avatar billede vdh Nybegynder
14. juli 2004 - 21:11 #4
så prøv nedestående kode, men det er vigtigt at du har en id af en eller anden art på din post.

DoCmd.OpenReport "rapportX", acViewNormal, "", "[idnr]=[Forms]![formularX]![IDnr]"

Så skulle du kun få den ene post ud.

VDh
Avatar billede jensen363 Forsker
15. juli 2004 - 07:58 #5
mugs > selvfølgelig gør den det, men det var nu også det jeg gik ud fra var formålet...
Avatar billede mugs Novice
15. juli 2004 - 08:01 #6
God morgen jensen.
Jeg ser ikke noget formål med at printe selve formularen ud. Så får du jo formularens evt. grafik printet, og det bruger for meget blæk. Bortset fra at alle felter jo også printes, og det er jo ikke sikkert det er formålet.
Jeg vil til enhver tid printe posten i en rapport.
Hvor er du - på vej til djævleøen?
Avatar billede jensen363 Forsker
15. juli 2004 - 08:06 #7
Er vist nået til Slagelse eller der omkring c",)
Avatar billede jensen363 Forsker
15. juli 2004 - 08:08 #8
... men du har da ret ... min løsning var rent quick and dirty ...
15. juli 2004 - 09:18 #9
Jensen->jeg er glad for at se, at du er tilbage :o)

Man kan rent faktisk godt udskrive selve formularen og samtidig få det til at se fornuftigt ud. Alle knapper og andet udskrift-overflødigt, kan blot få sat egenskaben "Vises = Kun på skærm". Derved kommer de ikke med ud på udskriften.
Endvidere kan man lægge særskilte overskrifter som kun vises ved udskrift ved at sætte samme egenskab til "Kun ved udskrivning".

Den grå baggrund kan man evt skifte lige før og efter udskrift.

Men alt i alt er det nok en del nemmere, at lave en ny rapport ;o)
Avatar billede jensen363 Forsker
15. juli 2004 - 09:21 #10
Hej Thomas > No hard feeling c",)
Avatar billede bol Nybegynder
15. juli 2004 - 09:47 #11
det er også selve formularen den skal printe ud - HVis jeg nu står på post 2 i formularen er det post 2 den skal skrive úd og ikke både post 1 og to.. - Det skal ikke laves som en rapport
Avatar billede bol Nybegynder
15. juli 2004 - 09:54 #12
Jensen jeg kan godt bruge din løsning - men her viser den alle posterne i udskriftsform - den skal kun vise den pågældende.. Er dette muligt???
15. juli 2004 - 10:02 #13
Do kan evt gøre således (det er ikke så kønt, men jeg tror ikke umiddelbart, at der er en kommando til kun at skrive én post ud):

    Dim varID As Long
    Dim rs As DAO.Recordset
    varID = Me!ID
    Me.filter = "ID = " & Me!ID
    Me.FilterOn = True
    DoCmd.RunCommand acCmdPrint
    Me.FilterOn = False
    Set rs = Me.RecordsetClone
    rs.FindFirst "ID = " & varID
    Me.Bookmark = rs.Bookmark

ID skal erstattes med navnet på din primærnøgle i tabellen
Avatar billede bol Nybegynder
15. juli 2004 - 10:08 #14
jeg dette bare ind i en komandoknap ved klik
15. juli 2004 - 10:10 #15
ja...princippet er, at den først filtrerer efter den aktuelle post, hvorefter den udskriver posten. Dernæst fjernes filteret igen (og Access returnere til første post), hvorfor man er nødt til at bruge bookmarks til at finde den aktuelle post frem igen.
Avatar billede bol Nybegynder
15. juli 2004 - 10:17 #16
Private Sub Kommandoknap83_Click()
Dim varID As Long
    Dim rs As DAO.Recordset
    varID = Me!MedarbejderId
    Me.Filter = "MedarbejderId = " & Me!MedarbejderId
    Me.FilterOn = True
    DoCmd.RunCommand acCmdPrint
    Me.FilterOn = False
    Set rs = Me.RecordsetClone
    rs.FindFirst "MedarbejderId = " & varID
    Me.Bookmark = rs.Bookmark
End Sub


Ser dette rigtig ud?? - Når medarbejderID er den primærenøgle

DEn åbner printer viduet hvor man kan vælge hvor mange siderder skal udskrives og den filtere så der en post - men det er da ikke en særlig logisk måde - Måske er det ikke lige den medarbejder post jeg ønsker at udskrive - er det mig der gør det forkert??
15. juli 2004 - 10:21 #17
Det ser rigtigt ud. At den åbner Printer-dialogboksen er bare DoCmd.RunCommand acCmdPrint's måde at udskrive på. Det er for at du kan vælge en anden printer end standard-printeren.
Du skulle ikke gerne kunne vælge at udkrive andre sider/poster en den ene post, som du stod på, da vi netop har filtreret den ud.
Avatar billede bol Nybegynder
15. juli 2004 - 10:25 #18
thomas kan man ikke gøre det sådan, at jeg kan få lov til at se udskrften først inden jeg siger ja tak til at udskrive - den viser nemlig ikke "PrintPreview" - Kan man smide det ind i koden??
15. juli 2004 - 10:31 #19
Du kan godt prøve at skifte acCmdPrint ud med acCmdPrintPreview.
Jeg ved bare ikke om koden vil fejle, når den fortsætter koden. De efterfølgende kommandoer duer normalt ikke på en preview.

Jeg tror, at du vil opleve, at formularen bliver stående filtreret på den ene post...
Avatar billede bol Nybegynder
15. juli 2004 - 10:35 #20
Ja den giver fejl i de to sidste - det er bare lidt træls at man ikke lige kan se siden inden man skriver den ud!!
Avatar billede bol Nybegynder
15. juli 2004 - 10:35 #21
den debugger i Me.FilterOn = False
    Set rs = Me.RecordsetClone
når jeg anvender preview
15. juli 2004 - 10:38 #22
Hvorfor er det, at du ikke bare lige laver en autorapport eller gemmer formularen som rapport og derved kan bruge Mugs' allerførste forslag?
Avatar billede bol Nybegynder
15. juli 2004 - 10:49 #23
Nu spørger jeg nok dum så hvad skal der stå i DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![TAL] = " & Me!TAL & ""


Tabel 1 - er det min medarbejdertabel og tal er det medarbejderid
15. juli 2004 - 10:52 #24
Der skal stå:

DoCmd.OpenReport "rapport1", acViewPreview, , "MedarbejderId  = " & Me!MedarbejderId
Avatar billede bol Nybegynder
15. juli 2004 - 10:54 #25
DEr er slet ingenting der kørar for mig i dag - da jeg har en postnummertabel tilkyttet så skriver den at den ikke kan låse/filtere fordi den allrede anvendes i en anden proces  -

Jeg har anvendt Private Sub Kommandoknap77_Click()
DoCmd.OpenReport "Medarbejder rapport", acViewPreview, , "[tblMedarbejder]![MedarbejderId] = " & Me!MedarbejderId & ""
End Sub

Hmm jeg ser hvad jeg kan gøre
15. juli 2004 - 10:59 #26
for lige at springe et skridt tilbage, så tror jeg måske, at jeg har fundet løsningen på hvordan du udskriver formularen i stedet:

Hvis din formular f.eks. hedder frmMedarbejdere, kan koden se således ud:

Dim F as Form_frmMedarbejdere.

Private Sub Kommandoknap83_Click()
    Set F = New Form_frmMedarbejdere
    F.Visible = True
    F.filter = "MedarbejderId = " & Me!MedarbejderId
    F.FilterOn = True
    DoCmd.RunCommand acCmdPrintPreview
End sub

Bemærk at Dim F as... skal ligge øvert i modulet og alts uden for proceduren.
Avatar billede jensen363 Forsker
15. juli 2004 - 11:07 #27
Hold da op for en sag dette er blever til ... sorry har lige været til møde ... Her I fundet en løsning ?
Avatar billede bol Nybegynder
15. juli 2004 - 11:14 #28
Kan man automatisk slå filter fra når den har vist siden og udskrevet? - - DEsuden ligger den sig bag formularen - er det sådan man kan lave det så denne side kommer frem foran den opridelige formulare?? Ellers virker det helt perfekt Thomas
Avatar billede bol Nybegynder
15. juli 2004 - 11:17 #29
Jep Thomas har faktisk fundet en ret god løsning -
15. juli 2004 - 11:17 #30
hmm...på min kommer den forrest og den sætter slet ikke noget filter på formularen.

Det den gør, er at den åbner en ny instans af samme formular. denne nye formular bliver så filtreret og udskrivet. Den oprindelige formular bliver slet ikke rørt.

Hvordan ser din kode ud? Og hvad hedder din formular?
Avatar billede bol Nybegynder
15. juli 2004 - 11:18 #31
Måske man kan minimere formularen ved hændelsen ved bare ikke helt hvordan jeg klarer den ved vba kode..
Avatar billede jensen363 Forsker
15. juli 2004 - 11:18 #32
Ok ... godt gået Thomas c",)
Avatar billede bol Nybegynder
15. juli 2004 - 11:19 #33
Option Compare Database
Dim F As Form_frmMedarbejder
Private Sub Kommandoknap77_Click()
    Set F = New Form_frmMedarbejder
    F.Visible = True
    F.Filter = "MedarbejderId = " & Me!MedarbejderId
    F.FilterOn = True
    DoCmd.RunCommand acCmdPrintPreview
End Sub
Avatar billede bol Nybegynder
15. juli 2004 - 11:21 #34
den filtere heller ikke til at starte med først når jeg lukker mit acCmdPrintPreview
Avatar billede bol Nybegynder
15. juli 2004 - 11:22 #35
Thomas måske er det fordi formularen er en pop up
15. juli 2004 - 11:23 #36
ah, ja så kan du ikke smide noget foran den :o(
Avatar billede bol Nybegynder
15. juli 2004 - 11:25 #37
Den skal helst forblive som en popup - kan jeg smide en minimering ind af den??
15. juli 2004 - 11:27 #38
Problemet er, at minimeringer (og maksimeringer) påvirker alle objekter.
Du kan skjule den med Me.visible = false, men hvordan finder du ud af hvornår den skal vises igen?
Avatar billede bol Nybegynder
15. juli 2004 - 11:30 #39
den skal vises igen når man lukker privew.. ned.. MEn det kan sikkert ikke lad sig gøre eller??
15. juli 2004 - 11:35 #40
nej, problemet er, at du ikke har en hændelse på formularen, som kan fange hvornår en preview lukkes. Form_close vil sikkert virke, men da det reelt er 2 identiske formularer, som du har åben, så vil form_close på den ene også blive aktiveret på den anden, hvorfor der kan opstå mange andre problemer.
Avatar billede bol Nybegynder
15. juli 2004 - 11:36 #41
Okay thomas jeg takker virkelig for din hjælp;-)
15. juli 2004 - 11:36 #42
jensen-> tak :o)

Jeg kender ikke din smiley c",) og kan ikke helt regne symbolikken ud!? Kan du give et hint?
Avatar billede bol Nybegynder
15. juli 2004 - 11:40 #43
En lille man med en stor næste hi hi

Maria
Avatar billede bol Nybegynder
15. juli 2004 - 11:41 #44
Lille mand ups
15. juli 2004 - 11:43 #45
Bol, ja det ligner min egen, men ikke Jensen's.

Selv tak Bol...det var en sjov opgave - det lærte jeg selv noget af :o)
Avatar billede bol Nybegynder
15. juli 2004 - 11:43 #46
Det var godt Thomas


Maria
Avatar billede jensen363 Forsker
15. juli 2004 - 11:43 #47
c",)  = lille mand som kigger imod venstre ...
15. juli 2004 - 11:45 #48
nåå ja :O)) Jeg er jo vandt til at lægge hovedet på skrå....tsk tsk.
Alt det nymodens pjat, haha
Avatar billede jensen363 Forsker
15. juli 2004 - 11:46 #49
Den er da meget sød ...
15. juli 2004 - 11:49 #50
bestemt c";)
15. juli 2004 - 11:50 #51
dette var en ldt frækkere udgave
Avatar billede jensen363 Forsker
15. juli 2004 - 11:54 #52
c";)
C( )
15. juli 2004 - 11:55 #53
*LOL*
Avatar billede jensen363 Forsker
15. juli 2004 - 11:59 #54
En D-skål vender desværre forkert *s*
Avatar billede hugopedersen Nybegynder
17. juli 2004 - 12:05 #55
Hvorfor skal det være så besværligt ?
DoCmd.PrintOut acSelection  printer den aktuelle record ud fra en form.
Det eneste minus er at baggrunden har en tendens til at blive forstørret og fylde hele siden.
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