Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: simon1961 am Mai 07, 2025, 13:08:06

Titel: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 07, 2025, 13:08:06
Hallo,

gibt es im Formular die Möglichkeit, dass ich den Wert eines Feldes (z. B. Anzahl der Tage: TXT37 = [Abreise]-[Anreise]) in einem anderen Feld als Vorschlagswert (Anzahl der Tage) sehe, den ich dann mit der ENTER-Taste bestätigen oder eben überschreiben kann?
Das klingt ganz einfach, aber ich weiß nicht wie ich das hinkriege?
Danke für eure Bemühungen!

Liebe Grüße
Simon
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Knobbi38 am Mai 07, 2025, 14:11:03
Hallo Simon,

das geht sicherlich, aber wie immer gibt es mehrere Möglichkeiten, z.B. wenn das Feld den Fokus erhält, diesen Wert vorzubelegen usw. Wenn du aber einen Abreise- und Anreisetag hast, ist die Anzahl eher konstant und sollte nur angezeigt und nicht überschreibbar sein. So etwas würde mit einem Ausdruck gehen.

Gruß Knobbi38
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Bitsqueezer am Mai 07, 2025, 16:10:43
Hallo,

dafür hat jedes Control die Eigenschaft "DefaultValue", die Du z.B. im GotFocus-Event in VBA setzen kannst. Damit ist das Feld automatisch vorbelegt, wenn es vorher NULL war. Im Gegensatz zu "Value" wird aber der Wert des zugrundeliegenden Datenfeldes nicht verändert, was wichtig ist. Somit wird nie etwas versehentlich überschrieben oder beim reinen Anzeigen eine Datensatzänderung begonnen.

Gruß

Christian
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 07, 2025, 16:47:47
Hallo,
vielen Dank für die schnellen Antworten. Wie man sieht bin ich aber kein Profi und habe kaum VBA Kenntnisse, daher bedanke ich mich auch für die 2. Antwort, kann diese aber leider nicht umsetzen.

Die erste  Antwort von knobbi38 kann ich noch nachvollziehen und habe auch schon versucht im besagten Eingabefeld in den Eigenschaften unter Fokuserhalt = [text37] oder auch die Formel = [Abreise]-[Anreise] einzugeben, aber da kommt nichts! Der Wert soll aber nur anzeigt werden, weil ja in der Folge noch eine weitere Berechnung erfolgt. Ist es aber o. K. dann sollte er mit der ENTER-TASTE bestätigt werden. Leider funktioniert aber das mit meinem Fokuserhalt nicht ...

Vielen Dank.
Lg
Simon
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Knobbi38 am Mai 07, 2025, 18:32:11
Zitat... weil ja in der Folge noch eine weitere Berechnung erfolgt
Was für eine Berechnung soll das sein?

Es ist von Vorteil, wenn du hier ein kleines Beispiel hochladen kannst, an dem man nachvollziehen kann, was du vor hast. Dann kann wesentlich besser geholfen werden.

Gruß Knobbi38
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: MzKlMu am Mai 07, 2025, 19:48:33
Hallo,
es stellt sich auch die Frage, wozu das Feld überhaupt benötigt wird. Die Anzahl der Tage wird doch durch das Datum für Anreise und Abreise bestimmt. Ein überschreibbares Feld für die Anzahl der Tage macht doch da keinen Sinn. Das passt ja bei Änderung nicht mehr zu den beiden Datumsfeldern.
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 08, 2025, 07:38:05
Guten Morgen Klaus,

ich weiß, dass es vielleicht nicht nachvollziehbar ist, aber genau wie du es beschrieben hast. So ein Feld bräuchte ich! Derzeit ist es so, dass ich die Anzahl der Tage (TXT37 = [Abreise]-[Anreise]) zwar im Formular anzeigen lasse, dann aber in anderen Feldern wieder händisch eingeben muss. Und genau hier wäre ein Vorschlagswert die ideale Lösung, damit der Bediener die Eingabe nicht vergisst ... ich werd mal versuchen etwas hochzuladen.
Danke für eure Bemühungen!

Liebe Grüße
Simon
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: MzKlMu am Mai 08, 2025, 07:54:41
Hallo,
so wie ich das sehe, ist Dein Vorhaben ersatzlos überflüssig. Die Anzahl der Tage ergibt sich zweifelsfrei aus Abreise-Anreise. Wenn Du die Anzahl der Tage überschreibst, was ja Dein Anliegen ist, so musst Du doch im Falle einer Überschreibung sinnvollerweise auch die Datumsfelder für Anreise und Abreise anpassen.
Alles andere wäre doch falsch.
Demzufolge genügt es, die Anzahl der TAge nur anzuzeigen aber nicht in der Tabelle zu speichern. Wenn Du eine Abfrage zur Errechnung der Tage verwendest, so ist das exakt wie wenn Du den Wert in der TAbelle speicherst.

Erkläre also erst mal warum der Wert (überschreibbar) gespeichert werden soll.
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 08, 2025, 08:08:39
Hallo zusammen,
ich habe inzwischen gesehen, dass für das Eingabefeld in der zugrundeliegenden Tabelle der Standardwert 0 ist.
Kann das das Problem sein, dass im Formular der Wert nicht aus dem oben genannten Feld (TXT37 = [Abreise]-[Anreise]) als Vorschlagswert übernommen werden kann? Irgendwie muss es doch dafür auch im Formular eine Lösung geben. Es gibt nämlich auch den Fall, dass ich diesen Wert tatsächlich auch NULL stellen muss ...
Danke. Ich hätte inzwischen ein Bild vorbereitet, aber ich habe noch keine Möglichkeit gefunden, es hochzuladen. 
Lg Simon
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: MzKlMu am Mai 08, 2025, 09:07:58
Hallo,
warum gehst Du nicht auf meine Hinweise ein ?
Und was heißt auf NULL stellen,die Zahl 0 oder ein leeres Feld?
Im Falle von NULL/0 was steht dann in den Datumsfeldern (Anreise/Abreise) ?

Um den Wert in der Tabelle zu speichern, braucht es etwas VBA.

Wenn Du auf Antworten klickst, findest Du unten einen Button zum Hochladen von Bildern etc.
Aber ich denke, was Du willst ist klar, es wird ja nur der Sinn angezweifelt. Daher kannst Du Dir ein Bild zunächst mal sparen. Die Hintergründe zu erklären wäre sicher der bessere Weg.
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Doming am Mai 08, 2025, 09:13:40
Moin Simon,

Du kannst doch, sobald sowohl Anreise als auch Abreisedatum eingegeben wurden, alle Felder, in denen (aus welchen Gründen auch immer) die Differenz eingegeben werden soll, mit der dann errechneten Differenz füllen.
If Nz(Me.TxAnreise,"") <> "" And Nz(Me.TxAbreise,"") <> "" then
    Me.Differenzfeld1 = Me.TxAbreise - Me.TxAnreise
    Me.Differenzfeld2 = Me.Differenzfeld1
    .
    .
    Me.Differenzfeldn = Me.Differenzfeld1
End if

Gruß
Doming
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 08, 2025, 10:05:11
Hallo zusammen,
jetzt lade ich das Bild doch noch hoch, weil ich dann vielleicht besser verstanden werde.
LG Simon

BeispielAccess08052025.pdf 
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: MzKlMu am Mai 08, 2025, 11:18:14
allo,
das Bild hättest Du Dir sparen können, denn was Du willst ist schon klar. Es gab auch schon Hinweise dazu.
Auf meine Hinweise und Rückfragen bist Du aber immer noch nicht eingegangen, mit keinem Buchstaben.
Ich möchte den Sinn des Vorhabens nach wie vor bezweifeln.

Einfach gefragt:
Warum soll Anzahl der Tage überschrieben werden, diese Anzahl hängt doch von Abreise und Anreise ab.
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 08, 2025, 11:44:36
Hallo,
leider werde ich immer noch nicht verstanden:

Einfach gefragt:
Warum soll Anzahl der Tage überschrieben werden, diese Anzahl hängt doch von Abreise und Anreise ab.

Die Anzahl der Tage ist zu 90 % korrekt, bräuchte dann auch nicht überschrieben werden, sondern nur mit der ENTER-Taste bestätigt werden! Aber für die restlichen 10 % hätte ich gerne die Anzahl dieser Tage verringert oder sogar ganz auf NULL gestellt (wie auch momentan der aktuelle Stand im Formular). Und genau um das geht es! Ob das logisch oder nicht logisch, sinnvoll oder nicht sinnvoll ist, ... dafür habe ich aber meine Gründe.

Danke für die Geduld!
LG
Simon

Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Knobbi38 am Mai 08, 2025, 11:45:56
Hallo Simon,

ganz klar ist das immer noch nicht, du wirst deine Gründe haben, aber hier mal ein wenig Code, der dir evtl. helfen könnte:
Private Sub txtAnreise_AfterUpdate()
  UpdateTage
End Sub

Private Sub txtAbreise_AfterUpdate()
  UpdateTage
End Sub

Private Sub txtTage_DblClick(Cancel As Integer)
  UpdateTage
  txtTage.Undo
  txtTage.Value = txtTage.DefaultValue
End Sub


Private Sub UpdateTage()
  Dim tage As Long
 
  If IsDate(txtAnreise) And IsDate(txtAbreise) Then
    tage = Abs(DateDiff("d", txtAnreise, txtAbreise))
    txtTage.DefaultValue = tage
   
    Debug.Print "Von: "; txtAnreise; " bis: "; txtAbreise; " -> "; tage; " Tage"
  End If
End Sub
Steuerelementenamen usw. mußt du natürlich noch an deine Gegebenheiten anpassen. Mit dem Doppelklick auf "txtTage" kannst du eine Neuberechnung veranlassen, falls der Wert schon mal händisch überschrieben worden ist.

Gruß Knobbi38

Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: MzKlMu am Mai 08, 2025, 12:10:24
Hallo,
Zitat... dafür habe ich aber meine Gründe.
Und wenn man die kennen würde, gäbe es vieleicht ganz einfache Lösungen. Und ob Du jetzt NULL (=Nix) zuwieisen willst, oder die Zahl 0 ist auch immer noch unklar.

Aber ich will mich nicht aufdrängen.
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Beaker s.a. am Mai 08, 2025, 13:56:08
Hallo,

Ich würde Domings Vorschlag folgen. Allerdings mit einer kleinen Änderung.
Wie mehrfach erwähnt ist die Aufenthaltsdauer (Ad) ja durch An- & Abreise
festgelegt. Daher würde ich diese Berechnung im SteuerlementeInhalt dieses
Feldes (oben rechts im Form) durchführen
=Abreise - AnreiseDadurch ist dieses Feld autom. schreibgeschützt.
Und in den Code von Doming nimmt man dann dieses Feld um die anderen (links
im Form) zu beschreiben
Me.Feld = Me.txtAdDer passende Zeitpunkt dafür wäre wohl "Abreise Nach Aktualisierung". Da sollte
man aber auch "Vor Aktualisierung" prüfen ob es eine Anreise gibt.

gruss ekkehard

Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Knobbi38 am Mai 08, 2025, 19:05:23
@ekkehard:
Zitat von: Beaker s.a. am Mai 08, 2025, 13:56:08nimmt man dann dieses Feld um die anderen (links
im Form) zu beschreiben

Genau da sollte man niemals machen, weil VBA und Ausdrücke nicht synchron ausgewertet werden! Wenn man die Anzahl Tage in VBA verwenden möchte, sollte die Berechnung auch in VBA erfolgen, vorzugsweise mit den dafür vorgesehenen Datumsfunktionen und nicht einfach Double oder Date-Werte voneinander abziehen.

Wie man so etwas in VBA umsetzen könnte, habe ich in #14 beschrieben.

Grüße Ulrich

Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: simon1961 am Mai 09, 2025, 07:51:44
Guten Morgen,

heute ist ein neuer Tag und damit eine neue Chance:

... dafür habe ich meine Gründe.
Und wenn man die kennen würde, gäbe es vieleicht ganz einfache Lösungen.
Ich möchte im Formular bei der Dateneingabe so flexibel wie möglich sein.

Und ob Du jetzt NULL (=Nix) zuweisen willst, oder die Zahl 0 ist auch immer noch unklar.
Hier habe ich als Standard in der zugrunde liegenden Tabelle ohnehin schon 0 zugeordnet, damit eventuell eine Null-Berechnung auch ein Null-Ergebnis bringt. 


Danke für eure Geduld.

Liebe Grüße
Simon
Titel: Re: Erfasste Werte als Vorschlagswerte
Beitrag von: Beaker s.a. am Mai 09, 2025, 13:45:05
@Ulrich
Dein Einwand ist sicher gerechtfertigt, - du bist der Erfahrenere.
Ist aber ja kein Problem das anzupassen
- kein! SteuerlelementeInhalt
- vor der Zuweisung an die editierbaren Felder (Code von Domin) die
Berechnung der Ad (dein Code)

@simon
Den Standwert in der Tabelle würde ich entfernen, den kannst du auch
im Formular setzen.

gruss ekkehard