14. juli 2004 - 16:30Der 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å!!
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?
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)
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
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.
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??
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.
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??
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...
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
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.
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
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?
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
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?
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.
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.
Synes godt om
Ny brugerNybegynder
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.