Tenho um (sub)formulário de planilha de dados que recebe o recordsource de um procedimento armazenado, então ele não é atualizável. Quero duplicar os valores de uma coluna - somente no formulário do Access - para unbound checkbox (uma nova coluna) - para que o usuário possa clicar nele e as coisas aconteçam.
Tentei definir o valor de diferentes maneiras, mas sempre obtenho apenas o valor da primeira linha, inserido em todas as linhas.
O que recebo do procedimento armazenado:
EU IA | Confirmado |
---|---|
1 | Verdadeiro |
2 | Falso |
3 | Falso |
O que eu quero:
EU IA | Confirmado | ConfirmedCopy (não vinculado) |
---|---|---|
1 | Verdadeiro | Verdadeiro |
2 | Falso | Falso |
3 | Falso | Falso |
O que eu obtenho se eu definir o Default Value do ConfirmedCopy para =[Confirmed], ou se eu fizer o mesmo com o VBA. Então ele pega o valor da linha superior e o insere em todas as linhas no campo ConfirmedCopy:
EU IA | Confirmado | ConfirmedCopy (não vinculado) |
---|---|---|
1 | Verdadeiro | Verdadeiro |
2 | Falso | Verdadeiro |
3 | Falso | Verdadeiro |
Este é o comportamento típico de um controle unbound em um formulário contínuo. Como ele não está vinculado a nenhum campo na fonte do registro, ele mostra o mesmo valor em todos os registros do formulário contínuo.
Solução: preencha uma tabela local com os dados do seu procedimento armazenado. Nesta tabela, você também adiciona seu campo adicional. Agora você pode executar uma consulta para preencher o campo ConfirmedCopy com os dados de Confirmed. No seu formulário, você define a fonte do registro para sua tabela local e agora pode fazer com ConfirmedCopy o que quiser.
Depois que tudo estiver pronto, você pode limpar a mesa local para prepará-la para o próximo uso.
Esteja ciente de que isso explodirá seu banco de dados dependendo da quantidade de dados que você carregar na tabela local. Talvez seja um bom conselho compactar o banco de dados automaticamente ao fechar.