vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Access   |   VB-Versionen: VBA22.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ädtBewertung:     [ Jetzt bewerten ]Views:  11.403 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10kein 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

Dieser Tipp wurde bereits 11.403 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel