[Access] Printer aansturen via VB probleem

Pagina: 1
Acties:
  • 150 views sinds 30-01-2008
  • Reageer

  • Toink
  • Registratie: Januari 2000
  • Niet online
Hoi allemaal,

Er zijn al meerdere dingen gepost over printeraansturing in VB maar volgens mij staat dit niet in de search. Wat wil ik doen?

Een rapport 2x afdrukken in Access via VB. Hieronder volgt de code die ik gebruik:

Dim rpt As Report
Dim dm As DevMode
Const conReport As String = "rapport"

DoCmd.Echo True
DoCmd.OpenReport conReport, acViewDesign, , "[ordernummer]= '41104684'"
Set rpt = Reports(conReport)
Set dm = New DevMode
Set dm.Object = rpt
dm.DefaultSource = DMBIN_UPPER 'bovenste printerlade
dm.PaperSize = DMPAPER_A4 'a4-formaat
dm.Copies = 2 '2 kopietjes
DoCmd.PrintOut 'gaan met die hap


Probleem: De printer drukt het scherm af waarin ik werk, en niet het geopende en gekoppelde rapport. :?
:? wat doe ik fout :?

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
uh.. Doe je dit vanuit Visual Basic, of vanuit VBA binnen Access?

  • Toink
  • Registratie: Januari 2000
  • Niet online
Vanuit vba binnen Access.

Als ik alles weghaal behalve docmd.printout dan doet ie precies 'tzelfde (daar kom ik net achter). Maw: Hij negeert wat ik gemaakt heb maar hoe moet 't dan wel?

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
Oke.. Ga naar access en ga naar help.
Zoek de help voor die PrintOut Action en voila.. Daar is uw antwoord.

  • Toink
  • Registratie: Januari 2000
  • Niet online
Ja ik weet ook wel hoe die help werkt.... maar daar staat 't niet. Ik wil een rapport afdrukken van een specifiek ordernummer en daarvan weet ik 't paginanummer niet. Hoe printout werkt weet ik ook wel.

/ik kan ook 2x docmd.openreport doen maar dan duurt het genereren van de afdruk 2x zo lang en ik werk via isdn dus da's niet echt aan te bevelen.

  • Toink
  • Registratie: Januari 2000
  • Niet online
/kick :(

  • Toink
  • Registratie: Januari 2000
  • Niet online
okee hier volgt de oplossing en het nieuwe probleem:

------oplossing------

Dim rpt As Report
Dim dm As DevMode
Dim devs As Devices
Dim dev As Device
Dim dn As DevNames
Const conreport As String = "rapreparatieinname"

On Error GoTo HandleErrors

DoCmd.Echo False
DoCmd.OpenReport "RapReparatieInname", acViewDesign, , "[repairid] = 82000004"
Set rpt = Reports(conreport)
Set dn = New DevNames
Set dm = New DevMode
Set devs = New Devices
Set dev = devs.CurrentDevice
Set dm.Object = dev
Set dn.Object = dev
dm.Copies = 2
rpt.PrtDevNames = dn.Bytes
rpt.PrtDevMode = dm.Bytes

DoCmd.PrintOut

Exithere:
On Error Resume Next
Set dn = Nothing
Set dm = Nothing
Set devs = Nothing
Set dev = Nothing
Set rpt = Nothing
DoCmd.Close acReport, conreport, acSaveNo
DoCmd.Echo True
Exit Sub

HandleErrors:
MsgBox "Error:" & err.Description & " (" & err.Number & ")"
Resume Exithere

------oplossing------

Wat is nu het probleem? Het selectiecriterium wat ik toepas werkt alleen in de normale en niet in de ontwerpmodus. Wat gebeurt er dus? Alle 2630 gegenereerde rapporten worden afgedrukt terwijl ik alleen de door mij geselecteerde af wil drukken. Je kan aan PrintOut meegeven welke pagina je moet afdrukken maar ik weet niet op welke pagina welk nummer staat.

/edit: Zou ik niet gewoon aan dat rapport een parameter kunnen koppelen waarin ik het reparatienummer opgeef zodat je alleen dat formulier krijgt? Maar hoe doe ik dit? Ik heb 'm nu zo gewijzigd dat ie bij de printout naar het reparatienummer vraagt, maar dit wil ik natuurlijk meegeven via VBA.

Verwijderd

Volgens mij kan niet wat jij wil. Je kunt idd een voorwaarde meegeven, maar alleen aan aan rapport wat als preview geopend wordt. In het ene geval open je namelijk het ontwerp van het rapport, en pas bij afdrukken van je rapport gaat hij de gegevensbron ophalen, je meegegeven voorwaarde is dan dus "weg". In het andere geval pakt 'ie wel alleen het bedoelde record maar kun je geen properties instellen. Je zit dus met een patstelling.

De oplossing is omslachtig:
Maak een query die alles selecteert uit je gegevensbron ("Pinguin") voor het rapport, noem deze "Banaan". Maak deze de nieuwe recordsource voor je rapport.

In je code: delete en vervang deze query door "SELECT * FROM Pinguin WHERE ordernummer = " & varOrdernummer. Voer vervolgens pas die aanpassingen van je properties uit en klaar!

  • Toink
  • Registratie: Januari 2000
  • Niet online
Ik ben er inderdaad net achter. Maar als ik 't goed heb moet ik gewoon de bananen uit de Pinguins halen en dat afdrukken? :) :)

->> test: 't werkt, bedankt!

Verwijderd

Als jij bananen uit pinguins wilt halen hou ik je niet tegen :9~

Dat het werkt is in ieder geval mooi ;)
Pagina: 1