Avatar billede rosted Nybegynder
12. november 2002 - 15:47 Der er 2 kommentarer og
1 løsning

Sidebredde ved to sider

Jeg har en rapport med så mange kolonner at de fylder to sider i bredden. Det fungerer også helt fint. Men der er tilfælde hvor der ikke er data til de kolonner som er på side to. I de tilfælde vil jeg naturligvis ikke have vist den side. Jeg har forsøgt mig med at gøre alle kontrollerne på side to usynlige og sætte deres left til 0 så de befinder sig på side et. Derefter sætter jeg sidebredden så det hele kan være på en side. Dette bliver gjort OnOpen på rapporten. Alligevel kommer der en blank side to. Hvis jeg læser rapportens bredde er den ganske rigtig lille nok til at den skulle kunne være der. Hvad gør jeg forkert?

Jeg benytter Access 97 (og det er ikke til at ændre).
Avatar billede mugs Novice
12. november 2002 - 17:30 #1
Et skud i tågen:
Flyt koden til Detaljesektionens VedUdskrivning (OnPrint).
Avatar billede rosted Nybegynder
13. november 2002 - 10:18 #2
Det dur ikke. Men jeg har fundet en løsning. Det har at gøre med Column width som er en opsætning under Page setup...
Desvære kan man ikke ændre denne OnOpen, men jeg har fundet følgende kode som kan gøre det inden rapporten åbnes, hvilket er fint nok i mit tilfælde:

Type str_PRTMIP
    RGB As String * 28
End Type

Type type_PRTMIP
    'Typed as longs due to Ansi to Unicode conversion
    xLeftMargin As Long
    yTopMargin As Long
    xRightMargin As Long
    yBottomMargin As Long
    fDataOnly As Long
    xItemSizeWidth As Long
    yItemSizeHeight As Long
    fDefaultSize As Long
    xItemsAcross As Long
    yColumnSpacing As Long
    xRowSpacing As Long
    rItemLayout As Long
    rFastPrinting As Long
    rDataSheetHeadings As Long
End Type


Public Function SetReportWidthDefault(strReportName As String, widthInCm As Single)
Dim PrtMipString As str_PRTMIP
Dim PM As type_PRTMIP
Dim objRpt As Report
Dim tempPrtMip As String

DoCmd.Echo False
DoCmd.openreport strReportName, acDesign
Reports(strReportName).Painting = False
Set objRpt = Reports(strReportName)

PrtMipString.RGB = objRpt.PrtMip

LSet PM = PrtMipString
'Use 1440 for US (inches), 567 (rest of the world) (centimeters)
'PM.xLeftMargin = left * 1440
'PM.yTopMargin = top * 1440
'PM.xRightMargin = right * 1440
'PM.yBottomMargin = bottom * 1440
PM.xItemSizeWidth = widthInCm * 567
LSet PrtMipString = PM

objRpt.PrtMip = PrtMipString.RGB

'Make sure report has the focus
DoCmd.SelectObject acReport, strReportName
'Save the Report
DoCmd.DoMenuItem 7, acFile, 4, , acMenuVer70
 
CloseRpt:
DoCmd.Close acReport, strReportName
DoCmd.Echo True
  'You're done.

End Function
Avatar billede rosted Nybegynder
08. januar 2003 - 15:44 #3
Jeg skal måske lige bemærke at dette IKKE virker i en mde fil (hvilket er surt, men egentlig forståligt nok).
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