Avatar billede 49jensen Nybegynder
28. november 2013 - 19:01 Der er 5 kommentarer og
1 løsning

Udskrive den aktuelle post af en formular i vba

Jeg ved godt at det ikke er normalt at udskrive en formular. Jeg skal udskrive nogle reservedelslabels og tror det er den letteste måde.
Jeg har en "Print Labels" knap på min formular "FrmPartsIn", jeg har også et unikt tekst felt "PartsInControlNumber".
Jeg ønsker også at styre antallet af labels. Det skal kunne varieres fra post til post.
Jeg er grøn når det kommer til vba kode, og har søgt på nettet og også her på dette forum efter lignende spørgsmål uden held.
Kan det lade sig gøre.
Avatar billede bvirk Guru
28. november 2013 - 22:04 #1
Ja, det kan vist lade sig gøre.

se:
http://bytes.com/topic/access/answers/538646-print-current-page-form

Et tallet i 'DoCmd.PrintOut acPages, pageno, pageno, , 1' er antal kopier, se:
http://msdn.microsoft.com/en-us/library/office/ff192667.aspx
Avatar billede 49jensen Nybegynder
28. november 2013 - 22:25 #2
Jeg bruger denne kode

Private Sub PrintPartsLabel_Click()
Dim myform As Form
Dim pageno As Integer
pageno = Me.CurrentRecord
Set myform = Screen.ActiveForm
DoCmd.SelectObject acForm, myform.Name, Thrue
DoCmd.PrintOut acPages, pageno, pageno, , 1
DoCmd.SelectObject acForm, myform.Name, False
End Sub

Jeg er grøn på dette område, så jeg er lidt i tvivl om "Name" efter myform skal udskiftes med formularens navn.
Kan jeg via koden,åbne en printerdialog, indsætte antal kopier, hvorefter koden fortsætter med udprintningen.
Avatar billede bvirk Guru
29. november 2013 - 19:06 #3
Hej 49Jensen
Punktummet efter myform indikerer at herefter kommer en af de betemte ting som hører til et Screen.ActiveForm object - property Name er formens navn uanset hvilken form der var den aktive.

Så det skal ændres - men iøvrigt kan du bare eksperimentere med at skrive hvilken ideer der kommer til dig - hvis det syntaktisk er forkert afsløres det når du udfører menuline->debug->compile i vba editoren.

Du får givetvis compile error på vba koden i #2 - du kunne i teorien have defineret Thrue et eller andet sted - men jeg tvivler ;)

Prøv om du kan følge følgende iagtagelse (efter at have ændret thrue til true): set et breakpoint på første linie med docmd.selectobject ... (placer cursor et sted på linien og tast f9)
Skift til database vinduet - åbn din formular og klik på knappen printpartslabel
Nu skiftet der automatisk til vba editoren og linien med breakpointet er gul - afviklingen af koden er stoppet lige på den linie.
Du har sikkert intet 'watches' vindue åbent - så åben sådan et vha . menulinie->view->Watch window.
Tag nu med musen og marker myword (hvor det står alene)- træk det derefter ned i watch vinduet.
klik på det lille plus - bladr ned og find Name
Smart ikke?
Kodeafviklingen kan stoppes med menulinie->run->reset

Lykken er når det emperative overruler det autoritære i magt med tingene!
Avatar billede bvirk Guru
29. november 2013 - 19:41 #4
'Så det skal ændres' skulle have være 'Så det skal ikke ændres' i ovenstående
Avatar billede 49jensen Nybegynder
29. november 2013 - 19:45 #5
Mange tak. Jeg fik forklaring på en del. Jeg tror nu nok jeg alligevel printer mine labels i raportform, det kan jeg stadig styre fra min "print labels" knap på formularen. Point til dig.
Avatar billede bvirk Guru
30. november 2013 - 11:41 #6
Det var godt du gav anledning til at vise at man kan udskrive formularer. Tak for point.
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

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