
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 entschuldigen Sie, wenn meine Frage einfach zu grundlegend ist.
Ich sollte erwähnen, dass die „Test“-Abfrage genau ein Ergebnis zurückgibt. Sie wird im Wesentlichen ähnlich wie ein VLookup verwendet.
Derzeit sieht mein Code folgendermaßen aus:
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 damit, den Befehl SetProperty überhaupt zum Laufen zu bringen. Er sagt mir ständig, dass ein Datentypkonflikt vorliegt, unabhängig davon, ob ich versuche, ihm eine Variable wie Bucket oder einen Wert wie 10 zuzuweisen. Die Fehlermeldung lautet wie folgt:
Laufzeitfehler „2948“: Ein von Ihnen eingegebener Ausdruck hat für eines der Argumente den falschen Datentyp.
Für jede Hilfe wäre ich dankbar.
Antwort1
DoCmd.SetProperty testfield, acPropertyValue, bucket
Mit dem obigen Code versuchen Sie, dieproperty
für die Steuerung, nicht ändern dievalue
Eine Eigenschaft wäre beispielsweise Hintergrundfarbe, Höhe, Breite usw.
Wenn Sie den Wert festlegen möchten, müssen Sie einfach die me
Funktion verwenden, um auf das Steuerelement in einem Formular zu verweisen.
me.testfield = bucket
Dadurch wird Access angewiesen, das Formularsteuerelement mit dem Namen testfield
mit dem in der Variablen enthaltenen Wert zu füllen bucket
.
Hinweis: Möglicherweise müssen Sie danach einen Befehl hinzufügen, me.refresh
damit das Formular die Felder aktualisiert.