PDA

Vollständige Version anzeigen : Beim öffnen eines Bericht auf die letzte Seite springen.


Glance
11.06.2001, 15:14
Hallo zusammen

Ich möchte gerne beim öffnen eines Bericht's, automatisch auf die letzte Seite springen. (Bericht besteht momentan aus 12 Seiten)

Kennt irgend jemand ein Makro oder einen VBA-Code.

Griessli
Glance

Stema
11.06.2001, 16:21
Hallo Glance,

versuch's mal mit:
Private Sub Report_Open(Cancel As Integer)
DoCmd.GoToPage Me.Pages
end sub

Konnte ich aber nicht ausprobieren.

Glance
11.06.2001, 16:41
Hallo Stema

Vielen Dank für deine Antwort.
Habe es Ausprobiert, bekomme aber einen Run-time error '2046'
The command or action 'GoToPage' isn't available now.

Weisst Du was dies zu bedeuten hat.

Griessli
Glance

kama
11.06.2001, 19:22
Öffne den bericht im vorschaumodus mit
DoCmd.OpenReport "Dein Bericht", acPreview, "", ""
dann
eventuell
DoEvent

DoCmd.GoToPage Me.Pages
müßte eigentlich hinhauen

Glance
12.06.2001, 08:49
Ich habe den DoEvent in einem Modul erstellt, aber wie bekomme ich den jetzt in den Private Sub Report_Open(Cancel As Integer)?
Ich muss ja die Schleife irgendwie einbinden!

Glance

Stema
12.06.2001, 10:32
Hallo Glance,

öffne den Report im Entwurfsmodus, gehe auf die Eigenschaften, Doppelklick auf On Report Open [Event Procedure] erscheint, danach rechts daneben die 3Punkte anklicken.
Ansonsten kannst Du auch mal On Activate ausprobieren.

Glance
12.06.2001, 10:50
HILFE es will einfach nicht gehen.

Ich weiss nicht ob dies frech ist, aber könntest du mir mal einen Code schreiben wie du meinst, weil irgend etwas mache ich falsch.

Wenn du keine Zeit hast, lass es nur sein irgend wann werde ich das schon schaffen.

Glance

PS 1: Ich wünsch dr e guete!

PS 2: Ich habe es so probiert:

Private Sub Report_Open(Cancel As Integer)

Dim Pages As Integer

DoCmd.OpenReport "Berichtsname", acViewPreview

For Pages = 1 To 100
If Pages Mod 100 = 0 Then
Do Events
Debug.Print Pages
End If
Next Pages

DoCmd.GoToPage Me.Pages

End Sub

Jetzt frage ich dich was ist hier falsch.
Also ich weiss es nicht!

Stema
12.06.2001, 14:33
Hallo Glance,

ich bin gescheitert. "DoCmd.GoToPage" funktioniert nur bei Formularen, nicht bei Reports. Und ich habe nichts äquivalentes gefunden. Habe auch versucht rumzutricksen.
Ich befürchte, daß es nicht zu machen ist.

Sorry

Glance
12.06.2001, 14:59
Trotzdem vielen Dank für deine Bemühungen.

Du was meinst du wenn ich die PageDown-Taste in eine Schleife schicke, bis er bei der letzten Seite ist???

Glance

Stema
12.06.2001, 16:57
Ist bestimmt einen Versuch Wert.
Aber wann? Bei OnOpen zu früh, da weiß ew Me.Pages noch nicht. Bei OnActivate muß man erst noch aktiv werden.
Vermutlich direkt im aufrufenden Modul nach dem DoCmd.OpenReport ???

holgii
12.06.2001, 18:14
Hallo Glance,

ist zwar etwas umständlich, aber funktioniert, wenn Dein Bericht Seitenzahlen enthält (z.B. "Seite 1 von 12").

Erstelle folgende Funktion:

Public Function letzte_seite_anzeigen()
Dim rpt_aktber As Report
Dim aktber As String

On Error Resume Next

aktber = ""

Do Until aktber = "DeinBericht"
Set rpt_aktber = Screen.ActiveReport
aktber = rpt_aktber.Name
Loop


SendKeys "{F5}", True
SendKeys CStr(rpt_aktber.Pages), True
SendKeys "~", True

DoCmd.Close acForm, "leeresFormular"

End Function


Erstelle ein leeres Formular:
Ereignis "Bei Zeitgeber" => =letzte_Seite_anzeigen()
Ereignis "Zeitgeberintervall" => 20


Das "Beim Öffnen" Ereignis Deines Berichtes sollte folgenden Code aufrufen:

Private Sub Report_Open(Cancel As Integer)
DoCmd.OpenForm "leeresFormular"
End Sub


Habbich getestet, sollte so laufen.

Gruß
holgii