Boa noite. ** Uso Access 2003
Após usar os comandos: CurrentDb.Execute "INSERT INTO ..." (ver comandos completos abaixo) gostaria de atualizar no novo registro outros campos que não tem vínculo correspondente entre si entre as 2 tabelas envolvidas.
Resumo:
Formulário principal: F10_Consumo (Tabela: T10_Consumo)
subformulário: F102_ConsumoXPagto (Tabela: T102_ConsumoXPagto)
* Entre as tabelas acima existe um Relacionamento um-para-vários, respectivamente.
A rotina segue abaixo:
Private Sub TipoContabil_AfterUpdate() 'Este campo fica no formulário principal
On Error Resume Next
If TipoContabil = 5 Or TipoContabil = 6 Then '5:Cartão de Crédito / 6:Cartão Refeição
Me!ModoPagto = 1 '1: Pagto. Único
Me.ValorSomatorio = ValorAPagar
Me!ValorPago = ValorAPagar
CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto (IDConsumo, DataPagto, ValorPagto, Usuario, DataUsuario) " & _
"SELECT CodConsumo, DataConsumo, ValorAPagar, Usuario, DataUsuario FROM T10_Consumo " & _
"WHERE CodConsumo=" & Me!CodConsumo & ";", dbFailOnError
Me!Forms!F102_ConsumoXPagto!Taxa = IDOperadora.Column(2) 'TESTE. Funcionou ?? Não
Me!Forms!F102_ConsumoXPagto!Prazo = IDOperadora.Column(3) 'TESTE. Funcionou ?? Não
Me!Forms!F102_ConsumoXPagto!ValorTaxa = ValorPagto * Taxa / 100 'TESTE. Funcionou ?? Não
Me!Forms!F102_ConsumoXPagto!DataAReceber = DataPagto + Prazo 'TESTE. Funcionou ?? Não
Me.Requery 'Atualiza SubFormulário após incluir Novo Registro
MsgBox "** ATENÇÃO: Lançamento feito com sucesso !", , "Sistema: Aviso de Operação"
DoCmd.GoToRecord , , acLast 'Posiciona no ÚLTIMO Registro
DoCmd.GoToControl "F102_ConsumoXPagto"
End If
End Sub
Vejam acima:
Minha intenção é ao inserir um novo registro (funcionando perfeitamente após ajuda de Alexandre Neves) atualizar os campos que são da Tabela ‘T102_ConsumoXPagto’ que é a tabela que recebe os dados do novo registro a partir de alguns campos da tabela T10_Consumo, conforme rotina mencionada acima.
Campos a serem atualizados no novo registro, conforme os comandos acima no subformulário: ‘F102_ConsumoXPagto’ (Tabela: T102_ConsumoXPagto)
Taxa = captura o valor da coluna 2 do campo ‘IDOperadora’ (Tabela ‘T102_ConsumoXPagto’)
Prazo = captura o valor da coluna 3 do campo ‘IDOperadora’ (Tabela ‘T102_ConsumoXPagto’)
ValorTaxa = captura o valor do campo ‘ValorPagto’ multiplica pelo valor do campo ‘Taxa’ e divide por 100
DataAReceber = captura a data do campo ‘DataPagto’ acrescentando o valor em dias do campo ‘Prazo’
PS: Campo (Em Caixa de Combinação) ‘IDOperadora’ => Origem da Linha: SELECT T12_Operadoras.CodOperadora, T12_Operadoras.NomeOperadora, T12_Operadoras.TaxaOperadora, T12_Operadoras.PrazoOperadora FROM T12_Operadoras;
Para tentar fazer inseri os comandos que estão em vermelho, mas aparece a mensagem: “Erro em tempo de execução ‘424’. O objeto é obrigatório.” Ao Depurar aponta para a linha:
Me!Forms!F102_ConsumoXPagto!Taxa = IDOperadora.Column(2)
.... O Sistema não pode localizar o campo ‘Forms’ referido...
Após usar os comandos: CurrentDb.Execute "INSERT INTO ..." (ver comandos completos abaixo) gostaria de atualizar no novo registro outros campos que não tem vínculo correspondente entre si entre as 2 tabelas envolvidas.
Resumo:
Formulário principal: F10_Consumo (Tabela: T10_Consumo)
subformulário: F102_ConsumoXPagto (Tabela: T102_ConsumoXPagto)
* Entre as tabelas acima existe um Relacionamento um-para-vários, respectivamente.
A rotina segue abaixo:
Private Sub TipoContabil_AfterUpdate() 'Este campo fica no formulário principal
On Error Resume Next
If TipoContabil = 5 Or TipoContabil = 6 Then '5:Cartão de Crédito / 6:Cartão Refeição
Me!ModoPagto = 1 '1: Pagto. Único
Me.ValorSomatorio = ValorAPagar
Me!ValorPago = ValorAPagar
CurrentDb.Execute "INSERT INTO T102_ConsumoXPagto (IDConsumo, DataPagto, ValorPagto, Usuario, DataUsuario) " & _
"SELECT CodConsumo, DataConsumo, ValorAPagar, Usuario, DataUsuario FROM T10_Consumo " & _
"WHERE CodConsumo=" & Me!CodConsumo & ";", dbFailOnError
Me!Forms!F102_ConsumoXPagto!Taxa = IDOperadora.Column(2) 'TESTE. Funcionou ?? Não
Me!Forms!F102_ConsumoXPagto!Prazo = IDOperadora.Column(3) 'TESTE. Funcionou ?? Não
Me!Forms!F102_ConsumoXPagto!ValorTaxa = ValorPagto * Taxa / 100 'TESTE. Funcionou ?? Não
Me!Forms!F102_ConsumoXPagto!DataAReceber = DataPagto + Prazo 'TESTE. Funcionou ?? Não
Me.Requery 'Atualiza SubFormulário após incluir Novo Registro
MsgBox "** ATENÇÃO: Lançamento feito com sucesso !", , "Sistema: Aviso de Operação"
DoCmd.GoToRecord , , acLast 'Posiciona no ÚLTIMO Registro
DoCmd.GoToControl "F102_ConsumoXPagto"
End If
End Sub
Vejam acima:
Minha intenção é ao inserir um novo registro (funcionando perfeitamente após ajuda de Alexandre Neves) atualizar os campos que são da Tabela ‘T102_ConsumoXPagto’ que é a tabela que recebe os dados do novo registro a partir de alguns campos da tabela T10_Consumo, conforme rotina mencionada acima.
Campos a serem atualizados no novo registro, conforme os comandos acima no subformulário: ‘F102_ConsumoXPagto’ (Tabela: T102_ConsumoXPagto)
Taxa = captura o valor da coluna 2 do campo ‘IDOperadora’ (Tabela ‘T102_ConsumoXPagto’)
Prazo = captura o valor da coluna 3 do campo ‘IDOperadora’ (Tabela ‘T102_ConsumoXPagto’)
ValorTaxa = captura o valor do campo ‘ValorPagto’ multiplica pelo valor do campo ‘Taxa’ e divide por 100
DataAReceber = captura a data do campo ‘DataPagto’ acrescentando o valor em dias do campo ‘Prazo’
PS: Campo (Em Caixa de Combinação) ‘IDOperadora’ => Origem da Linha: SELECT T12_Operadoras.CodOperadora, T12_Operadoras.NomeOperadora, T12_Operadoras.TaxaOperadora, T12_Operadoras.PrazoOperadora FROM T12_Operadoras;
Para tentar fazer inseri os comandos que estão em vermelho, mas aparece a mensagem: “Erro em tempo de execução ‘424’. O objeto é obrigatório.” Ao Depurar aponta para a linha:
Me!Forms!F102_ConsumoXPagto!Taxa = IDOperadora.Column(2)
.... O Sistema não pode localizar o campo ‘Forms’ referido...