PDA

Vollständige Version anzeigen : Feldwert aus vorigem Datensatz übernehmen


Helga
20.01.2003, 14:09
Hallo!
Ich muss eine neue Datenbank aus alten DBASE-Daten basteln und möchte auch unter Access gerne bei der Dateneingabe (also in dem Eingabeformular) in einigen Feldern wieder die Werte des vorherigen Datensatzes angezeigt bekommen (mit DBASE ging das nach der Erstellung eines Programms). Diese Felder müssen dann im neuen Datensatz bearbeitbar sein, also keine statische Übernahme von Daten.
Gibts dafür eine intelligente Lösung oder überhaupt eine?
Mit Dank für die Mühe und besten Grüßen
Helga

racoon0506
20.01.2003, 15:27
Moin.

Die Lösung könnte z.B. bei www.donkarl.com (http://www.donkarl.com) FAQ 4.22 Standardwert aus vorherigem Datensatz sein.

bei Textfeldern
Me!DeinFeldName.DefaultValue = "'" & Me!DeinFeldName & "'"

bei Datumsfeldern
Me!DeinFeldName.DefaultValue = CDbl(Me!DeinFeldName)

bei anderen Felddatentypen (Zahl, Ja/Nein etc.)
Me!DeinFeldName.DefaultValue = Me!DeinFeldName

Gast
21.01.2003, 00:24
Das interessiert mich auch. Ich habe gerade das Beispiel für Text in einem Formular ausprobiert und festgestellt dass es nur mit Zahlen funktioniert. Gebe ich in das Feld Text ein wird dieser auch in die Tabelle übernommen, sobald ich auf einen Datensatz gehe erscheint in dem Feld #Name?
Der Felddatentyp des Feldes in der zugrunde liegenden Tabelle ist "Text".
Was mache ich da falsch?

Gruss, Eckhard

Pragmat
21.01.2003, 00:55
Wenn Du einen Datensatz neu eingibst, kannst Du die vorherigen Werte hiermit ansehen:

[TextXX] = DLast("[Feldname]", "Herkunftstabelle")

Wenn Du in einen beliebigen Datensatz springst (und willst den vorherigen Wert sehen) und hast in Deiner Tabelle ein Autowert-Feld, ließe sich die Angelegenheit über die Dlookup-Funktion -1 regeln.

Gruß
Pragmat

Pragmat
21.01.2003, 01:16
Hier nochmal die (ungeprüfte) Befehlszeile für Dlookup:


[einzutragendes Feld] = DLookup("[Herkunftsfeld]", "Herkunftstabelle", "[Autowert im Formular]-1=[Autowert in Herkunftstabelle]")

gsehee
11.04.2018, 15:09
Hallo Racoon

Vieleicht kannst Du mir auch helfen ;)
Ich muss in einem Textfeld eine fortlaufende Referenznummer eingeben.
Bei jedem Datensatz um +1. Mit Deinem Vorschlag übernimmt es zwar die Nummer, aber es fehlen die Nullen.
z.B Ref. Nr 0000000000000562345, übernimmt es nur 562345.
Weisst Du wie man die Nullen hinbekommt und was noch angefügt werden muss, dass bei jedem neuen Datensatz die Nummer um 1 erhöht wird?

Gruss Dani

el_gomero
11.04.2018, 15:16
Hallo,

du bist aber mal ein Optimist ... erwartest einen Antwort in einem 15 Jahre alten Beitrag vom damaligen Helfer.

Zur Lösung - was gespeichert und was angezeigt wird, können durchaus unterschiedliche Dinge sein. Zur Anzeige verwendest du


format([DeinFeld];"0000000000000000000"

maikek
11.04.2018, 15:21
Moin,
die Nullen kannst du "hinzuformatieren", um 1 erhöhen geht nur mit Zahlen.
Dazu musst du in der Tabelle die höchste Zahl heraussuchen, 1 dazuaddieren und dem Ganzen dann ein Format verpassen:
Me.DeinTextfeld = Format(DMax("DeinZahlenFeldInDerTabelle", "DeineTabelle") +1, "0000000000000000000")
maike

gsehee
12.04.2018, 16:50
Hallo Maikek

Vielen Dank für den Code.

Ich habe ihn eingetragen, aber im nächsten Datensatz kommt nichts-
Bleibt leer.
Ist es möglich, dass die Nummer vom vorangehenden Datensatz in den neuen Datensatz genommen wird +1.
Dann könnte man die erste Nummer so vergeben wie man möchte und es beginnt erst ab da mit dem Aufzählen?

gsehee
12.04.2018, 17:03
Hi el gomero

Da muss man optimistisch bleiben ;) :Finde es super das ihr euch gemeldet habt.
Danke!

Ich bin nicht so versiert mit Access.
Wir die Formatierung im Formularentwurf auf dem Eigenschaftenblatt gemacht?

maikek
12.04.2018, 17:14
Ich habe ihn eingetragen, aber im nächsten Datensatz kommt nichts-
Bleibt leer.
Wo hast du ihn eingetragen?
Bei welchem Ereignis?
Hast du auch die Feldnamen an deine angepasst?
maike

gsehee
12.04.2018, 17:47
Ereignis nach Aktualisierung Private Sub Buchungsnummer_AfterUpdate()
Me.Buchungsnummer = Format(DMax("Buchungsnummer", "Parkplatzkontrolle") + 1, "0000000000000000000")
End Sub

Nouba
12.04.2018, 17:57
Wenn die 19-stellige Buchungsnummer (das scheint ja ein reger Parplatz zu sein) vom Datentyp Text ist, muss der neue Standardwert entweder zwischen zwei " oder zwischen zwei ' stehen, was auch deutlich im Link im zweiten Beitrag hervorgehoben wird.

Maxel
12.04.2018, 19:05
Man sollte auch unterscheiden im Anliegen:

Me.Buchungsnummer
vs.
Me.Buchungsnummer.DefaultValue

gsehee
12.04.2018, 19:42
Ich habe jetzt für die Übernahme in den nächsten Datensatz den Code angehängt.
Private Sub Buchungsnummer_AfterUpdate()
Me.Buchungsnummer.DefaultValue = Format(DMax("Buchungsnummer", "Parkplatzkontrolle") + 1, "0000000000000000000")
End Sub
Es kommt immer noch der Laufzeitfehler 13, Typen unverträglich.

Nouba
12.04.2018, 20:08
Kein Wunder - Du hast ja auch nur den Hinweis von Maxel befolgt.

gsehee
13.04.2018, 05:25
Ich verstehe deinen Hinweis nicht.
Gehe davon aus, dass du mit standard Wert die 00000000 meinst?
und da ist vorne sowie hinten ein “ dran.

Nouba
13.04.2018, 06:25
Dann zeige Dir das Ergebnis doch einmal in einer MsgBox an und folge danach dem Link in Beitrag #2.

gsehee
13.04.2018, 07:55
Das habe ich gemacht. Der Feldtyp war falsch.
Jetzt habe ich den Standardwert eingegeben.
Es zeigt den Wert im Formular an , kommt aber ein neuer Fehler wenn ich zum neuen Datensatz wechsle.
Laufzeitfehler 3115
Felder mit Memo-oder OEL Objekten dürfen nicht im Aggregatargument (Buchungsnummer) entgalten sein.

gsehee
13.04.2018, 08:11
Der fehler kommt nur weil der Standardwert im neune Datensatz nicht um 1 erhöht wird und ich es manuell machen muss.

Ich muss den Wert auch mal manuell ändern können und danach sollte von diesem Wert im neuen Datensatz +1 ausgegeben werden.

Es geht bei der Sache um eine Ref. Nummer die normal in aufsteigender Reihenfolge eingetragen werden muss. Eigentlich wie eine ID.
Nur kann es vorkommen, dass ein paar Belege verschwinden und es dann mit z.B eine um 12 höheren Nummer als der letzten weitergeht.
Meistens geht es der Reihe nach, aber öfters fehlen einzelne Nummern.

Nouba
13.04.2018, 08:12
Von welchem Felddatentyp ist denn die Buchungsnummer in der Tabelle? Und was verwendest Du als Datenquelle im Formular?

gsehee
13.04.2018, 08:49
Feldtyp Langer Text
Datenquelle ist die Tabelle Parkplatzkontrolle

Nouba
13.04.2018, 08:51
Dann nimm mal kurzen Text und stelle die Feldlänge auf 19 ein - dann passt auch kein weiterer Quatsch hinein.

gsehee
13.04.2018, 09:04
habe ich gemacht.
Fehlermeldung ist weg.
Beim neuen Datensatz kommt aber immer noch 0000000000

Wenn ich manuell um eins erhöhe (0000000001), kommt beim nächsten Datensatz wieder 0000000000. Wenn ich diesen dann mit 2 erhöhe (0000000002) übernimmt es beim dritten Datensatz
die 2 aber wieder ohne die Nullen.