Autor Beitrag
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Di 16.09.08 09:51 
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:
ausblenden 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');         // 2 = Seitenansicht
  // [1]
  MSAccess.DoCmd.SelectObject('3', Bericht, True);
  MSAccess.DoCmd.RunCommand('2');                  // acCmdWindowHide
  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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: 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.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: 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 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: 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.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Di 16.09.08 12:23 
Das folgende ist von der MS-Seite, die ich verlinkt habe:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 16.09.08 12:26 
Das nicht, aber 5+6 sind die neuen Einträge, damit sollten wenigstens die alten Werte weiterhin bestehen ;)

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.