Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar dados em outra tabela de acordo com criterio de código (chave


Gil Kléber

Pergunta

Oi pessoal.

Depois de um carnaval tranquilo, numa quarta de ressaca básica, eis que me vejo na seguinte situação:

tabela LIVRO_CAIXA que armazena o movimento de entrada e saida de dinheiro

tabela tbPagtosCheque que armazena apenas os dados de pagamentos feitos em cheques

formulário LIVRO CAIXA que faz a entrada de dados com os campos básicos (nome, data, valor.. tipo=(dinheiro, cheque, cartão)

quando feito em cheque, abre um pop up pra entrarmos com os dados do cheque. e Salva

As vezes, efetuamos pagamentos com um cheque de paciente (repassamos o cheque pra terceiros)

então, na tbPagtosCheque tem os campos (REPASSADO (SIM/NÃO), DATAREPASSE (data), DESTINO (texto, 255).

Quando o lancamento é detectado como SAÍDA, e a forma de saída= CHEQUE, aparece uma caixa de listagem, baseada na tabela TbpagtosCheque mostrando disponivel os dados de todos os cheques que temos disponiveis (REPASSADOS=NÃO).

Ok, atualizo os campos que eu quero, automaticamente com o códigozinho me.meucampo1=me.comboLista.Collumn(x) no formulário e beleza.

Aí é que está. Cada pagamento em cheque tem seu código idCheque. Cada lançamento no livro caixa tb tem seu código idLivroCaixa, e as tabelas estão devidamente relacionadas.

Eu gostaria que, quando eu escolhesse um cheque na lista, ele automaticamente ATUALIZASSE na tabela TBCHEQUES os campos REPASSADO=SIM, DATAREPASSE=DATA ATUAL, e DESTINO="o nome descrito no campo DETALHES no formX".

tentei utilizar o seguinte código:

Dim db As Database, rs As Recordset

Set db = CurrentDb()

Set rs = db.OpenRecordset("tbPagtosCheque")

rs.Edit

rs("repassado") = True

rs("destinoCheque") = Forms![frmLivroCaixa]![Detalhes]

rs("dataRepasse") = Date

rs.Update

rs.Close

db.Close

mas me bato na questão de: como fazer pra atualizar esses dados no registro, na tabela TBCHEQUES, APENAS no cheque com IDCHEQUE = ao cheque que selecionei na caixa de listagem?

Espero ter sido claro o bastante.. e que alguém possa me ajudar!

abraços a todos!!!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Tenta assim:

Dim db As Database
Dim sqlstr As String

Set db = CurrentDb()
sqlstr = "UPDATE tbPagtosCheque SET repassado = TRUE, datarepasse = #" & Format(Now(), "mm/dd/yyyy") & _
    "#, destino = '" & Forms![frmLivroCaixa]![Detalhes] & "' WHERE idCheque = 1"
db.Execute (sqlstr)

db.Close
Set db = Nothing

Acho que isso resolve seu problema

Link para o comentário
Compartilhar em outros sites

  • 0

Deu o seguinte erro:

Depois de selecionar um cheque na lista da caixa de seleção, apareceu o seguinte erro:

erro em tempo de execução '3061'

poucos parâmetros. 1 esperado

Clicando em depurar, ele deixa a linha db.Execute (sqlstr) em evidencia

Agora, olhando o código, me bateu uma dúvida:

porque o idCheque=1?

não deveria ser algo como idcheque=Forms![frmLivroCaixa]![caixaDElistagem].collumn(1)

?

Não quero dar uma de sabido, logico, mas fiquei com essa dúvida.. e desde já agradeço a ajuda!

abraço!!!

tomei a liberdade de tentar como:

Dim db As Database

Dim sqlstr As String

Set db = CurrentDb()

sqlstr = "UPDATE tbPagtosCheque SET repassado = TRUE, datarepasse = #" & Format(Now(), "mm/dd/yyyy") & _

"#, destino = '" & Forms![frmLivroCaixa]![Detalhes] & "' WHERE idCheque = " & Forms![frmLivroCaixa]![cbListaCheques].Column(0)

db.Execute (sqlstr)

db.Close

Set db = Nothing

*na origem de dados da caixa de listagem, a coluna IDCHEQUE é a primeira

tomei a liberdade de tentar como:

Dim db As Database

Dim sqlstr As String

Set db = CurrentDb()

sqlstr = "UPDATE tbPagtosCheque SET repassado = TRUE, datarepasse = #" & Format(Now(), "mm/dd/yyyy") & _

"#, destino = '" & Forms![frmLivroCaixa]![Detalhes] & "' WHERE idCheque = " & Forms![frmLivroCaixa]![cbListaCheques].Column(0)

db.Execute (sqlstr)

db.Close

Set db = Nothing

*na origem de dados da caixa de listagem, a coluna IDCHEQUE é a primeira

e ele retorna o mesmo erro... :(

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa pelo idCheque = 1, foi só um teste meu aqui daí coloquei 1 e 2, pra ter certeza que ele atualizava só o 1

na clausula where tu coloca o id, que é tipo assim, o item que relaciona os dois. Imagino eu que o id dos dados do cheque sejam ligados pelo mesmo id que o livro caixa, então você relaciona ele ali

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvido pessoal! Com um dia de um amigo de outro Fórum, consegui deixar o código da seguinte forma!

Como eu seleciono o cheque direto da caixa de listagem, olha o que eu fiz!

Dim db As Database, rs As Recordset

Set db = CurrentDb()

Set rs = db.OpenRecordset("SELECT * FROM tbPagtosCheque WHERE idCheque=" & Forms![frmLivroCaixa]![cbListaCheques].Column(0) & "")

rs.Edit

rs("repassado") = True

rs("destinoCheque") = Forms![frmLivroCaixa]![Discriminação]

rs("dataRepasse") = Date

rs.Update

rs.Close

db.Close

Funcionou perfeitamente!

Muito obrigado a todos !!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...