Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

faelwan

[Resolvido] Alterar Registros da Base de Dados

Recommended Posts

Saudações pessoal, estou com um probleminha aqui, com o termo denomidado alterar registro da base da dados

 

Bom tenho um formulário que insere registros em um BD - insere-se os valores nas textboxes e depois

clico no botão "Salvar", esse botão guarda os registros do BD e desabilita os campos.

Nesse formulário eu utilizo um procedimento que retorna os valores do BD para as textboxes (desabilitadas), podendo ser visualizados vários registros por meio de botões ("Proximo Registro"; "Registro Anterior"). Funciona legalzinho, inclusive é um rotina muito simples, tenho aqui também um botão "Alterar", que apenas habilita as textboxes para a edição e posteriormente, clicando do botão "Salvar" ele edita os valores registrados no BD... Essa etapa também funciona!

 

Entretanto, existe um problema: se o usuário clicar no botão "Alterar", e não alterar realmente os valores das textboxes, e clicar no botão salvar, dá erro http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

 

Testar simplesmente se o usuário voltou a digitar nas textboxes não funciona, pois há o risco de o usuário alterar o valor da textbox, mas inserir o mesmo valor (apagar e digitar a mesma coisa)

 

Obs.: Quando eu utilizava BD's em Access o problema não ocorria, agora com MySQL o problema acontece sim. <_<

 

Gente qualquer ajuda é bem vinda http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Agradecido Rafael Lemes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom não se é isso mesmo que você perguntou,

mas estou utilizando ADODC 6.0

obs.: e acesso ao BD se dá pelo Conector ODBC MySQL 5.1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha...o que eu vou dizer pra você é que eu nunca fiz uma conexão VB6 -> MySQL, entretanto já o fiz com PHP. Bem o que posso pedir pra você é primeiro de tudo dar uma lida nessa matéria que é muito boa mesmo

 

http://www.macoratti.net/mysql_vb.htm

 

Segundo, estou presumindo que você está usando um componente gráfico...se for isso é mais complicado ainda dar uma manutenção, entretanto não era para dar erro sendo que você está salvando dados do mesmo jeito quando os modifica.

 

Bem, acho que você deve dar uma olhada em quando o seu componente está entrando em modo de edição, pois é o seguinte, para dar update no banco você obrigatoriamente precisa estar em modo de edição com o seu recordset, ou componente. Bem eu não sei, mas o que deve acontecer é que quando você abre o registro, ele somente está em modo leitura, e quando vai dar o update não tem o que atualizar então retorna o erro.

 

Bem, se o fluxo do sistema fosse controlado via código, todas as regras de negócio estariam em suas mãos. Então poderia fazer algo do tipo.

 

Consulta Banco -> Retorna os Valores nos Campos Travados(até aqui você só teria pesquisado no banco e fechado o banco) -> Clica-se em alterar -> apenas destrava os campos -> Clicando em Cancel Limpa todos os campos (até agora o banco não foi chamado) -> clica em save -> abre a consulta filtrando o registro pelo código pesquisado -> joga os valores nos campos -> atualiza!!!

 

E isso você vai ver como faz na matéria do macoratti. Não sei se entendi bem sua dúvida, mas pode ser um ponto de partida.

 

Obs: O ADO não tem um modo de edição, mas quando você chama o Recordset e atribui um valor para ele, automaticamente entra em modo de edição, enquanto você está lendo ele somente, não pode dar um update pois os campos não foram alterados.

 

Se não entendeu posta ai, se não funcionou posta ae, e se funcionou posta também hahua!!!

 

Paulo Mendes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Paulo Mendes... Nossa acho que quando eu nasci Deus deve ter dito: "Seu anjo da guarda vai se chamar Paulo!"

 

ahuahau Olha amigo, tentei fazer o que você falou a respeito de trabalahar com o banco fechado até que se

execute o procedimento pra salvar, e então realizar uma query para posicionar o registro da tabela, dessa forma editar o registro, e efim dar o Update...

http://forum.imasters.com.br/public/style_emoticons/default/cry.gif num deu! Deu o msm erro

 

:D Entretantoo, quando visitei o link lá do macorrati, eu conheci uma espécie de rotina que outrora já tinha

visto em vários códigos, mas nunca soube utilizar, foi então que lá no macorrati eu aprendi e testei. Trata se

daquela "Estrutura de teste de erros" (se é que eu posso chamar assim) > On Error GoTo...

 

fiz o seguinte: Depois de avaliar e suprir os diversos erros que o procedimento "Salvar" poderia gerar, restou apenas

esse cujo tratamos, então fiz a seguinte estrutura:

 

Private Sub Salvar()
On Error GoTo casodeerro

tblCadastrodeclientes("nome_cliente")=txtNome.Text
tblCadastrodeclientes("endereco_cliente")=txtEndereco.Text
tblCadastrodeclientes.Update

casodeerro: tblCadastrodeclientes.CancelUpdate

End Sub
Note que é certo o que você disse a repeito da recordset entrar em modo de edição quando a chamamos e atribuimos

algum valor pra ela, mas acredito eu, que quando atribuimos valores redundantes, digo, os mesmos valores, o ADO reconhece que não foram realizadas essas atribuíçoes, mesmo assim a recordset entra em modo de edição, mas daí

quando tentamos dar o Update dá o erro dizendo que a linha não pode ser localizada, pois na verdade não editamos nenhuma linha, por isso a rotina que eu fiz, começou a dar certo só depois que eu inseri a instrução "tblCadastrodeclientes.CancelUpdate", por que qualquer outra operação que eu fazia com a recordset dava o bendito erro, pois ela ficava me modo de edição :D

 

Mais uma vez Agradeço Paulo Mendes

Vlws msm pela força http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Um abraço Rafael Lemes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quié Isso mano, eu que agradeço...pra tentar entender a sua dúvida precisei montar um ambiente parecido com o seu aqui, e de quebra aprendi a conectar o Visual Basic com o MySQL...foi bom para os dois...e é interessante, pois foi bom para os dois.

 

Precisando estamos aí.

 

Paulo Mendes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.