Avatar billede rickie Juniormester
27. oktober 2006 - 11:22 Der er 11 kommentarer og
1 løsning

Print på specifik printer (ipadresse)

Hej Eksperter,

Er det muligt at udskrive et dokument til en specifik ipadresse ud fra forskellige kriterier?

Feks:
Private Sub btnSkrivUt_Click(

If Val = "Bokade brev" Then
  If Typ = "Giro" then
  "PRINT DETTE TIL PRINTER IP ADRESSE 1"
  else
  "PRINT DETTE TIL PRINTER IP ADRESSE 2"
  End if
End if (?)

Else If Val = "Autogiro" Then
  "PRINT DETTE TIL PRINTER IP ADRESSE 2"
End if (?)

Else (HER SKAL ALLE BREVE PRINTES MEN TIL KORREKT IP!
  If Typ = "Giro" then
  "PRINT DETTE TIL PRINTER IP ADRESSE 1"
  else
  "PRINT DETTE TIL PRINTER IP ADRESSE 2"
  End if
End if

Der skal väre en dropbox med 3 valg: "Bokade brev", "Autogiro" og "Alle"

Bokade brev skal printes på ADRESSE 1 om "bdeGirokort" = Ja (tbl) ellers printes de ud på ADRESSE 2
Autogiro breve skal altid printes på ADRESSE 2

PRINTER IP ADRESSE 1 = Girokort
PRINTER IP ADRESSE 2 = A4 uden girokort

Mvh Rickie
Avatar billede mugs Novice
27. oktober 2006 - 11:53 #1
Du kan sagtens lave en combo, der får Access til at liste alle printere på netværket. Derefter kan du vælge comboens indhold efter dine kriterier. Det er omfattende at forklare, men læg din e-mail, så kna jeg sende dig et eksempel.
Avatar billede jensen363 Forsker
27. oktober 2006 - 11:54 #2
Denne kode har jeg i sin tid benyttet til at allokere udskrifter til hhv. Skuffe1 og Skuffe2 i den samme printer ... måske kan du benytte den

Sub setPaperSource(rptName As String)
 
'*****************************************************
'* Bestillingskriterine for Erindringsmeddelelse    *
'* Ajourført 20.11.2003 af OSE                      *
'*****************************************************
 
  Dim rpt As Report
  Dim dm As zwtDeviceMode
  Dim DevString As zwtDevModeStr
  Dim DevModeExtra As String
     
  DoCmd.SetWarnings False
  ' Udskriftsbakke til Debet faktura
  DoCmd.OpenReport rptName, acDesign
  Set rpt = Reports(rptName)
  DevModeExtra = rpt.PrtDevMode
  DevString.RGB = DevModeExtra
  LSet dm = DevString
  dm.dmDefaultSource = 2 '<-- Her indstilles bakkenummer
  LSet DevString = dm
  Mid$(DevModeExtra, 1, 68) = DevString.RGB
  rpt.PrtDevMode = DevModeExtra
  DoCmd.Save acReport, rpt.Name
  DoCmd.SelectObject acReport, rpt.Name, True
  DoCmd.PrintOut acPages, 1, 9999
     
  ' Set Paper Tray for page 2
  DoCmd.OpenReport rptName, acDesign
  Set rpt = Reports(rptName)
  DevModeExtra = rpt.PrtDevMode
  DevString.RGB = DevModeExtra
  LSet dm = DevString
  dm.dmDefaultSource = 1 '<-- Her indstilles bakkenummer
  LSet DevString = dm
  Mid$(DevModeExtra, 1, 68) = DevString.RGB
  rpt.PrtDevMode = DevModeExtra
  DoCmd.Save acReport, rpt.Name
  DoCmd.SelectObject acReport, rpt.Name, True
  DoCmd.PrintOut acPages, 1, 9999, , 1, False '<-- antal kopi rettes her
  DoCmd.SetWarnings True
End Sub
Avatar billede Slettet bruger
27. oktober 2006 - 12:05 #3
Det absolut nemmeste ville være hvis du kan bruge DoCmd.RunCommand acCmdPrint!~)
Avatar billede Slettet bruger
27. oktober 2006 - 13:41 #4
Lav en report til hver type og i designview for de enkelte rapporter, der specificere du printer i sideopsætning!~)

Så kan du styre det på rapporterne i stedet...
Avatar billede rickie Juniormester
27. oktober 2006 - 13:51 #5
Oki!

SPG - Helst ville jeg kun have en rapport hvis det kan lade sig göre
JENSEN393 - Er der virkelig brug for hele den lange kode :-) Kan det ikke lade sig göre med "kun" et enkelt kommande/linie?
Avatar billede rickie Juniormester
27. oktober 2006 - 13:53 #6
DoCmd.RunCommand acCmdPrint!~) Dette lyder som noget jeg måske kan bruge hvis du kan uddybe koden lidt mere? :-)
Avatar billede Slettet bruger
27. oktober 2006 - 14:07 #7
Du behøver kun 1 rapport og så lav et antal kopier og kald dem eks. rptAutogiro, rptBokadebrev osv. Jeg tror det vil være det nemmeste, medmindre en har en kode, som kan gøre præcis, som du efterspørger...
Avatar billede Slettet bruger
27. oktober 2006 - 14:10 #8
ellers..

DoCmd.OpenReport "report1", acViewPreview
DoCmd.RunCommand acCmdPrint
DoCmd.Close acReport, "report1"

!~)
Avatar billede rickie Juniormester
30. oktober 2006 - 08:38 #9
Jeg vil stadig, hvis det altså kan lade sig göre, have en rapport. Jeg har feks checkbokse hvor man välger om brevet skal printes med girokort eller ikke - If Typ = "Giro" then...
Avatar billede Slettet bruger
30. oktober 2006 - 09:14 #10
Jeg har ikke stødt på en direkte kommando til at styre printeren, jeg har kun set det hvor man laver om på standardprinter eller hvor man går i designvisning. Du kan prøve at se et eksempel, men det er altså voldsomt og hvordan det skal integreres ved jeg ikke.

Jeg vil foreslå at du kopierer din rapport i 4 eksemplarer eller hvor mange du nu har brug for og så i designvisning af den enkelte rapport, sæt specifik printer i sideopsætningen. For det er ikke noget problem at lave en if sætning, som skriver ud til en bestemt rapport!~)
Avatar billede rickie Juniormester
30. oktober 2006 - 12:46 #11
Hej igen SPG,

Jeg gör som du skrev oven! Du har helt klart ret i at det er nemmest. Jeg har lavet denne kode:

If DLookup("[brvGiro]", "[tblBrevBokning]", "[brvGiro]=Yes") Then
    'BREV SKRIVS UT UTAN GIRO
    stDocName = "repBrevBokningUGiro"
    DoCmd.OpenReport stDocName, acNormal
   
    Else
    'BREV SKRIVS UT MED GIRO
    stDocName = "repBrevBokningMGiro"
    DoCmd.OpenReport stDocName, acNormal
    End If

...om jeg forstår det rigtigt så tjekker DLookup kun en gang mod databasen men hvordan gör jeg hvis jeg vil at den skal tjekke en gang per post i tabellen?

Kan Dlookup bruge en slags loop for hver post og hvordan gör man?

Posterne i tbl kan feks väre
1 brvGiro=Yes
2 brvGiro=Yes
3 brvGiro]=Yes
Avatar billede Slettet bruger
31. oktober 2006 - 11:58 #12
Hej, undskyld jeg er lidt fraværende, men jeg har godt nok travlt for tiden. Du kan prøve flg.:

Dim r as dao.recordset
set r=me.recordset
do until r.EOF

If DLookup("[brvGiro]", "[tblBrevBokning]", "[brvGiro]=Yes") Then
    'BREV SKRIVS UT UTAN GIRO
    stDocName = "repBrevBokningUGiro"
    DoCmd.OpenReport stDocName, acNormal
   
    Else
    'BREV SKRIVS UT MED GIRO
    stDocName = "repBrevBokningMGiro"
    DoCmd.OpenReport stDocName, acNormal
End If

r.movenext
loop

Husk at du i visuel basic skal gå i værktøjer/referencer og sætte en reference til DAO 3.5 , 3.6 eller lignende!~)
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