Rubrik: Access | VB-Versionen: VBA | 22.06.05 |
Datensatz-Ansicht beim Öffnen festlegen (ACESS 2000) Dieser Tipp beschreibt, wie man selbst festlegen kann, welche und wie viele Datensätze in der Datensatz-Ansicht beim Öffnen eines Formulars angezeigt werden. | ||
Autor: Richard Mittelstädt | Bewertung: | Views: 12.809 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Wer kennt das (nicht):
Man öffnet ein Formular und sieht
- nur einen einzigen Datensatz ganz oben stehen, obwohl sich darüber noch viel mehr Datensätze befinden. Eigentlich sollte der letzte oder neue Datensatz markiert und die vorhergehenden Datensätze oben zu sehen sein...
- die ersten Datensätze, die letzten aber nicht, obwohl man lieber den letzten markiert sehen würde...
Dieser Tip zeigt, wie man NACH dem Öffnen "automatisch" den Bildschirm mit einer bestimmten Satz-Zahl füllen und auf den neuen bzw. letzten Datensatz springen kann (ohne Sendkeys!)
Ob das überhaupt gewünscht wird, liegt natürlich an der Anwendung und den subjektiven Wünschen des Benutzers, zB. wenn:
- Das Formular mit den AKTUELLEN Datensätzen geöffnet wird und
- die Übersicht über die LETZTEN Daten gewünscht wird und/oder neue Daten eingegeben werden sollen.
- man auf jeden Fall auf den neuen/letzten Satz springen will, und mindestens einige vorhergehende Datensätze auch sehen möchte
- Der Anwender, warum auch immer, nicht nur mit einem Datensatz "begrüsst" werden will...
Wirkungsweise:
NACHDEM ein Formular (mit Source, Order...) geöffnet wurde, wird die Funktion "ZeigeDatensätze(Form_1 As Form, SatzAnzahl As Integer)" ausgeführt:
- in Form_Load() (wenn die RecordSource erst mal "bleibt") oder
- nach allen "Öffnungs-Codes" in einer Funktion/Prozedur. Dabei werden die Datensätze gezählt usw...
Hinweis: Der Datensatz-Markierer wird gesetzt! Neuer bzw. letzter Satz ist abhängig von FormularEigenschaft ".AllowAdditions"
Modul mit Beispiel-Aufruf (For_HauptFormular muss offen sein!):
Option Compare Database Option Explicit ' ************************************************************************ ' Funktion füllt den Bildschirm eines Formulars Form_1 so aus, ' dass SatzAnzahl Datensätze zu sehen sind ! ' und der neue Datensatz markiert wird. ' 2005-08-20 WICHTIG !!! : ' Vor dem Aufruf dieser Funktion muss das Formular so geöffnet ' bzw. positioniert werden, dass mindestens SatzAnzahl Datensätze ' angezeigt werden können. (Formular-Höhe muss ausreichen ! ) ' ************************************************************************ Public Function ZeigeDatensätze(Form_1 As Form, SatzAnzahl As Integer) ' Funktion füllt den Bildschirm eines Formulars Form_1 so aus, ' dass "SatzAnzahl" Datensätze zu sehen sind ' und der neue Datensatz markiert wird. On Error GoTo ERR_01 ' *** 2005-05-17 Vorher Satz schwarz markieren !!, ' dabei Steuerelemente verlassen !!! *** DoCmd.RunCommand acCmdSelectRecord Dim rst1 As Recordset Dim i As Long Dim n As Long Set rst1 = CurrentDb.OpenRecordset(Form_1.RecordSource, dbOpenSnapshot) Do Until rst1.EOF rst1.MoveNext Loop i = rst1.RecordCount If i = 0 Then rst1.Close Set rst1 = Nothing Exit Function End If If i < SatzAnzahl Then rst1.Close Set rst1 = Nothing ' Fehler 2105, wenn Form keine neuen erlaubt !!! DoCmd.GoToRecord acForm, Form_1.Name, acNewRec Exit Function End If rst1.Close Set rst1 = Nothing DoCmd.GoToRecord acForm, Form_1.Name, acLast For n = 1 To SatzAnzahl - 1 DoCmd.GoToRecord acForm, Form_1.Name, acPrevious Next n Form_1.Repaint ' notwendig ? If Form_1.AllowAdditions = True Then ' Fehler 2105, wenn Form keine neuen erlaubt !!! DoCmd.GoToRecord acForm, Form_1.Name, acNewRec Else ' neuer geht nicht, dafür letzten Satz ! DoCmd.GoToRecord acForm, Form_1.Name, acLast End If Form_1.Repaint ' notwendig ? Exit Function ERR_01: If Err.Number = 2105 Then ' neuer geht nicht, dafür letzten Satz ! DoCmd.GoToRecord acForm, Form_1.Name, acLast Else MsgBox "ZeigeDatensätze(Form_1 As Form, SatzAnzahl As Integer): " & _ CStr(Err.Number) & " " & Err.Description End If End Function
Public Function AufrufZeigeDatensätze() ' Das Bild so verschieben, dass der Bildschirm ausgefüllt wird Call ZeigeDatensätze(Forms![For_HauptFormular], 7) End Function
' Beispiel-Aufruf Beim Laden eines Formulars: Private Sub Form_Load() On Error GoTo ERR_01 ' ... ' ... DoCmd.GoToRecord acDataForm, Me.Name, acLast Call ZeigeDatensätze(Me, 9) ' 2005-05-10 Bildschirm mehr ausfüllen ! ' ... ' ... ' Fenster positionieren ' DoCmd.MoveSize 2 * 567, 3 * 567, 24 * 567, 15 * 567 Exit Sub ERR_01: MsgBox Me.Name & ".Form_Load(): " & Err.Number & " " & Err.Description End Sub