Neuigkeiten:

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

Mobiles Hauptmenü

.Reqery für Kombinationsfeld zeigt Fehler: Objekt unterstützt diese Eigenschaft

Begonnen von KonradR, Mai 20, 2024, 09:33:06

⏪ vorheriges - nächstes ⏩

KonradR

Hallo liebe Accessfreund,

ich habe ein Formular mit Unterformularen. In einem Unterformular davon habe ich ein Kombinationsfeld eingefügt. Jetzt möchte ich in der verknüpften Tabelle, durch das Eintragen in das Kombinationsfeld, einen Datensatz ergänzen und anschließend das Kombinationsfeld aktualisieren, damit der neu eingetragene Wert in den folgenden Kombinationsfeldern im Endlosformular angezeigt wird. Das erstellen des Datensatzes funktioniert auch. Allerdings funktioniert die Aktualsierung nicht. Hier erscheint die im Betreff genannte Fehlermeldung. Die Methode Requery ist doch für Kombinatiosfelder vorhanden. Daher verstehe ich diese Fehlermeldung nicht. Übrigens: Ich habe ein Popup-Formular erstellt, das erscheint, wenn ein bestehender Wert im Kombinationsfeld geändert wird.
Hier mein Code, vielleicht habt ihr eine Idee:
Private Sub cboProdukt_NotInList(NewDataProdukt As String, Response As Integer)
    Dim dbRezep As DAO.Database
   
    p_cboProduktTextspeicherNeu = Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].Text
    Set dbRezep = CurrentDb
   
    If Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.NewRecord = True Then
        dbRezep.Execute "INSERT INTO tblZutatStamm(ZutatStammName) VALUES ('" & NewDataProdukt & "')", _
        dbFailOnError
        Response = acDataErrAdded
        MsgBox "neue Zutat angelegt"
    Else
            Response = acDataErrContinue
            DoCmd.OpenForm "frmAbfrageProduktSpeichern"
    End If

End Sub

Private Sub cmdAuswahlBestaetigen_Click()
    Dim dbProdukt As DAO.Database
    Dim cboProduktText As String
    Dim cboProduktWert As Long
    Dim strSQL As String
    Dim strSQLExFilterProdukt As String

    Set dbProdukt = CurrentDb
   
'Optionsauswahlfeldgruppe: 1=ändern 2=tauschen
    If ogrProduktAendernTauschen.Value = 1 Then
        cboProduktText = Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].Text
        cboProduktWert = Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].Value
        strSQL = "UPDATE tblZutatStamm SET ZutatStammName = '" & p_cboProduktTextspeicherNeu & "'"
        strSQL = strSQL & " WHERE ZutatStammID = " & cboProduktWert
        dbProdukt.Execute strSQL, dbFailOnError
        Response = acDataErrAdded
        MsgBox "bestehendes Produkt geändert"
        DoCmd.Close acForm, Me.Name
    ElseIf ogrProduktAendernTauschen.Value = 2 Then

        dbProdukt.Execute "INSERT INTO tblZutatStamm(ZutatStammName) VALUES ('" & p_cboProduktTextspeicherNeu & "')", _
        dbFailOnError
        Response = acDataErrAdded
        MsgBox "neues Produkt gegen Altes getauscht"
        Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].Dirty = False
        Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].Requery
        DoCmd.Close acForm, Me.Name
    Else
        MsgBox "Bitte eine Option wählen"
    End If

End Sub


Beaker s.a.

Vermutlich hier
Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].Dirty = FalseEin Kombi besitzt nicht die Eigenschaft .Dirty nur das Form
Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.Dirty = False
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)

KonradR

Danke für deine Antwort.
Zitat von: Beaker s.a. am Mai 20, 2024, 12:01:57Ein Kombi besitzt nicht die Eigenschaft .Dirty nur das Form
Zitat von: Beaker s.a. am Mai 20, 2024, 12:01:57Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.Dirty = False
Das habe ich so geändert. Jetzt erscheint die Meldung:
Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht.

sfrmBWTEinkaufsliste_Unter ist ja das Unterformularsteuerelement. Ich habe noch mal auf der Webseite https://learn.microsoft.com/ nachgeschaut und da gibt es die Eigenschaft für das Unterformularsteuerelement nicht. Vielleicht hängt es damit zusammen?

Dann habe ich es mit folgendem Code probiert:
Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form!.Dirty = False
Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form!.Requery
Dann erscheint die Fehlermeldung:
Laufzeitfehler 3270: "Eigenschaft nicht gefunden."

MzKlMu

Hallo,
die Ausrufezeichen nach Form sind hier falsch. Ausrufezeichen vor einem Punkt kann es nie geben.

Das sind Fehler, die man eigentlich selbst erkennen müsste bzw. gar nicht erst machen sollte.
Gruß Klaus

KonradR

Zitat von: MzKlMu am Mai 20, 2024, 14:56:11die Ausrufezeichen nach Form sind hier falsch. Ausrufezeichen vor einem Punkt kann es nie geben.
Danke für den Hinweis. Ich habe es jetzt angepasst:
         Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.Dirty = False
         Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.Requery
Der Fehler 3270: "Eigenschaft nicht gefunden". Erscheint weiterhin. Habt ihr da eine Idee?

Beaker s.a.

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)

KonradR

Zitat von: Beaker s.a. am Mai 21, 2024, 15:57:27Und? Zeigt der Compiler die fehlerhafte Zeile nicht an?
Ja, die fehlerhafte Zeile zeigt er an.

Allerdings habe ich jetzt die Herausforderung gelöst, obwohl ich nicht so ganz verstehe warum. Ich habe ein ähnliches Feld in einem anderen Unterformular auf diesem Hauptformular und habe von dort den Code noch mal verglichen (Hätte ich gleich machen sollen.). Dort hatte ich die für das Kombinationsfeld frisch sortierte Datensatzquelle zugewiesen, um in den anderen Kombinationsfeldern den Filter aufzulösen, damit dort auch was angezeigt wird. Hier mein Code zum Auflösen des Filters:
    strSQLExFilterProdukt = "SELECT ZutatStammID, ZutatStammName FROM qryZutatStammSortiert"
    strSQLExFilterProdukt = strSQLExFilterProdukt & " ORDER BY ZutatStammName"
    Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form![cboProdukt].RowSource = strSQLExFilterProdukt
Nun kann ich auch den Datensatz verlassen und der Datensatz kann geändert und gespeichert werden.

Die Codezeilen mit:
         Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.Dirty = False
         Forms![frm00BWT_Haupt]![sfrmBWTEinkaufsliste_Unter].Form.Requery
habe ich auskommentiert und es funktioniert wie bereits geschrieben.