ATUALIZAR BANCO ACCESS 2013

ADILSOO 19/05/2016 19:58:51
#462296
Boa noite de novo, hehe..
Estou em um projeto do excel que uso VBA, porém optei por usar o access e não mysql por motivos de mobilidade, onde vai a planilha vai os dados. Porém, notei uma coisa estranha, após gravar, alterar ou excluir um registro, parece que eu tenho que fechar a conexão e abrir novamente para que atualize.

Exemplo:
Eu insiro um registro e dou o comando rs.movelast, isso faria com que fosse para o ultimo registro, e o ultimo é o que eu acabei de inserir, quando eu fecho e abro novamente o form, ele move para o ultimo, tentei dar um rs.update, mas não funciona. Qual a melhor forma será?
Obrigado desde já.
Abraços.
JABA 19/05/2016 20:18:11
#462299
Certamente após fecha-lo, sua conexão com o banco deve ter ficado ativa e o seu form ficou na memória. Tente fechar o form e sua conexão usando um Dispose. Creio que assim sua conexão será encerrada, e o form será fechado realmente.
ADILSOO 19/05/2016 20:20:23
#462300
Então, mas é que não quero fecha-lo, eu quero que ao inserir o ultimo valor, ele já ir para o que foi inserido naquela hora, e não precisar fechar e abrir o form para que seja mostrado.
JABA 19/05/2016 21:15:21
#462301
Eu não sei como você está fazendo para preencher o grid, por isso fica dificil saber o que se passa. Tente atualizar o recordset após a inserção pra ver se vai. Tipo assim:


[ô]após salvar
rs.Refresh
rs.movelast


Se não for, vê se tem como dar um refresh diretamente no grid.
ADILSOO 21/05/2016 00:40:18
#462332
Então, eu tentei esse mas não funciona
JABA 21/05/2016 01:00:04
#462333
O jeito vai ser você postar o projeto como tá.
ADILSOO 21/05/2016 10:28:13
#462337
Bom dia!
Bom, vamos lá, eu tenho um form, onde cadastro as fazendas, quando insiro uma nova, ele precisaria ir para o ultimo registro. Esse ultimo registro seria o que eu acabei de inserir, correto? Então, mas ele está entendendo que o ultimo é o ultimo que estava gravado anteriormente antes de inserir esse novo, pois quando eu dou um rs.movelast, ele não move para o que eu acabei de inserir. Foi aí que pensei que precisaria ter alguma coisa como refresh ou update para atualizar, mas não estou tendo sucesso nisso. Tentei procurar em algum lugar pra ver se encontrava alguma coisa, mas nada.

A rotina que estou usando para inserir os dados é:
  Conexao.Execute ([Ô]INSERT INTO tabcadfaz (nomefaz, mtcub, plantas, captanque, qtdebicos, esplinha, esppl) VALUES ([ô][Ô] & txtnomefaz.Text & [Ô][ô], [ô][Ô] & txtmtcub.Text & [Ô][ô], [ô][Ô] & txtplantas.Text & [Ô][ô], [ô][Ô] & txtcaptanque.Text & [Ô][ô], [ô][Ô] & txtbicos.Text & [Ô][ô], [ô][Ô] & txtesplinha.Text & [Ô][ô], [ô][Ô] & txtesppl.Text & [Ô][ô])[Ô])

rs.MoveLast
txtcodfaz.Text = rs!codfaz
txtnomefaz.Text = rs!nomefaz
txtmtcub.Text = rs!mtcub
txtplantas.Text = rs!plantas
txtcaptanque.Text = rs!captanque
txtbicos.Text = rs!qtdebicos
txtesplinha.Text = rs!esplinha
txtesppl.Text = rs!esppl

MsgBox [Ô]Fazenda cadastrada com sucesso![Ô], vbInformation + vbOKOnly, [Ô]Sistema diz[Ô]


JABA 21/05/2016 13:13:37
#462347
Você está inserindo diretamente pelo objeto de conexão, por isso que o recordset não é atualizado. Tente substituir o codigo acima por este, creio que assim funcionará.

    rs.AddNew
rs(1) = txtnomefaz.Text
rs(2) = txtmtcub.Text
rs(3) = txtplantas.Text
rs(4) = txtcaptanque.Text
rs(5) = txtcaptanque.Text
rs(6) = txtbicos.Text
rs(7) = txtesplinha.Text
rs(8) = txtesppl.Text
rs.Update

rs.MoveLast

txtcodfaz.Text = rs!codfaz
txtnomefaz.Text = rs!nomefaz
txtmtcub.Text = rs!mtcub
txtplantas.Text = rs!plantas
txtcaptanque.Text = rs!captanque
txtbicos.Text = rs!qtdebicos
txtesplinha.Text = rs!esplinha
txtesppl.Text = rs!esppl

ADILSOO 21/05/2016 13:21:31
#462348
Nesse caso aparece como eu tinha dito, ele não aceita..
JABA 21/05/2016 13:57:42
#462349
Já que está usando o ACCESS, eu aconselharia você a abrir e fechar a conexão toda vez que for fazer alguma operação com o banco, assim você aumentaria as chances do seu banco não corromper. E além do mais, fazendo assim, creio que esse seu problema também seria resolvido.



[txt-color=#e80000]Conexao.Open[/txt-color] [txt-color=#007100][ô]Eu sei que você já estava abrindo o banco em outro lugar, só coloquei aqui para exemplificar[/txt-color]

Conexao.Execute ([Ô]INSERT INTO tabcadfaz (nomefaz, mtcub, plantas, captanque, qtdebicos, esplinha, esppl) VALUES ([ô][Ô] & txtnomefaz.Text & [Ô][ô], [ô][Ô] & txtmtcub.Text & [Ô][ô], [ô][Ô] & txtplantas.Text & [Ô][ô], [ô][Ô] & txtcaptanque.Text & [Ô][ô], [ô][Ô] & txtbicos.Text & [Ô][ô], [ô][Ô] & txtesplinha.Text & [Ô][ô], [ô][Ô] & txtesppl.Text & [Ô][ô])[Ô])

[txt-color=#e80000]Conexao.Close[/txt-color]





[txt-color=#e80000]Conexao.Open[/txt-color]

rs.MoveLast
txtcodfaz.Text = rs!codfaz
txtnomefaz.Text = rs!nomefaz
txtmtcub.Text = rs!mtcub
txtplantas.Text = rs!plantas
txtcaptanque.Text = rs!captanque
txtbicos.Text = rs!qtdebicos
txtesplinha.Text = rs!esplinha
txtesppl.Text = rs!esppl

[txt-color=#e80000]Conexao.Close[/txt-color]

MsgBox [Ô]Fazenda cadastrada com sucesso![Ô], vbInformation + vbOKOnly, [Ô]Sistema diz[Ô]




ADILSOO 21/05/2016 14:13:05
#462351
Então, eu até tinha tentado dessa maneira, mas , ele diz que a operação não é permitida quando o objeto está fechado, mas eu fui no debug e ele passa pelo open e abre, estranho. O erro se da na linha

  rs.MoveLast 


  Conecta True

Conexao.Execute ([Ô]INSERT INTO tabcadfaz (nomefaz, mtcub, plantas, captanque, qtdebicos, esplinha, esppl) VALUES ([ô][Ô] & txtnomefaz.Text & [Ô][ô], [ô][Ô] & txtmtcub.Text & [Ô][ô], [ô][Ô] & txtplantas.Text & [Ô][ô], [ô][Ô] & txtcaptanque.Text & [Ô][ô], [ô][Ô] & txtbicos.Text & [Ô][ô], [ô][Ô] & txtesplinha.Text & [Ô][ô], [ô][Ô] & txtesppl.Text & [Ô][ô])[Ô])

Conecta False

Conecta True

rs.MoveLast
txtcodfaz.Text = rs!codfaz
txtnomefaz.Text = rs!nomefaz
txtmtcub.Text = rs!mtcub
txtplantas.Text = rs!plantas
txtcaptanque.Text = rs!captanque
txtbicos.Text = rs!qtdebicos
txtesplinha.Text = rs!esplinha
txtesppl.Text = rs!esppl

Conecta False

MsgBox [Ô]Fazenda cadastrada com sucesso![Ô], vbInformation + vbOKOnly, [Ô]Sistema diz[Ô]
Página 1 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas