Access 2013: Tentando escrever macro para atualizar campos de formulário a partir de um resultado de consulta

Access 2013: Tentando escrever macro para atualizar campos de formulário a partir de um resultado de consulta

Estou tentando criar uma macro para atualizar o valor de um campo em um formulário com base nos resultados de uma consulta.

Sou totalmente novo no trabalho com vba no Access, então peço desculpas se estou fazendo uma pergunta básica.

Devo mencionar que a consulta “teste” retorna exatamente um resultado. É essencialmente usado de forma semelhante a um VLookup.

Atualmente meu código é assim:

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

Não estou tendo sorte em fazer o comando SetProperty funcionar. Ele está sempre me dizendo que tenho uma incompatibilidade de tipo de dados, independentemente de eu tentar fornecer uma variável como bucket ou um valor como 10. A mensagem de erro é a seguinte:

Erro em tempo de execução '2948': uma expressão inserida é do tipo de dados errado para um dos argumentos.

Toda e qualquer ajuda seria apreciada.

Responder1

DoCmd.SetProperty testfield, acPropertyValue, bucket

Usando o código acima, você está tentando definir opropertypara o controle, não altere ovalue. Uma propriedade seria cor de fundo, altura, largura, etc.

Se quiser definir o valor, basta usar a mefunção para se referir ao controle em um formulário.

me.testfield = bucket

Isso informa ao acesso para preencher o controle de formulário nomeado testfieldcom o valor mantido pela variável bucket.

Nota: Pode ser necessário adicionar um me.refreshcomando após esse comando para que o formulário atualize os campos.

informação relacionada