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

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

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, diepropertyfür die Steuerung, nicht ändern dievalueEine Eigenschaft wäre beispielsweise 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 Access angewiesen, das Formularsteuerelement mit dem Namen testfieldmit dem in der Variablen enthaltenen Wert zu füllen bucket.

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

verwandte Informationen