
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 oproperty
para o controle, não altere ovalue
. Uma propriedade seria cor de fundo, altura, largura, etc.
Se quiser definir o valor, basta usar a me
funçã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 testfield
com o valor mantido pela variável bucket
.
Nota: Pode ser necessário adicionar um me.refresh
comando após esse comando para que o formulário atualize os campos.