Neuer Datensatz im Endlosformular erzeugen

Liebe Wissende,

ich habe mir ein schönes Formular zur Datensatzeingabe gebaut, das auch sehr schön funktioniert. Lediglich eine Eigenschaft macht mich rasend: Sobald ich aus dem letzten Fenster der Eingabe springe (und damit in den neuen), werden nun nicht zwei Datensätze angezeigt (nämlich der alte und der neue, noch leere), sondern nur der neue Datensatz. Ich kann den alten Datensatz nicht über die Bildlaufleisten hervorholen, nur über das Rädchen an der Maus.

Wenn ich aber das Formular etwas an den Rändern während der Eingabe verändere oder das Formular so verkleinere, dass während der Eingabe sich das Formular verschiebt, wird automatisch in exakt diesem Moment ein leerer Datensatz nach unten angefügt - was eigentlich der Normalfall sein sollte und ich auch gerne so hätte.

Wer kann mir helfen? Lieben Dank!

Mit freundlichen Grüßen,

fshbb

N’abend,

ich habe mir ein schönes Formular zur Datensatzeingabe gebaut,
das auch sehr schön funktioniert.

ok, dann hast du ja keine Probleme :smile:

Lediglich eine Eigenschaft macht mich rasend:

typische Reaktion auf falsch umgesetzte Usability

Sobald ich aus dem letzten Fenster

ähm, du meinst vielleicht Feld?

lass mich raten:
du hast eine Endlos-Formular, in dem du direkt in die Felder des Datensatzes die Eingabe vornimmst?!

Lösung:

  • blende den Formularfuß ein
  • erzeuge dort die Eingabefelder
  • sperre alle Eingabefelder im Datail-Bereich des Endlosformulars für die Eingabe
  • zusätzlich kannst du nun noch Tasten für die Navigation im Fußbereich anbringen.

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Netwolf,

herzlichen Dank, Du hattest mir schon einmal wunderbar geholfen!

Nochmals kurz zur Erläuterung: ich hätte gerne eine Übersicht, die im Lauf der Eingabe erscheint; ich hätte also gerne bei Eingabe des 10. Datensatz alle 10 gerne übereinander angeordnet. Im Moment sehe ich immer nur den jüngsten Datensatz! Die gleichzeitige Ansicht von mehreren Datensätzen ist doch im Formularfuß nicht möglich? Ist es nicht eher normal, dass diese Funktionalität eigentlich immer im Endlosformular zur Verfügung steht?

Danke, danke, danke,

fshbb

Hallo,

Nochmals kurz zur Erläuterung: ich hätte gerne eine Übersicht,
die im Lauf der Eingabe erscheint; ich hätte also gerne bei
Eingabe des 10. Datensatz alle 10 gerne übereinander
angeordnet.

ja, habe ich verstanden

Im Moment sehe ich immer nur den jüngsten Datensatz!

ja habe ich verstanden

Die gleichzeitige Ansicht von mehreren Datensätzen
ist doch im Formularfuß nicht möglich?

hast du nicht richtig verstanden: im Fuß erfolgt NUR die Eingabe, die Anzeige erfolgt nach wie vor im Deteilbereich des Endlosformulars.

Ist es nicht eher normal, dass diese Funktionalität eigentlich immer im Endlosformular zur Verfügung steht?

Ein Endlosformular ist alles: Kopfbereich, Detailbereich, Fußbereich
Wir Programmierer definieren daher die Bereiche sehr genau!
Optik passiert nicht im Formular, sondern in den Bereichen.

Grüße aus Rostock
Wolfgang
(Netwolf)

Ich bin schlauer, aber…
Hallo Netwolf,

das Problem ist nicht gelöst, ich habe aber herausgefunden, was der Haken ist.

Zur Erläuterung: Ich habe ein Endlosformular, das zur Eingabeerleichterung Daten aus dem vorhergehenden Datensatz einlesen und automatisch einschreiben soll. Ich habe also ein Makro, dass beim Verlassen des Feldes X den enthaltenen Wert in ein ungebundenes (und unsichtbares) Feld im Formularkopf schreibt. Und beim Hingehen in dasselbe Feld, einen Datensatz später, habe ich ein Makro, dass iesen Wert wieder herunterholt.

Das klappt inzwischen auch wie gewünscht - aber nur bei Textfeldern. Er legt mir jedesmal einen neuen Datensatz an, der sich unterhalb des ersten DS sichtbar einfügt.
Möchte ich dieses Spiel bei Combo-Boxen spielen, zeigt er mir jedoch einen zweiten Datensatz an. Warum?

Danke nochmals,

ein verzweifelter fshbb

Hallo fshbb,

kannst du mal den Code hier posten?

Das klappt inzwischen auch wie gewünscht - aber nur bei
Textfeldern.

?? wird jetzt EIN Feld übergeben oder mehrere?

Er legt mir jedesmal einen neuen Datensatz an,
der sich unterhalb des ersten DS sichtbar einfügt.

wann? was machst du manuell vorher, ganz genau?

Möchte ich dieses Spiel bei Combo-Boxen spielen, zeigt er mir
jedoch einen zweiten Datensatz an. Warum?

Comboboxen sind keine Endlosformulare, da kann es ganz anders (einfacher) machen :smile:
Ereignis: bei nicht in Liste

Grüße aus Rostock
Wolfgang
(Netwolf)

HAllo Netwolf,

toll, toll, toll, dass Du ansprechbar bist…

  1. Ich kopiere insgesamt sechs Felder und habe dazu jeweils zwei Makros geschrieben: Das erste, um den Wert in den Formularkopf in ein Feld zu kopieren, das zweite, um es herunterzunehmen.

  2. Ist eines der obigen Felder, klappt alles, wie ich es will.

  3. bei zwei der Felder - Combo-Boxen - zeigt er mir im aktuellen Datensatz nicht an, dass er einen Wert eingeschrieben hat. Erst, wenn ich in den nächsten Datensatz anspringe, füllen sich die Felder im (nun vorherigen) Datensatz mit dem richtigen Wert.

  4. Bei einem Feld, Combo-Box, spinnt er bei diesem Spiel plötzlich und „verschluckt“ den Datensatz - ich kann ihn jedoch mit dem DSMarkierer wieder herholen.

  5. Code… Ich bin leider kein Profi und habe daher nur mit dem „Access-BAukasten“ programmiert + Makros. Die Funktionalität ist auf einzelne Makros, ohne VBA-Programmierung aufgebaut…

hast Du ev. eine Idee?

Dank und Grüße,

fshbb

es wird spät… leicht korrigiert…
HAllo Netwolf,

toll, toll, toll, dass Du ansprechbar bist…

  1. Ich kopiere insgesamt sechs Felder und habe dazu jeweils zwei Makros geschrieben: Das erste, um den Wert in den Formularkopf in ein Feld zu kopieren, das zweite, um es herunterzunehmen.

  2. Ist eines der obigen Felder ein Textfeld, klappt alles, wie ich es will.

  3. bei zwei der Felder - Combo-Boxen - zeigt er mir im aktuellen Datensatz nicht an, dass er einen Wert eingeschrieben hat. Erst, wenn ich in den nächsten Datensatz anspringe, füllen sich die Felder im (nun vorherigen) Datensatz mit dem richtigen Wert.

  4. Bei einem Feld, Combo-Box, spinnt er bei diesem Spiel plötzlich und „verschluckt“ den alten Datensatz, wenn ich in den neuen springe - ich kann ihn jedoch mit dem DSMarkierer wieder herholen.

  5. Code… Ich bin leider kein Profi und habe daher nur mit dem „Access-Baukasten“ programmiert + Makros. Die Funktionalität ist auf einzelne Makros, ohne VBA-Programmierung aufgebaut…

hast Du ev. eine Idee?

Dank und Grüße,

fshbb

Hallo fshbb,

  1. Ich kopiere insgesamt sechs Felder und habe dazu jeweils
    zwei Makros geschrieben: Das erste, um den Wert in den
    Formularkopf in ein Feld zu kopieren, das zweite, um es
    herunterzunehmen.

Makros sind der falsche Weg!

  1. Ist eines der obigen Felder ein Textfeld, klappt alles, wie
    ich es will.

gut

  1. bei zwei der Felder - Combo-Boxen - zeigt er mir im
    aktuellen Datensatz nicht an, dass er einen Wert
    eingeschrieben hat.

da fehlt ein Requery nach der Auswahl

Erst, wenn ich in den nächsten Datensatz
anspringe, füllen sich die Felder im (nun vorherigen)
Datensatz mit dem richtigen Wert.

dann kommt die viel zu späte Aktualisierung (Requery) von Access

  1. Bei einem Feld, Combo-Box, spinnt er bei diesem Spiel
    plötzlich und „verschluckt“ den alten Datensatz, wenn ich in
    den neuen springe - ich kann ihn jedoch mit dem DSMarkierer
    wieder herholen.

nö, das ist nicht der richtige Weg

  1. Code… Ich bin leider kein Profi und habe daher nur mit
    dem „Access-Baukasten“ programmiert + Makros. Die
    Funktionalität ist auf einzelne Makros, ohne
    VBA-Programmierung aufgebaut…
    hast Du ev. eine Idee?

wenn du solche Dinge vorhast, empfehle ich dir VBA zu lernen

Wie ich immer sage: Access ohne VBA ist wie Autofahren ohne Räder :smile:

  • Rechtsklick auf das Combo-Feld
  • Eigenschaften
  • Reiter Ereignisse
  • Ereignis: bei Fokusverlußt
  • Doppelklick auf das Wort Fokusverlußt
  • in der Zeile sollte jetzt [Ereignisprozedur] stehen
  • am Ende der Zeile klickst du auf die drei Punkte […]
  • jetzt bist du im VBA - Editor
  • eine Funktionsüberschrift und ein Funktionsende werden automatisch eingefügt
  • dazwischen trägst du ein:
    Me.FeldbezeichnungCombobox.Requery

Die Feldbezeichnung musst du noch deinen Bedingungen anpassen

  • speichern
  • VBA-Editor schließen

nun teste mal das Verlassen dieser Combobox.

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo,

wenn ich richtig verstehe, was überhaupt erreicht werden soll, dürfte sich dieses

www.donkarl.com/?FAQ4.22

als der bessere Weg herausstellen.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!