Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 10:35 Der er 4 kommentarer og
1 løsning

Styre sidelayout på rapport vha VBA

Har brug for VBA kode der hh sørger for at rapport bliver liggende eller stående, da rapporten vil blive printet ud på forskellige printere.

Det er IKKE nok at installere SR1a, eller gå i Indstillinger\Generelt og så fjerne alle X under "Auto navnekorrektur"

Har haft spørgsmålet oppe og vende

http://www.eksperten.dk/spm/209373

men åbner lige igen...

og nej Thomas du har ret Hanne (i spm http://www.eksperten.dk/spm/209331) behøver ikke begynde at programmere sig ud af problemet, når hun kan nøjes med at fjerne et kryds i indstilinger eller downloade en SR :)
10. maj 2002 - 12:39 #1
Hej Susanne,

Okay, du skal lægge følgede kode i et modul (ikke i en rapport eller en formular, men et modul):
'***** Rapport-definnitioner *****
Type str_DEVMODE
    RGB As String * 94
End Type

Type type_DEVMODE
    strDeviceName As String * 16
    intSpecVersion As Integer
    intDriverVersion As Integer
    intSize As Integer
    intDriverExtra As Integer
    lngFields As Long
    intOrientation As Integer
    intPaperSize As Integer
    intPaperLength As Integer
    intPaperWidth As Integer
    intScale As Integer
    intCopies As Integer
    intDefaultSource As Integer
    intPrintQuality As Integer
    intColor As Integer
    intDuplex As Integer
    intResolution As Integer
    intTTOption As Integer
    intCollate As Integer
    strFormName As String * 16
    lngPad As Long
    lngBits As Long
    lngPW As Long
    lngPH As Long
    lngDFI As Long
    lngDFr As Long
End Type


Herefter lægger du følgede kode på en knap eller lign:

Private Sub cmdUdskriv_Click()
    'On Error Resume Next
    Dim n As Integer
    Dim rpt As Report
    Const DM_PORTRAIT = 1
    Const DM_LANDSCAPE = 2
    Dim DevString As str_DEVMODE
    Dim DM As type_DEVMODE
    Dim strDevModeExtra As String
   
    DoCmd.OpenReport "DinRapport", acViewDesign
    Set rpt = Reports("DinRapport")   
   
    If Not IsNull(rpt.PrtDevMode) Then
        strDevModeExtra = rpt.PrtDevMode
        DevString.RGB = strDevModeExtra
        LSet DM = DevString
        DM.lngFields = DM.lngFields Or _
        DM.intOrientation    ' Initialize fields.
       
        DM.intOrientation = DM_LANDSCAPE 'her sætter du orientation

        Debug.Print DM.strDeviceName
        LSet DevString = DM            ' Update property.
        Mid(strDevModeExtra, 1, 94) = DevString.RGB
        rpt.PrtDevMode = strDevModeExtra
    End If

    DoCmd.RunCommand acCmdSave
    DoCmd.OpenReport rpt.Name, acViewPreview

End Sub

Objektet DM styrer det hele.

Mht valg af printer, så er den lidt speciel.
DM.strDeviceName giver dig den aktuelle printer, men det er 32 bit kode, som f.eks. kan se således ud: "??????4??‰???  "
Derfor er du nødt til manuelt at skifte printer og så aflæse DM.strDeviceName og gemme det i en constant, således at du derefte kan bruge denne konstant til at skifte mellem printerne.

/Thomas

PS: Det var faktisk dig selv, der bragte mig på sporet da du omtalte prtMip. Så var det bare at side og bladre lidt frem og tilbage i hjælpen. Men jeg skulle stadig selv lige regne den med Printeren ud og i det hele taget var forklaringen i hjælpen meget sparsom.
10. maj 2002 - 12:40 #2
btw Dim N as Integer kan du godt fjerne....den er blot en rest fra et forsøg.
Avatar billede susanne_larsen Nybegynder
10. maj 2002 - 17:49 #3
>whoa hold your horses for en kode G****

ok prøver lige at implementere :)
Avatar billede susanne_larsen Nybegynder
11. maj 2002 - 10:37 #4
>thomas
simpelthen smukt arbejde :o)

Virker perfekt på diverse printere.

- takker for din hjælp..... :)

mhh egentlig utroligt alle de ting man kan finde en løsning på hvis man har kendskab nok til programmering :)
11. maj 2002 - 20:05 #5
ja...som udgangspunkt kan man jo alt!
I praksis er der faktisk kun få ting, man IKKE kan.

Det er jo vidunderligt :o)
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