Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Beim öffnen zum zuletzt geänderten Datensatz springen

Frage Microsoft Microsoft Office

Mitglied: Valume91

Valume91 (Level 1) - Jetzt verbinden

02.06.2009, aktualisiert 15:11 Uhr, 9694 Aufrufe, 8 Kommentare

Ich möchte das beim Öffnen meines Formulars automatisch zum zuletzt geänderten Datensatz gesprungen wird.

Hallo liebes Forum

Ich habe ein Formular "Formular Produkteingabe". Ausserdem habe ich ein Feld "DatumAenderung" in dem das Datum der letzten Änderung eines Datensatzes gespeichert wird. Nun speichere ich meinen Datensatz, und schliesse das Formular.
Wie kann ich das nun bewerkstelligen das beim erneutem öffnen des Formulars zum Datensatz gesprungen wird, der den höchsten Wert in "DatumAenderung" hat. Also der Datensatz der zuletzt geändert wurde?

Mit freundlichen Grüßen Valume
Mitglied: jhinrichs
02.06.2009 um 15:47 Uhr
Der einfachste Weg (ohne VBA-Programmierung) wäre m. E., in der dem Formular zugrundeliegenden Abfrage (wenn es eine Tabelle ist, eine Abfrage erstellen), die Datensätze absteigend nach DatumAenderung zu sortieren.
Bitte warten ..
Mitglied: Valume91
02.06.2009 um 15:55 Uhr
Hi jhinrichs

Erstmal danke für die Antwort.
Leider ist das nicht was ich Suche den die sortierung sollte so bleiben wie sie ist. Kannst du mir sagen wie ich das mit VBA mache?

Mit freundlichen Grüßen Valume
Bitte warten ..
Mitglied: NetWolf
02.06.2009 um 22:22 Uhr
Hi Valume,

mit VBA geht das ganz einfach, leider schreibst du nicht, mit welcher Access-Version du arbeitest. Auch nicht ob du DAO oder ADO verwendest

Hier mal eine Anleitung:
- mit DMAX den Datensatz finden, der zuletzt geändert wurde
- die ID speichern(merken)
- einen Recordset (Kopie) öffnen
- ID suchen
- Bookmark setzen
- Recordset schließen
- Bookmark anwenden

Gruß
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: Valume91
03.06.2009 um 08:52 Uhr
Hi Netwolf

Danke für die Antwort!
Ich arbeite mit Access 2003.
Leider kann ich mit deiner Anleitung so gut wie nichts anfangen, da ich von VBA keine Ahnung habe.
Ein Code Beispiel wäre also nett. ;)

Gruss Valume
Bitte warten ..
Mitglied: jhinrichs
03.06.2009 um 09:23 Uhr
Guten Morgen, bin auch wieder da.

Hier ein schlichtes Code-Beispiel (auf DAO basierend, ggf. ist im Visual-Basic-Editor unter "Extras-Verweise" die DAO-Object-Library zu aktivieren).

In den Formulareigenschaften unter "Ereignis-Beim Öffnen" Ereignisprozedur anklicken, dann öffnet sich der VB-Editor. Dort zunächst, wie oben beschrieben, DAO aktivieren. Dann den vorhandenen Code wie folgt ergänzen:
01.
Option Compare Database 
02.
 
03.
Private Function SQLDate(InDate As String) As String 
04.
 
05.
  Dim sDay, sMonth, sYear As String 
06.
  Dim sDatVal As String 
07.
 
08.
  sDatVal = DateValue(InDate) 
09.
   
10.
  sDay = Day(sDatVal) 
11.
  sMonth = Month(sDatVal) 
12.
  sYear = Year(sDatVal) 
13.
 
14.
  SQLDate = "#" & sMonth & "/" & sDay & "/" & sYear & "#" 
15.
 
16.
End Function 
17.
 
18.
 
19.
 
20.
Private Sub Form_Open(Cancel As Integer) 
21.
 
22.
  Dim rst As DAO.Recordset 
23.
  Dim query As String 
24.
 
25.
  Set rst = Me.Recordset 
26.
 
27.
  query = "DatumAenderung=" & SQLDate(DMax("[DatumAenderung]", "Tabellenname")) 
28.
 
29.
  rst.MoveFirst 
30.
  rst.FindFirst (query) 
31.
     
32.
End Sub
Natürlich noch "Tabellenname" entsprechend anpassen.

Die Funktion SQLDate dient nur der Übersetzung des Datumsformates in das SQL-Format, welches für die Find-Funktion genutzt wird. Implizit wird vorausgesetzt, dass es nur ein maximales "DatumAenderung" gibt, auf jeden Fall wird mit der o.a. Methode der erste Tabelleneintrag gefunden, dessen DatumAenderung dem Maximum entspricht.
Ich habe jetzt mal das Datumsformat angenommen. Wenn es sich um eine Zahl oder ein Datum mit Uhrzeit (ja wahrscheinlich sinnvoller) handelt, ist der Suchstring query entsprechend anzupassen.

Das sollte es gewesen sein.

Viele Grüße

EDIT:

Hier noch ein Codebeispiel mit automatischem Setzen eines TimeStamps und entsprechender Anzeige, etwas einfacher, da die Datumsformatumwandlung entfällt:

01.
Option Compare Database 
02.
 
03.
Private Sub Form_Open(Cancel As Integer) 
04.
 
05.
  Dim rst As DAO.Recordset 
06.
  Dim query As String 
07.
 
08.
  Set rst = Me.Recordset 
09.
 
10.
  query = "DatumAenderung=" & Replace(DMax("[DatumAenderung]", "Tabellenname"), ",", ".") 
11.
 
12.
  rst.MoveFirst 
13.
  rst.FindFirst (query) 
14.
    
15.
End Sub 
16.
 
17.
 
18.
Private Sub Test_Dirty(Cancel As Integer) 
19.
   
20.
  Me.DatumAenderung = Now() 
21.
   
22.
End Sub
Bitte warten ..
Mitglied: Valume91
03.06.2009 um 12:54 Uhr
wow danke jhinrichs
Leider funktioniert das bei mir nicht, nurschon aus dem Grund das ich den verweis DAO-Object-Library nicht in meiner Liste habe:S
Datumsformat ist richtig, jedoch mit Uhrzeit. Wie soll ich das nun anpassen?
Und noch eine verständnissfrage: Warum kommt eigendlich das "Option Compare Database" vor dem Private Sub?
Das wird bei mir dann immer oben an den Trennstrich genommen...

Mit freundlichen Grüßen Valume
Bitte warten ..
Mitglied: jhinrichs
03.06.2009 um 14:13 Uhr
Hallo,

1. DAO sollte bei Access 2003 dabei sein. Wenn es in der Extras-Verweise-Liste nicht angezeigt wird, ist ggf. die DLL nicht richtig registriert. Suche einmal die dao360.dll (ggf. auf der Office-CD, dann auf die Platte kopieren)und führe dann auf der Kommandozeile

01.
regsvr32.exe C:/Pfad/Zur/dao360.dll
aus.

2. Hier eine angepasste SQLDate-Funktion für das Format mit Datum und Uhrzeit, Beispiel 1 sollte damit laufen.

01.
Private Function SQLDate(InDate As String) As String 
02.
  Dim sDay, sMonth, sYear As String 
03.
  Dim ZeitFormat As String 
04.
  Dim sDatVal As String 
05.
   
06.
  sDatVal = InDate 
07.
   
08.
  sDay = Day(sDatVal) 
09.
  sMonth = Month(sDatVal) 
10.
  sYear = Year(sDatVal) 
11.
   
12.
  ZeitFormat = "hh:nn:ss" 
13.
       
14.
  SQLDate = "#" & sMonth & "/" & sDay & "/" & sYear & " " & Format(sDatVal, ZeitFormat) & "#" 
15.
     
16.
End Function
3. Option Compare Database sorgt für eine der Ländereinstellung der DB angepasste Sortierreihenfolge, für unser Beispiel unerheblich, taucht im VB-Editor aber automatisch auf.

P.S.:
Programmierung ginge sicherlich "eleganter", der Code sollte aber möglichst selbsterklärend sein.
Bitte warten ..
Mitglied: Valume91
10.06.2009 um 16:16 Uhr
So sorry habs erst jetzt getestet, funktioniert prima!
Danke nochmals jhinrichs!
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Microsoft Office
gelöst Makro wird beim öffnen Vorlage nicht ausgeführt (8)

Frage von Sunny89 zum Thema Microsoft Office ...

Microsoft Office
Mehr als 20 Excel Dateien öffnen gleichzeitig (7)

Frage von PizzaPepperoni zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...