Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Datensatzwechsel bei Ereignis Maus Ab
zurück: Access Datensätze im Formular per Knopfdruck filtern weiter: Markieren/Kopieren mehrerer Zellen im Endlosformular mit VBA Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
blicki
Es wird langsam besser...


Verfasst am:
08. Jan 2008, 09:16
Rufname: Martin
Wohnort: Meerbusch

Datensatzwechsel bei Ereignis Maus Ab - Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

Hallo wertes Forum.
In einem Ufo blende ich beim Ereignis Mausbewegung eine Miniformular mit der letzten Änderung des aktuellen Datensatzes ein. Bei Mausbewegung auf dem Hintergrund wird dieses "Hoover-Formular" wieder ausgeblendet.
Nun habe ich versucht beim Maus Ab bzw. Maus Auf Ereignis in einem Steuerelement des Ufos einen Datensatzwechsel im UFO zu erreichen, um zum richtigen Datensatz zu wechseln und somit das Datum des neuen(aktuellen) Datensatzes im Hooverformular anzuzeigen.
Das Ereignis Maus auf Bzw. Maus ab wird nicht bei der Mausbewegung ausgelöst.
Auch funktionieren diese Ereignisse nicht, wenn ich sie im Detailbereich des Ufos einbaue.
Erst beim klicken in den nächsten Datensatz wird das Ereignis Maus Ab bzw. Maus Auf ausgelöst. Das habe ich mit Haltepunkten getestet.
Ich möchte aber nicht in den nächsten DS klicken sondern die Mausbewegung dazu auswerten.

_________________
Gruß Martin
Ein paar gesammelte Werke habe ich in der Beispiele.mdb,die ihr auf meiner HP findet, zusammengefasst.
rita2008
Im Profil kannst Du frei den Rang ändern


Verfasst am:
08. Jan 2008, 12:32
Rufname:
Wohnort: Berlin


AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

Maus ab heißt doch aber klicken, also drücken auf die Maustaste, und Maus auf heißt Maustaste loslassen.
_________________
mfg Rita

Antworten bitte hier im Forum, nicht als private Nachricht. Danke
blicki
Es wird langsam besser...


Verfasst am:
08. Jan 2008, 14:21
Rufname: Martin
Wohnort: Meerbusch

AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

O.K. dann habe ich das Ereignis fehlinterpretiert.

Hast du denn irgend eine Idee wie man mein Problem lösen könnte?

_________________
Gruß Martin
Ein paar gesammelte Werke habe ich in der Beispiele.mdb,die ihr auf meiner HP findet, zusammengefasst.
Willi Wipp
Moderator


Verfasst am:
08. Jan 2008, 14:40
Rufname:
Wohnort: Raum Wiesbaden

Re: Datensatzwechsel bei Ereignis Maus Ab - Re: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

Hi blicki,

wenn ich das jetzt richtig verstanden habe, dann soll in einem Endlosformular, abhaengig von der Position der Maus ==> DS, eine Anzeige erfolgen.
Dann werte doch die Position der Maus entsprechend aus.
Vielleicht helfen da auch die Ansaetze aus Thema Frage zu FAQ4.5 gleicher DS nach Requery weiter.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
blicki
Es wird langsam besser...


Verfasst am:
11. Jan 2008, 15:36
Rufname: Martin
Wohnort: Meerbusch


AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

blicki am 08. Jan 2008 um 14:33 hat folgendes geschrieben:
Schau ich mir mal an.
Danke für den Tip.
Wenn ich nicht weiter weiß melde ich mich noch mal.

Hallo zusammen,
ich komme mit der Funktion in Relation zu meinem Problem nicht ganz klar Question
Ich poste erst mal den Code.
Code:
Private Sub Befehl57_Click()
    Dim lngCurrentSectionTop    As Long
    Dim lngRecordFromTop        As Long
    Dim lngDeineID              As Long
    Dim lngSelTop               As Long
   
    ' Nur nötig wenn z.B. über Befehlsschaltfläche im Formularkopf aufgerufen!
    Screen.PreviousControl.SetFocus    'Focus auf letztes Steuerelement setzen
    ' Positionsinformationen zum aktuellen DS speichern
    lngSelTop = Me.SelTop                                        'Aktueller DS
    lngCurrentSectionTop = Me.CurrentSectionTop     'Position des aktuellen DS
    On Error Resume Next                     'Falls kein Formularkopf angelegt
    If Me.Section(acHeader).Visible Then           'Wenn Formularkopf sichtbar
        lngRecordFromTop = (lngCurrentSectionTop - _
                            Me.Section(acHeader).Height) / _
                            Me.Section(acDetail).Height
                           
       Else                                      'Wenn Formularkopf unsichtbar
        lngRecordFromTop = lngCurrentSectionTop / Me.Section(acDetail).Height
    End If
    If Err Then                                    'kein Formularkopf angelegt
        lngRecordFromTop = lngCurrentSectionTop / Me.Section(acDetail).Height
    End If
    On Error GoTo 0
    lngDeineID = Me!ID_tbl_Motor
    Me.Painting = False
    Me.Requery
    ' Datensatz an richtige Position setzen
    If lngSelTop > lngRecordFromTop Then               'Nicht erster Datensatz
        Me.SelTop = Me.RecordsetClone.RecordCount
                        'Nötig wegen der Access-eigenen Laufleisten-Behandlung
        Me.SelTop = lngSelTop - lngRecordFromTop
    End If
    ' Richtigen Datensatz markieren (Fokussetzen)
    Me.Recordset.FindFirst "ID_tbl_Motor =" & lngDeineID
    Me.Painting = True
End Sub
Dieser Code findet den Datensatz nach einem Requery wieder.
Wie die Funktion das Macht habe ich auch durchblickt.

Ich möchte aber, dass die Datensätze bei einer Bewegung der Maus in die entsprechende Richtung entweder vor oder zurück gewechselt werden.
Ich habe schon gesehen, dass beim Ereignis der Mausbewegung die Y-Variable größer oder kleiner wird. Und zwar im Endlosformular immer nur in dem Umfang wie das Steuerelement, welches diesen Code beinhaltet.
In meinem Fall 0-627 und das ganze in 15er Schritten.
Irgendwie habe ich keine rechte Idee, wie ich den obigen Code mit den Werten dieser Y-Variable des Mausereignisses verheiraten soll, damit ein Datensatzwechsel vor oder zurück erfolgt.
Hab da wohl momentan ein Brett vor dem Kopf.

_________________
Gruß Martin
Ein paar gesammelte Werke habe ich in der Beispiele.mdb,die ihr auf meiner HP findet, zusammengefasst.
Willi Wipp
Moderator


Verfasst am:
11. Jan 2008, 23:45
Rufname:
Wohnort: Raum Wiesbaden

Re: Datensatzwechsel bei Ereignis Maus Ab (II) - Re: Datensatzwechsel bei Ereignis Maus Ab (II)

Nach oben
       Version: Office 2003

Hi blicki,

kannst Du eine auf das Wesentliche reduziete Beispiel-DB online stellen,
die Deinen momentanen Stand darstellt, mit anonymisierte Demo-Daten?
Verwendest Du auch das Formular-Ereignis Bei Mausbewegung (MouseMove)?
Der andere Code sollte nur zeigen wie man bestimmen kann welcher DS wo angezeigt wird Wink

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
blicki
Es wird langsam besser...


Verfasst am:
12. Jan 2008, 12:22
Rufname: Martin
Wohnort: Meerbusch

AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

Hallo Willi,
ich habs gerade selber hinbekommen.
War 'ne schwierige Geburt.
Als ich heute Nacht so im Bett lag kam mir die Idee. Idea
Und es funktioniert.

Ich habe über die Felder in dem Endlosformular, die sowieso nur der Anzeige dienen, ein großes Textfeld gelegt, welches oben und unten ein wenig vom Detailbereich frei lässt!! Wichtig!!!

Nun habe ich in das transparente, grosse, darüber liegende Textfeld folgenden Code eingebaut.
Code:
Private Sub txUnten_MouseMove(Button As Integer, Shift As Integer, _
                              X As Single, Y As Single)
On Error GoTo Err_Handler:
    Dim rs As DAO.Recordset
   
    Set rs = Me.Recordset
    If Not fctIsFormOpen("frm_hoover") Then
        '--- Wenn Form geschlossen, dann öffnen ---
        DoCmd.OpenForm "frm_hoover", acNormal
        '------------------------------------------
    End If
    Forms!frm_hoover!txLastChange = rs!LetzteÄnderung
    Fld = Y
    'Gehe zum nächsten DS
    'Me.Section(acDetail).Height = Höhe des Detailbereichs
    If HG > Me.Section(acDetail).Height - 45 And Y < 45 Then
        rs.MoveNext
        HG = 0
        Exit Sub
    End If
Exit_Err:
    Exit Sub
Err_Handler:
    If Err.Number = -2147352567 Then
        rs.MoveFirst
        Resume Next
    End If
End Sub
Im Detailbereich habe ich beim Ereignis Mausbewegung diesen Code eingebaut.
Code:
Private Sub Detailbereich_MouseMove(Button As Integer, Shift As Integer, _
                                    X As Single, Y As Single)
On Error GoTo Err_Handler
    Dim rs As DAO.Recordset

    Set rs = Me.Recordset
    If fctIsFormOpen("frm_hoover") = True Then
        '--- Wenn Form geschlossen, dann öffnen ---
        DoCmd.OpenForm "frm_hoover", acNormal
        '------------------------------------------
    End If
    Forms!frm_hoover!txLastChange = rs!LetzteÄnderung
    HG = Y
    'Gehe einen DS zurück
    'Die Zahl 30 entspricht 2 auswertbaren Bildschirmzeilen
    'Rückgabewert der Maus kleinster Y Wert = 15
    If Y < 45 And HG < 45 Then
        rs.MovePrevious
        HG = Me.Section(acDetail).Height 'Höhe des Detailbereichs
        Exit Sub
    End If
Exit_Err:
    Exit Sub
Err_Handler:
    If Err.Number = -2147352567 Or Err.Number = 3021 Then
        rs.MoveFirst
        Resume Next
    End If
End Sub
Nun muss man lediglich noch die Ereignisse abfangen, wenn mal in das Feld hineingeklickt wird und hier und da einen Fokus neu setzen.

Die zugehörige Funktion, die prüft, ob das "Hoover-Formular" bereits geöffnet ist, lautet wiefolgt:
Code:
Option Compare Database
Option Explicit

Public Function fctIsFormOpen(StrName As String) As Boolean
    fctIsFormOpen = (SysCmd(acSysCmdGetObjectState, acForm, StrName) > 0)
End Function
Dann gibts da noch zwei globale Variablen, in denen die Maus-Werte zwischen gespeichert werden müssen.
Code:
Public HG As Long
Public Fld As Long
Das ganze funktioniert so:
Wenn die Maus von oben nach unten bewegt wird, erreicht der Wert HG irgendwann den größten Wert. Wenn dann gleichzeitig der kleinste Wert im Textfeld erreicht wird, bedeutet das einen Datensatz vor.

Andersrum, wenn im Detailbereich und auch im Textfeld beide Werte das Minimum erreicht haben bedeutet das, einen Datensatz zurück.
Nur noch ein paar Fehler abgefangen, wenn kein aktueller Datensatz vorliegt bzw. das Ende der DS erreicht ist und fertig.

Weil bei schnellen Mausbewegungen nicht lückenlos jeder Wert zurückgegeben wird, muss man die Grenzbereiche "Puffern", indem nicht 0 oder der maximalste Wert ausgewertet wird, sondern ein Bereich. Also hier 0-45 oder Höhe des MaxHöheDetailbereich -45
Code:
    If Y < 45 And HG < 45 Then ....
und
Code:
    If HG > Me.Section(acDetail).Height - 45 And Y < 45 Then

_________________
Gruß Martin
Ein paar gesammelte Werke habe ich in der Beispiele.mdb,die ihr auf meiner HP findet, zusammengefasst.
Willi Wipp
Moderator


Verfasst am:
12. Jan 2008, 15:54
Rufname:
Wohnort: Raum Wiesbaden

Re: Datensatzwechsel bei Ereignis Maus Ab (III) - Re: Datensatzwechsel bei Ereignis Maus Ab (III)

Nach oben
       Version: Office 2003

Hi blicki,

das schaut nicht schlecht aus, habe den Code noch ein wenig eingekuerzt. Hoffe ich habe nichts uebersehen. Wink
Funktioniert das denn auch wenn Du bei einem Endlosformular Dich mit der vertikalen Bildlaufleiste bewegst?
Hast Du es mal mit dem Formular-Ereignis getestet?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
blicki
Es wird langsam besser...


Verfasst am:
14. Jan 2008, 12:15
Rufname: Martin
Wohnort: Meerbusch

AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

blicki am 13. Jan 2008 um 19:25 hat folgendes geschrieben:
Hallo Willi,
wie meinst Du das mit der Vertikalen Bildlaufleiste und dem Formularereignis?

Also die Bildlaufleisten sind in meinem Fall beide ausgeblendet, weil die Liste der Datensätze auf eine Bildschirmseite passt.
Ich habe mal den Detailbereich größer gezogen, so dass sie nicht mehr drauf passen. Auch dann wird weiter vorwärts und rückwärts in den Datensätzen bewegt.
Meintest Du das mit der Vertikalen Bildlaufleiste?
Das scrollen der Datensätze über die Mausbewegung funktioniert nur ab dem aktiven Datensatz, egal wo ersteht, muss nicht der erste sein, d.h. man muss mit der Maus von oben über dem aktiven DS beginnend herunterziehen oder von unten her sich an den aktiven DS heranführen.
Werde morgen aber noch ein wenig verfeinern, nämlich dass das Hoover-Formular sich an der Mausposition orientiert. Dann wirds wohl auch meinem Auftraggeber gefallen.

Ich habe mir überlegt, noch eine Demo-DB mit anzuhängen...

_________________
Gruß Martin
Ein paar gesammelte Werke habe ich in der Beispiele.mdb,die ihr auf meiner HP findet, zusammengefasst.



MausDatensatznavigation.zip
 Beschreibung:
Die Auf- und Abbewegung der Maus bewirkt einen Datensatzwechsel und blendet ein Hoover-Formular mit der letzten Änderung ein.

Download
 Dateiname:  MausDatensatznavigation.zip
 Dateigröße:  376.23 KB
 Heruntergeladen:  47 mal

Willi Wipp
Moderator


Verfasst am:
16. Jan 2008, 02:30
Rufname:
Wohnort: Raum Wiesbaden

Re: Datensatzwechsel bei Ereignis Maus Ab (IV) - Re: Datensatzwechsel bei Ereignis Maus Ab (IV)

Nach oben
       Version: Office 2003

Hi blicki,

ich hatte an so was (siehe Anhang) gedacht ;)

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)



MausDatensatznavigation1.zip
 Beschreibung:

Download
 Dateiname:  MausDatensatznavigation1.zip
 Dateigröße:  43.77 KB
 Heruntergeladen:  95 mal

blicki
Es wird langsam besser...


Verfasst am:
21. Jan 2008, 13:09
Rufname: Martin
Wohnort: Meerbusch

AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2003

Willi, Du bist eben der Beste.
Embarassed

_________________
Gruß Martin
Ein paar gesammelte Werke habe ich in der Beispiele.mdb,die ihr auf meiner HP findet, zusammengefasst.
Marvin Smiley
Gast


Verfasst am:
10. Mai 2012, 17:53
Rufname:


AW: Datensatzwechsel bei Ereignis Maus Ab - AW: Datensatzwechsel bei Ereignis Maus Ab

Nach oben
       Version: Office 2007

Hallo Blicki, hallo Willi,
ich hatte ein ähnliches Problem, wie von Dir beschrieben, und habe mir die beiden Beispiele von Dir und Willi runtergeladen. Deine Version habe ich bei mir getestet und mein Problem hat sich erledigt. Cool

Das einzige Frage die bleibt, wie kann man es hinbekommen, das VBA schneller auf die einzelnen Mouse Events reagiert und den Datensatzzeiger entsprechend
auf den nächsten / vorherigen DS setzt ?
Es funktioniert nämlich nur dann korrekt, wenn ich sehr langsam die Maus über dem Formular bewege. Hmm !
Vielleicht liegt's an Access 2007 ?
Oder gibt es einen Befehl, änlich wie Keypreview = True, nur für die Mouse Events ?

Grüsse und Danke
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Maus Click 18 Trixihund 1416 17. Okt 2008, 03:32
Willi Wipp Maus Click
Keine neuen Beiträge Access Formulare: Unterformular, Ereignis bei Selektion 3 404Error 802 03. Sep 2008, 15:34
sthm Unterformular, Ereignis bei Selektion
Keine neuen Beiträge Access Formulare: AfterUpdate verursacht ungewollt Datensatzwechsel 2 piloti 608 17. Jul 2008, 10:32
piloti AfterUpdate verursacht ungewollt Datensatzwechsel
Keine neuen Beiträge Access Formulare: bei Maus über Listenfeldeintrag volle Länge zeigen 6 Fee76 408 29. Apr 2008, 16:10
Fee76 bei Maus über Listenfeldeintrag volle Länge zeigen
Keine neuen Beiträge Access Formulare: Ereignis ausführen, nachdem das Formular sichtbar ist 2 Jacko 1096 14. Feb 2008, 10:11
Jacko Ereignis ausführen, nachdem das Formular sichtbar ist
Keine neuen Beiträge Access Formulare: Ereignis zum Schreiben eines Feldinhalts in Tabelle gesucht 15 pacman 1312 22. Nov 2007, 16:07
Gast Ereignis zum Schreiben eines Feldinhalts in Tabelle gesucht
Keine neuen Beiträge Access Formulare: Ereignis aufrufen nach Änderung von berechnetem Textfeld 8 NicooL 1116 19. Okt 2007, 04:32
Willi Wipp Ereignis aufrufen nach Änderung von berechnetem Textfeld
Keine neuen Beiträge Access Tabellen & Abfragen: Kombinationsfeld ohne Eintrag soll Ereignis hervorrufen 3 Bullett 610 21. Jul 2007, 14:23
rita2008 Kombinationsfeld ohne Eintrag soll Ereignis hervorrufen
Keine neuen Beiträge Access Formulare: Scrollrad der Maus im Formular 1 Janine21 705 07. Jun 2007, 02:46
Nouba Scrollrad der Maus im Formular
Keine neuen Beiträge Access Formulare: Datensatzwechsel mit dem Mausrad verhindern 6 Irene 2027 28. Feb 2007, 09:18
Irene Datensatzwechsel mit dem Mausrad verhindern
Keine neuen Beiträge Access Formulare: Bei Änderung und Datensatzwechsel nachfragen... 6 azubite1 5388 30. Jun 2006, 13:11
Willi Wipp Bei Änderung und Datensatzwechsel nachfragen...
Keine neuen Beiträge Access Formulare: Ereignis Mausrad 1 Biit 1608 13. Jun 2006, 08:54
Biit Ereignis Mausrad
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Macromedia Dreamweaver