Endlosformular: DS markieren in zweiter Zeile

Schönen Guten Abend,

ich weiß nicht ob es für mein Problem eine Lösung gibt. Habe zumindest in keinem Forum oder unter einer Suchmaschine was gefunden.

Ich gebe einen neuen DS in ein Endlosformular ein. In dem „AfterUpdate“-Ereignis lasse ich das Endlosformular aktualisieren (Me.Requery). Danach markiere ich den gerade bearbeiteten DS:

lngidP = me!idP
Me.Requery
Me.Recordset.FindFirst "idP = " & lngidP

Nun wird mir dieser Datensatz immer als erste Zeile markiert. Es wäre aber sinnvoll, wenn dieser Datensatz erst in der zweiten oder dritten Zeile markiert wäre. Dies würde einem Scrollen nach unten entsprechen. Es ist wichtig, dass ich sehe, welche DS davor UND dahinter sortiert sind (Briefmarken in einem Album).

Gibt es hier eine Möglichkeit dies zu Steuern?

Danke schon einmal für eure Hilfe.

Schöne Grüße aus Württemberg,

Oliver.

Hallo,

  • welche Access - Version?

Ich gebe einen neuen DS in ein Endlosformular ein.

  • das EF ist wonach sortiert?
  • die Datensatzquelle sieht wie aus? (SQL-String)
  • die Eingabe erfolgt im Kopf oder Fuss des Formulars?

In dem „AfterUpdate“-Ereignis lasse ich das Endlosformular
aktualisieren (Me.Requery). Danach markiere ich den gerade
bearbeiteten DS:

lngidP = me!idP
Me.Requery
Me.Recordset.FindFirst "idP = " & lngidP

also springt Access zur ID, diese ID ist deine Sortierung?

Nun wird mir dieser Datensatz immer als erste Zeile markiert.

logisch, da du genau dort hin springst.

Es wäre aber sinnvoll, wenn dieser Datensatz erst in der
zweiten oder dritten Zeile markiert wäre.

wieso markiert?

Dies würde einem Scrollen nach unten entsprechen.

das kannst du mit SENDKEYS simulieren.

Es ist wichtig, dass ich sehe, welche DS davor UND dahinter sortiert sind (Briefmarken in einem Album).

aber doch nicht nach ID sortiert?

Gibt es hier eine Möglichkeit dies zu Steuern?

ich würde z.B. zum passenden Sortierkriterium springen und /oder einen entsprechenden Filter setzen.

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Wolfang,

Danke für deinen Hilfeversuch. Dann werde ich mal die Offenen Fragen beantworten!

  • welche Access - Version?

Access 2002

Ich gebe einen neuen DS in ein Endlosformular ein.

  • das EF ist wonach sortiert?
  • die Datensatzquelle sieht wie aus? (SQL-String)
  • die Eingabe erfolgt im Kopf oder Fuss des Formulars?

a) Der SQL-String: „SELECT A.* FROM tblKatalogNr ORDER BY A.intKatalogNr, A.txtKatalogNr“
b) Die Eingabe erfolgt im Detailbereich des Formulars. Speichern erfolgt mit Wechsel DS oder einem „cmdSpeichern“.

In dem „AfterUpdate“-Ereignis lasse ich das Endlosformular
aktualisieren (Me.Requery). Danach markiere ich den gerade
bearbeiteten DS:

lngidP = me!idP
Me.Requery
Me.Recordset.FindFirst "idP = " & lngidP

also springt Access zur ID, diese ID ist deine Sortierung?

Nein, diese ID ist nicht die Sortierung. Die ID lese ich als eindeutigen Wert aus (AutoWert). Fand ich einfacher als nach zwei Werten „intKatalogNr“ und „txtKatalogNr“ zu suchen (wobei, das schenkt sich wohl nix :smile: )

Nun wird mir dieser Datensatz immer als erste Zeile markiert.

logisch, da du genau dort hin springst.

Es wäre aber sinnvoll, wenn dieser Datensatz erst in der
zweiten oder dritten Zeile markiert wäre.

wieso markiert?

Ich meine den DS-Markierer. Ich möchte direkt sehen, welcher DS vor dem geänderten oder neu eingetragenen DS ist. Ich muss ja schließlich die Briefmarke im Album der Reihe nach einsortieren können. Und ich möchte nicht erst jedes Mal scrollen.

Dies würde einem Scrollen nach unten entsprechen.

das kannst du mit SENDKEYS simulieren.

Wie würde das dann gehen?

Es ist wichtig, dass ich sehe, welche DS davor UND dahinter sortiert sind (Briefmarken in einem Album).

aber doch nicht nach ID sortiert?

Nein, siehe oben

Gibt es hier eine Möglichkeit dies zu Steuern?

ich würde z.B. zum passenden Sortierkriterium springen und
/oder einen entsprechenden Filter setzen.

Ich möchte nicht filtern oder sortieren, da ich manchmal auch den DS zwei vorher oder zwei später sehen muss.

Schöne Grüße aus Württemberg,

Oliver.

Hallo Oliver,

du merkst dir hier die ID, das ist bei einer Sortierung nach Katalognr nicht sinnvoll.

lngidP = me!idP
Me.Requery
Me.Recordset.FindFirst "idP = " & lngidP

merke dir die Katalognummer und springe einfach 1-2 Datensätze davor hin. Beispiel:

(ich gehe davon aus, dass intKatalogNr eine Zahl ist!!)

lngidP = me!intKatalogNr - 2
Me.Requery
Me.Recordset.FindFirst "[intKatalogNr] = " & lngidP

ggf. Mit NOMATCH prüfen, ob es die Katalognummer auch gibt, dann ggf. eine weiter vor springen.

Dies würde einem Scrollen nach unten entsprechen.

das kannst du mit SENDKEYS simulieren.

Wie würde das dann gehen?

SENDKEYS simuliert Tasten!

  • wähle ein Ereignis
  • öffne den VBA Editor
  • tippe SENDKEYS
  • bewege den Cursor auf das Wort SENDKEYS
  • drücke die Taste F1

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo,

so ohne Weiteres ist die Darstellung des akt. DS in der „Mitte“ eines Endlosforms nicht möglich…

vielleicht bringt Dich dieses weiter:
http://lebans.com/formatbycriteria.htm

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Wolfang,

danke für deine Hilfe. Jetzt habe ich mein Problem gelöst!

du merkst dir hier die ID, das ist bei einer Sortierung nach
Katalognr nicht sinnvoll.

Mein Problem war, dass die intKatalogNr mehrfach vorkommen kann. Der Unterschied liegt dann in dem dazugehörigen Suffix strKatalogNr.

merke dir die Katalognummer und springe einfach 1-2 Datensätze
davor hin. Beispiel:

(ich gehe davon aus, dass intKatalogNr eine Zahl ist!!)

lngidP = me!intKatalogNr - 2
Me.Requery
Me.Recordset.FindFirst "[intKatalogNr] = " & lngidP

ggf. Mit NOMATCH prüfen, ob es die Katalognummer auch gibt,
dann ggf. eine weiter vor springen.

Das habe ich jetzt so gelöst, dass ich einen RS aufrufe, der nach der intKatalogNr und strKatalogNr sortiert und als Bedingung eine kleinere intKatalogNr hat. In dem RS gehe ich auf den letzten DS und dann einen zurück.
Anschließend lasse ich diesen DS wählen und dann den bearbeiteten. Somit habe ich meinen gewünschten Erfolg.

Dein Vorschlag mit „intKatalogNr - 2“ ist mir zu langwierig (ist übrigens ein Integer). Es kann sein, dass ich intKatalogNr=2400 bearbeitet habe und der vorherige wäre intKatalogNr=10. Dann laufe ich eine ziemlich lange Schleife durch.

SENDKEYS simuliert Tasten!

  • wähle ein Ereignis
  • öffne den VBA Editor
  • tippe SENDKEYS
  • bewege den Cursor auf das Wort SENDKEYS
  • drücke die Taste F1

Entschuldige meine doofe Frage. Das habe ich in Excel-VBA auch schon verwendet. Und hast ja recht „F1“ hilft weiter… :smile:

Schöne Grüße aus Württemberg,

Oliver.

Hallo Fran,

danke für deine Hilfe.

so ohne Weiteres ist die Darstellung des akt. DS in der
„Mitte“ eines Endlosforms nicht möglich…

Das es nicht einfach geht, war klar. Habe aber eine für mich gute Lösung gefunden - siehe Antwort auf netwolfs Artikel.

http://lebans.com/formatbycriteria.htm

Auf jeden Fall eine interessante Seite - dann werde ich mal ein wenige stöbern.

Schöne Grüße aus Württemberg,

Oliver.