Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Kombination von Textfeldern in einem Formular mit Tabelleneintrag

Begonnen von T-Bor, Januar 21, 2020, 14:33:56

⏪ vorheriges - nächstes ⏩

T-Bor

Hallo allerseits

ich habe mir mit Access 2016 einen Probenzähler erstellt.
In diesem gibt es eine Tabelle, in der folgende Felder sind:
1. Datum
2. Uhrzeit
3. Prüfcode
4. Batch

In dem dazugehörigen Formular werden Datum und Uhrzeit automatisch erstellt (keine Änderung möglich).
Die Batch soll per Barcode eingelesen werden.
Das Feld Prüfcode soll aus zwei weiteren, im Formular enthaltenen aber ungebundenen Textfeldern (Produktnummer und Prüftext), zusammengesetzt werden. Der Prüfcode wird an anderer Stelle als Primärschlüssel verwendet, da nur dieser einmalig pro Produkt vorkommt). Also möchte ich den Prüfcode im Formular während der Eingabe zusammensetzen und in die Tabelle speichern.

Ungefähr so:
Probe enthält Produktnummer, Prüftext und Batch als Barcode
Produktnummer in Textfeld 1 einlesen
Prüftext in Textfeld 2 einlesen
Prüfcode wird aus Textfeld1 und Textfeld2 zusammengesetzt
Batch einlesen
Beim drücken der [Tab]-Taste zum neuen Datensatz (Tab lässt sich beim Einlesen des Barcodes ausführen, dann ist keine weitere Aktion notwendig, nur dreimal *piep* machen, Probe aufgenommen;-) daher ist das Deaktivieren der Tab-Funkion des Barcode-Lesers nicht gewünscht)
Nächste Probe

Nun kann ich entweder eine direkte Eingabe in das Feld Prüfcode in die Tabelle schreiben (Formulareigenschaften -> Steuerelementinhalt: Tabellenname oder mir die Kombination aus Textfeld 1 und Textfeld 2 mit Hilfe von Formulareigenschaften -> Steuerelementinhalt:"=[Text1]&[Text2]" anzeigen lassen (funktioniert gut).
Geht auch beides gleichzeitig? Wenn ja wie?
Habe schon versucht die Kombination bei "Standardwert" einzutragen, das funktioniert aber nicht richtig (erst beim nächsten Datensatz steht dann die Kombination)

Falls das nur über VBA, SQL, Makro geht, frage ich bestimmt nochmal nach, das ist nicht mein Fachgebiet :o)

Vielen Dank schon mal!
T-Bor

DF6GL

Hallo,


wenn ich das richtig verstanden habe, dann etwa so als Ereignisprozedur "Vor Aktualisierung" des Formulars:

ZitatSub Form_BeforeUpdate(Cancel as Integer)
Me!Prüfcode = Me!Text1 & Me!Text2
End Sub


Was ist denn "Batch einlesen" bei Dir?

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

T-Bor

Hallo

das funktioniert wunderbar!
Dankeschön

Und damit ich nicht einfach nur dumm gefragt habe, versuche ich jetzt zu verstehen was diese Prozedur tut =D
Me! bezieht den Ausdruck dahinter auf das gerade in genutzte Objekt (hier mein Formular)?
Welche Bedeutung hat der Ausdruck in der Klammer Cancel as Integer beim Sub-Namen? Die Grundsätzliche Struktur einer Prozedur kenne ich, allerdings nicht, dass in der Klammer beim Namen etwas drin steht)

"Batch einlesen" heißt hier Barcode, der die Zeichenfolge für die Batchnr. (Charge) enthält, von der Probe in das entsprechende Feld im Formular einlesen (funktioniert wie eine Tastatureingabe, nur schneller;) ).

Schöne Grüße
T-Bor

DF6GL

Hallo,

Me:  richtig.

Ausdruck in der Klammer:  Das nennt man Argument.  Das sind sozusagen "Durchreichefenster" an die Prozedur, um dieser irgendwelche Werte zu übergeben. Dies können einfache Zahlen bis zu ganzen Objekten sein.  Wird die Funktion/Sub aufgerufen, nennt man die zu übergebenden Werte Parameter.  Die "Hineingabe" an die Prozedur funktioniert auch umgekehrt, soll heißen, wird der Parameter in der Prozedur verändert, wird die Änderung beim Beenden der Prozudur auch an den "Aufrufer" zurückgeben ( außer das Argument ist mit byVal klassifiziert.)

Die Before_Update-Ereignisprozedur hat per Definition ein Abbruch-Argument (Cancel). Wenn dieses  im Verlauf des Codeablaufs auf True (Cancel =True) gesetzt wird, dann wird das Ereignis (Event) das die Prozedur angestoßen hat, abgebrochen.  In diesem Fall würde das Speichern der Formulardaten abgebrochen.

Weil zu diesem Zeitpunkt des Ereignisses die Formulardaten noch nicht abgespeichert sind, ist eine Zuweisung eines Wertes an ein Steuerelement (noch) möglich.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

T-Bor

Das klingt soweit logisch.
Keine weiteren Fragen.

Danke und schönen Gruß
T-Bor