Neuigkeiten:

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

Mobiles Hauptmenü

Textfeld im Formular aus Abfrage-Unterformular

Begonnen von Problemkind, Dezember 02, 2025, 09:56:13

⏪ vorheriges - nächstes ⏩

Problemkind

Hallo und Moin,

ich brauche noch etwas Hilfe:

Ich habe eine Tabelle " Kontrollbuch_2026" mit verschiedenen Feldern, so auch "WA_Nummer".
Dieses Feld mit Autowert liefert mir die Auftragsnummer, fortlaufen von 1 bis 99999.
Für ein Auftragsbestätigung benötige ich diese Zahl aber 5-stellig (00001, 00099, 10258 ....).
Die Umwandlung der 1 in eine 00001 erstelle ich über eine Abfrage :
1. Feld: WA_Nummer
2. Feld: Ausdr1: Format([WA_Nummer];"00000")

das funktioniert auch.
Diese Abfrage habe ich als UF in das Formular eingebunden.

Jetzt brauche ich das Feld mit dem Ausdr1 "00000" in ein Textfeld. Dieses Textfeld lese ich dann über eine Copy-Funktion aus und kopiere es dann in eine Antwortmail (Beispiel: " Wir haben ihren Auftrag unter 00125 entgegen genommen und weitergeleitet")

Ich benötige also eine Funktion, die den Ausdr1 aus dem UF in ein Textfeld ausliest, welches ich dann über Copy in den Zwischenspeicher einlesen kann.

Kann mir jemand es verständlich  ;) erklären?

Schon im Vorwege einmal Danke für eure Unterstützung, Ihr habt mir bisher bei jedem Problem extrem gut geholfen.

Gruß
Frank


Bitsqueezer

Hallo,

es ist ein Irrtum zu glauben, eine AutoID sei eine gute Wahl für eine fortlaufende Nummer. Wenn Du einen neuen Datensatz einzugeben beginnst, wird eine neue Nummer erstellt und wenn Du mit ESC abbrichst und dann wieder einen neuen beginnst, ist die Nummer eins höher. Die vorige Nummer ist "weg". Das ist nicht revisionssicher, denn Du kannst nicht erklären, was mit den fehlenden Auftragsnummern passiert ist.

Du solltest daher eine Tabelle nur zum Generieren von Auftragsnummern verwenden, die erst bei "Form_BeforeUpdate" in dieser Tabelle erzeugt und geschrieben wird und dann in die eigentliche Tabelle übernommen wird. Und natürlich erst, wenn alle Validierungen mit dem aktuellen Datensatz ebenfalls in Form_BeforeUpdate abgeschlossen sind.

"Kontrollbuch_2026" läßt mal wieder auf Aufzählungstabellen schließen, was grundlegend falsches Design ist. Aufzählungen wie Jahreszahlen oder in Feldnamen gehören nicht in ein Datenmodell. Einfach ein Feld mit einem Jahr hinzufügen (oder wenn es bereits ein Datumsfeld gibt, genügt das auch) und Du brauchst nur noch "Kontrollbuch".

Die Formatierung hast Du ja schon gefunden, als Alias solltest Du etwas Sinnvolleres als "Ausdr1" verwenden. Namen sollten konkret definieren, was in dem Objekt steht.

Ein Textfeld kannst Du an ein Feld binden, also wenn es eine Abfrage gibt, die Dir die formatierte Version der Auftragsnummer liefert, kannst Du die Textbox einfach an das Feld binden, hier also "Ausdr1".

Das kann auch als Ausdruck formuliert werden, also etwa mit "=" zu Beginn und dann dem UFO-Zugriff Form!UFOContainerName.Form.DeinAuftragsnummerfeld

Oder Forms!NameDesHauptformulares!UFOContainerName.Form.DeinAuftragsnummerfeld

Oder Du verwendest VBA dafür und benötigst dann keine zusätzliche Textbox, indem Du direkt auf den Feldinhalt zugreifst.
Dim varAuftrNr As Variant
varAuftrNr = Me.UFOContainerName.Form.DeinAuftragsnummerfeld

Es gibt viele Wege...

Gruß

Christian

Knobbi38

Hallo Frank,

sowohl das UFO als auch die Abfrage für die Auftragsnummer solltest du entfernen, weil das hier überhaupt nicht gebraucht wird. Wie eine Auftragsnummer behandelt wird, wurde ja schon beschrieben und in dem Zusammenhang kannst du während des Speichern auch die gewünschte Formatierung vornehmen.

Knobbi38
 

Problemkind

Hallo an alle,

vielen Dank für eure Hinweise und Tipps.
Die Datenbank mag nicht perfekt sein, erfüllt aber seinen Zweck. Sicherlich kann man vieles verbessern, und ich bin für jeden Vorschlag, Hinweis und Tipp dankbar.
Ich habe die Vorschläge von Bitsqueezer umgesetzt und nach einigen Versuchen klappt es hervorragend. Sicherlich nicht so wie es ein Profi machen würde, aber es funktioniert.

Nochmals Danke