Entwickler-Ecke
Sonstiges (Delphi) - MS Access 2007: Report anzeigen
baka0815 - Di 16.09.08 09:51
Titel: MS Access 2007: Report anzeigen
In dem Programm, das ich hier vorliegen habe, werden Berichte gedruckt. Diese werden entweder mithilfe eines externen Reporting Tools oder mit MS Access angezeigt und gedruckt.
Bis inkl. MS Access 2003 funktioniert das auch wunderbar, nur Access 2007 stellt sich hier ein bisschen an. Access öffnet sich zwar und der Bericht wird auch in dieser Leiste (wo auch die anderen Objekte der DB: Abfragen, etc. angezeigt werden) links markiert, jedoch nicht geöffnet.
Zum Anzeigen des Berichts wird folgender Code verwendet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Bericht: string; MSAccess.DoCmd.Close('3', Bericht); MSAccess.DoCmd.SelectObject('3', Bericht, True); MSAccess.DoCmd.OpenReport(Bericht, '2'); MSAccess.DoCmd.SelectObject('3', Bericht, True); MSAccess.DoCmd.RunCommand('2'); ShowWindow(MSAccess.hWndAccessApp, SW_MAXIMIZE); MSAccess.DoCmd.Maximize; ShowWindow (MSAccess.hWndAccessApp, SW_MAXIMIZE); |
Ich habe bereits herausgefunden, dass man in Access 2007 für einen Bericht die Eigenschaft "PopUp" auf True setzen kann, damit dieser automatisch geöffnet wird, dieses habe ich bei [1] wie folgt eingefügt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if (access_version = '.12') then begin for I := 0 to MSAccess.Reports.Count.AsInteger - 1 do begin if (MSAccess.Reports.Item(I).Name = Bericht) then begin MSAccess.Reports.Item(I).Popup := True; Break; end; end; end; |
So öffnet sich der Bericht zumindest entsprechend allerdings in einem Fenster von ca. 50x50 Pixel.
Was genau muss ich (wo) einstellen, damit dieser Bericht im Vollbild dargestellt wird?
ene - Di 16.09.08 11:16
Moin,
Normalerweise reicht ein DoCmd.OpenReport "DeinBericht", acViewPreview und ein DoCmd.Maximize. Das PopUp hat noch andere Eigenschaften, wenn es modal aufgerufen werden soll, kannst du im OpenReport noch ein acDialog mitgeben. Wenn du den Bericht als acViewNormal öffnest, wird der Bericht nicht angezeigt, sondern gedruckt.
Und was die Selects für einen (Un-)Sinn haben, kann ich nicht nachvollziehen.
baka0815 - Di 16.09.08 12:03
Was die Selects angeht, weiß ich auch nicht genau, was für einen Zweck die erfüllen. Ich vermute, dass ausprobiert wurde und "so ging's".
Die '2' die beim OpenReport mitgeschickt wird ist
laut Microsoft [
http://msdn.microsoft.com/en-us/library/bb225993.aspx] ja eben acViewPreview.
Bei Access bis inkl. 2003 funktioniert's auch prima, nur bei der 2007er Version tut's eben nicht. Access öffnet sich, in der Leiste wird der Bericht ausgewählt und fertig. Wenn man diesen dann manuell öffnet, funktioniert der Bericht, die Daten sind also da.
Könnte es daran liegen, dass nach dem OpenReport noch die Selects gemacht werden?
ene - Di 16.09.08 12:15
| Zitat: |
View Optionaler AcView-Wert. Die Ansicht, die für den angegebenen Bericht verwendet werden soll.
AcView kann einer der folgenden AcView-Konstanten entsprechen.
acViewDesign
acViewNormal Standard Druckt den Bericht sofort.
acViewPivotChart Nicht unterstützt.
acViewPivotTable Nicht unterstützt.
acViewPreview |
Da unterscheiden sich die Enumerationen aber schon. Wobei ich eigentlich davon ausgehe, dass die alten Werte ihre Gültigkeit behalten.
Wobei ich die 2 mit dem Preview und der Beschreibung als Print Preview sehr merkwürdig finde. Probier doch mal die 5, vielleicht passt das in 07 dann wieder. Damit konnte ich leider noch nicht arbeiten. Lass den Rest doch erstmal weg und versuche nur das OpenReport.
baka0815 - Di 16.09.08 12:23
Das folgende ist von der MS-Seite, die ich verlinkt habe:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Name Value Description acViewDesign 1 Design view acViewLayout 6 Layout view acViewNormal 0 (Default) Normal view acViewPivotChart 4 PivotChart view acViewPivotTable 3 PivotTable view acViewPreview 2 Print Preview acViewReport 5 Report view |
Die Reihenfolge der Einträge lässt also nicht auf deren Wert schließen. :)
2 ist also acViewPreview und in meinen Augen richtig.
ene - Di 16.09.08 12:26
Das nicht, aber 5+6 sind die neuen Einträge, damit sollten wenigstens die alten Werte weiterhin bestehen ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!