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
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.
Hallo Franz,
wo muss ich das Debug.Print ctl.Name denn einbringen bzw. wo sehe ich die Ausgabe des Befehls?
Grüße
Patrick
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 ;)
*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?
Hallo,
.
if ctl.Name = "MeinControlNameDerNichtBearbeitetWerdenSoll" Then <tu nix>
.
Nochmal die Frage: Warum kein gebundenes Form, bzw. warum dieses Theater?
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.
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.
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
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.