Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formularfelder leeren

Begonnen von Database91, November 12, 2019, 08:24:38

⏪ vorheriges - nächstes ⏩

Database91

Moin zusammen,

ich habe mal wieder ein kleines Problem mit meinem Formular.
Ich habe ein Formular mit Komboboxen und Textfeldern, deren Inhalte ich per Knopfdruck in einer Tabelle abspeichere.
Anschließend möchte ich einen neuen Datensatz aufrufen und dementsprechend alle Textfelder und Komboboxen quasi zurücksetzen.
Das Speichern der Daten funktioniert wunderbar, allerdings bekomme ich beim Zurücksetzen einen Laufzeitfehler 2448 "Sie können diesem Objekt keinen Wert zuweisen"
Der Fehler tritt bei "ctl = Null" auf.
Ich habe es auch schon mit ctl="" versucht, bekomme allerdings den gleichen Fehler.

Danke im Voraus

    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("tbl_Einweisungen")
    rs.AddNew
    rs!Personalnummer = Me!txt_Personalnummer
    rs!Vorname = Me!txt_Vorname
    rs!Nachname = Me!txt_Nachname
    rs!Einweisender = Me!txt_Einweisender
    rs!PGAUnterweisung = Me!txt_Einweisungsdatum
    rs!EMailAdresse = Me!txt_EMailAdresse
    rs!PGAStatus = Me!txt_KategorieDerEinweisung
    rs!Firma = Me!txt_Firma
    rs!Abteilung = Me!txt_Abteilung
    rs.Update
    rs.Close
    Set rs = Nothing
   
    Forms!fml_EinweisungPGA.Requery
    DoCmd.GoToRecord acDataForm, "fml_EinweisungPGA", acNewRec
    Dim ctl As Control
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
            ctl = Null
        End If
    Next ctl

DF6GL

Hallo,

bestimme zunächst das Feld, das diese Meldung verursacht. (Debug.Print ctl.Name) und untersuche dann, ob dieses Feld irgendwelche Eingabebeschränkungen besitzt oder sogar ein Autowert-Feld ist. Dieses Feld muss dann von einer Zuweisung ausgeschlossen werden.

Allerdings ist mir mich klar (kenne das Konzept nicht) , warum Du kein gebundenes Formular benutzt, dann wäre das ganze Theater überflüssig.
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

Database91

Hallo Franz,

wo muss ich das Debug.Print ctl.Name denn einbringen bzw. wo sehe ich die Ausgabe des Befehls?

Grüße

Patrick

DF6GL

Hallo,

na so:

.
.
Debug.Print ctl.Name
ctl = Null
.


Die Ausgabe siehst Du im Direktfenster. 

Ich rate Dir, sich etwas intensiver mit dem VBA-Editor zu beschäftigen   ;)
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

Database91

*facepalm*
Okay, ich hatte es genau anders herum...
Mir ist auch bewusst geworden, dass ich gerade mal 4 von 10 Feldern zurück setzen muss.
Da ist es wahrscheinlich eleganter, wenn ich einfach über
Me![Name des Feldes] = Null
gehe, oder ?

Wie könnte ich denn in der Schleife eine Ausnahme realisieren?

DF6GL

Hallo,

.
if ctl.Name = "MeinControlNameDerNichtBearbeitetWerdenSoll" Then <tu nix>
.



Nochmal die Frage: Warum kein gebundenes Form, bzw. warum dieses Theater?
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

Database91

Danke für die Informationen

Das Theater hat den Grund, dass ich Daten über Kombofelder auswählen möchte. Diese Felder werden teils aus anderen Abfragen befüllt und enthalten dementsprechend mehrere Informationen.
Ich möchte in meiner endgültigen Tabelle aber die korrekten Informationen haben und keine Schlüssel, die auf die Abfragen verweisen.
Daher nutze ich Textfelder um die Informationen aus den verschiedenen Spalten der Kombofelder herauszulesen und das Recordset um die Informationen aus den Textfeldern im Endeffekt in meiner Tabelle abzulegen.

Ich weiß, dass ein mehrfaches Ablegen von den gleichen Daten in mehreren Tabellen Schwachsinn ist, aber das ist eben die Anforderung, dass es im Endeffekt eine Tabelle geben muss, welche die gewollten Informationen in reiner Form enthält.

MzKlMu

Hallo,
das Vorhaben ist in dieser Form überflüssig. Du kannst ein Formular verwenden das an eine Abfrage gebunden ist die alle Tabellen enthält mit den Klartextfeldern die Du anzeigen willst. Da muss nix ausgelesen werden.
Diese Abfrage wird dann Grundlage für eine Anfügeabfrage die auf einen Rutsch die Daten anfügt.
Da braucht es auch kein Recordset.

Die Anforderung ist aber trotzdem Schwachsinn (Deine Worte  ;D ) weil eine einfache Abfrage die Daten wie gewünscht darstellt.
Der Anwender sieht gar nicht (und muss es auch gar nicht wissen), dass das keine Tabelle ist.
So wie Du das jetzt machst, ist das auch fehlerträchtig, weil Du nie 100% sicher bist, dass die Daten der extra Tabelle aktuell sind. Die Abfrage ist es aber automatisch.
Überdenke das Ganze, es ist überflüssig.
Gruß Klaus

Beaker s.a.

Hallo
@Klaus
Zitatdas Vorhaben ist in dieser Form überflüssig.
Warum so zurückhaltend? Das ist nicht nur überflüssig, das ist falsch
(Schwachsinn ist eine andere Kategorie).

@Database91
Wozu sind Schlüsselfelder denn da?
Zitatweil eine einfache Abfrage die Daten wie gewünscht darstellt.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ebs17

    Forms!fml_EinweisungPGA.Requery
    DoCmd.GoToRecord acDataForm, "fml_EinweisungPGA", acNewRec

Ein ungebundenes Formular hat keine Datensätze, denn jene müssten dem Formular per Bindung zugeführt werden.
Somit sind die zitierten Anweisungen sinnfrei oder müssten gar Fehler werfen.
Mit freundlichem Glück Auf!

Eberhard