Access 2013: Versuch, ein Makro zu schreiben, um Formularfelder aus einem Abfrageergebnis zu aktualisieren

2227
J.Scott

Ich versuche, ein Makro zu erstellen, um den Wert eines Felds in einem Formular basierend auf den Ergebnissen einer Abfrage zu aktualisieren.

Ich bin völlig neu in der Arbeit mit vba in Access, also entschuldige ich mich, wenn ich eine grundlegende Frage stelle.

Ich sollte erwähnen, die Abfrage "test" gibt genau ein Ergebnis zurück. Es wird im Wesentlichen ähnlich wie bei einem VLookup verwendet.

Mein Code lautet daher:

Private Sub UpdateBasic_Click() Dim bucket As String DoCmd.OpenQuery "test", acViewNormal, acReadOnly 'this line is meant to record the result of the query into a variable. It is not working but I haven’t found the right command to get it to pick up the data yet. bucket = A1 DoCmd.Close acQuery, "test", acSaveNo DoCmd.OpenForm "BasicData", acNormal,, , acFormEdit, acWindowNormal, "Global_ID = 'sdkfa'" 'this line is meant to update the value of the field on the form. DoCmd.SetProperty testfield, acPropertyValue, bucket End Sub 

Ich habe kein Glück, den Befehl SetProperty überhaupt zum Laufen zu bringen. Es sagt mir ständig, dass ich einen Datentypkonflikt habe, unabhängig davon, ob ich versuche, ihm eine Variable wie bucket oder einen Wert wie 10 zu geben. Die Fehlermeldung lautet wie folgt:

Laufzeitfehler '2948': Ein von Ihnen eingegebener Ausdruck ist der falsche Datentyp für eines der Argumente.

Jede Hilfe wäre dankbar.

0

1 Antwort auf die Frage

0
CharlieRB
DoCmd.SetProperty testfield, acPropertyValue, bucket 

Mit dem obigen Code versuchen Sie, die Einstellung propertyfür das Steuerelement festzulegen, nicht die value. Eine Eigenschaft wäre Hintergrundfarbe, Höhe, Breite usw.

Wenn Sie den Wert festlegen möchten, müssen Sie einfach die meFunktion verwenden, um auf das Steuerelement in einem Formular zu verweisen.

me.testfield = bucket 

Dadurch wird dem Zugriff mitgeteilt, das Formularsteuerelement testfieldmit dem von der Variablen gehaltenen Wert aufzufüllen bucket.

Hinweis: Möglicherweise müssen Sie me.refreshnach diesem Befehl einen Befehl hinzufügen, damit das Formular die Felder aktualisiert.