UPDATE EM TABELA ACCESS
BOM DIA GALERA BLZ. TENHO A SEGUINTE ESTRUTURA NA BASE DE DADOS, E A SEGUINTE QUERY PARA ALTERA OS DADOS, MAIS DOIS CAMPOS NÃO ESTÃO ALTERANDO.
CAMPOS:
FONE
OBS
QUERY
AGRADEÇO SE ALGUéM PODER MIM AJUDAR
ABRAÇOS
[th]
CAMPOS:
FONE
OBS
QUERY
AGRADEÇO SE ALGUéM PODER MIM AJUDAR
ABRAÇOS
Cabecalho | [/th]
Msg1 = [Ô][Ô] Msg1 = Msg1 & [Ô] ** AVISO ** [Ô] & vbNewLine & vbNewLine Msg1 = Msg1 & [Ô]Confirmar alteração do cadastro [Ô] & Format(rs.Fields([Ô]codigo[Ô]), [Ô]000[Ô]) & [Ô].[Ô] & vbNewLine If MsgBox(Msg1, vbInformation + vbYesNo, [Ô]Pocket[Ô]) = vbYes Then sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô] sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]fone=[ô][Ô] & atxtFone.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]obs=[ô][Ô] & txtObs.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]CAPA=[Ô] & IIf(Check1.Value, 1, 0) & [Ô],[Ô] sSQL = sSQL & [Ô]BATERIA=[Ô] & IIf(Check2.Value, 1, 0) & [Ô],[Ô] sSQL = sSQL & [Ô]CARREGADOR=[Ô] & IIf(Check3.Value, 1, 0) & [Ô],[Ô] sSQL = sSQL & [Ô]CANETA=[Ô] & IIf(Check4.Value, 1, 0) sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo.Text [ô]sSQL = sSQL & [Ô]manutencao=[Ô] & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô] [ô]sSQL = sSQL & [Ô]reparo=[Ô] & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) con.BeginTrans con.Execute sSQL con.CommitTrans MsgBox [Ô]Registro alterado com sucesso![Ô], vbInformation, [Ô]Cadastro de Equipamento[Ô] |
No código, não tem nada errado que eu veja...
OLà KERPLUNK, MAIS QUANDO ALTERO TANTO NO TEXTO OBS E FONE E PESSO PARA ALTERAR, MOSTRA O MSGBOX QUE FOI ALTERADO COM SUCESSO, MAIS QUANDO ABRO O PROGRAMA A ALTERAÇÃO NÃO FOI FEITA.
VC NÃO FECHOU O IF VEJA
Msg1 = [Ô][Ô]
Msg1 = Msg1 & [Ô] ** AVISO ** [Ô] & vbNewLine & vbNewLine
Msg1 = Msg1 & [Ô]Confirmar alteração do cadastro [Ô] & Format(rs.Fields([Ô]codigo[Ô]), [Ô]000[Ô]) & [Ô].[Ô] & vbNewLine
If MsgBox(Msg1, vbInformation + vbYesNo, [Ô]Pocket[Ô]) = vbYes Then
sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô]
sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]fone=[ô][Ô] & atxtFone.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]obs=[ô][Ô] & txtObs.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]CAPA=[Ô] & IIf(Check1.Value, 1, 0) & [Ô],[Ô]
sSQL = sSQL & [Ô]BATERIA=[Ô] & IIf(Check2.Value, 1, 0) & [Ô],[Ô]
sSQL = sSQL & [Ô]CARREGADOR=[Ô] & IIf(Check3.Value, 1, 0) & [Ô],[Ô]
sSQL = sSQL & [Ô]CANETA=[Ô] & IIf(Check4.Value, 1, 0)
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo.Text
[ô]sSQL = sSQL & [Ô]manutencao=[Ô] & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
[ô]sSQL = sSQL & [Ô]reparo=[Ô] & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
con.BeginTrans
con.Execute sSQL
con.CommitTrans
MsgBox [Ô]Registro alterado com sucesso![Ô], vbInformation, [Ô]Cadastro de Equipamento[Ô]
[txt-color=#e80000]End If[/txt-color]
Msg1 = [Ô][Ô]
Msg1 = Msg1 & [Ô] ** AVISO ** [Ô] & vbNewLine & vbNewLine
Msg1 = Msg1 & [Ô]Confirmar alteração do cadastro [Ô] & Format(rs.Fields([Ô]codigo[Ô]), [Ô]000[Ô]) & [Ô].[Ô] & vbNewLine
If MsgBox(Msg1, vbInformation + vbYesNo, [Ô]Pocket[Ô]) = vbYes Then
sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô]
sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]fone=[ô][Ô] & atxtFone.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]obs=[ô][Ô] & txtObs.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp.Text & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]CAPA=[Ô] & IIf(Check1.Value, 1, 0) & [Ô],[Ô]
sSQL = sSQL & [Ô]BATERIA=[Ô] & IIf(Check2.Value, 1, 0) & [Ô],[Ô]
sSQL = sSQL & [Ô]CARREGADOR=[Ô] & IIf(Check3.Value, 1, 0) & [Ô],[Ô]
sSQL = sSQL & [Ô]CANETA=[Ô] & IIf(Check4.Value, 1, 0)
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo.Text
[ô]sSQL = sSQL & [Ô]manutencao=[Ô] & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
[ô]sSQL = sSQL & [Ô]reparo=[Ô] & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
con.BeginTrans
con.Execute sSQL
con.CommitTrans
MsgBox [Ô]Registro alterado com sucesso![Ô], vbInformation, [Ô]Cadastro de Equipamento[Ô]
[txt-color=#e80000]End If[/txt-color]
MARCELO TINHA COLOCADO O END IF NO FINAL MAIS NÃO TINHA POSTADO. SEGUE QUERY COMPLETA
[th]
Cabecalho | [/th]
Private Sub cmdAlterar_Click() Dim sSQL As String On Error GoTo erro Msg1 = [Ô][Ô] Msg1 = Msg1 & [Ô] ** AVISO ** [Ô] & vbNewLine & vbNewLine Msg1 = Msg1 & [Ô]Confirmar alteração do cadastro [Ô] & Format(rs.Fields([Ô]codigo[Ô]), [Ô]000[Ô]) & [Ô].[Ô] & vbNewLine If MsgBox(Msg1, vbInformation + vbYesNo, [Ô]Pocket[Ô]) = vbYes Then sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô] sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]fone=[ô][Ô] & atxtFone.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]obs=[ô][Ô] & txtObs.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp.Text & [Ô][ô],[Ô] sSQL = sSQL & [Ô]CAPA=[Ô] & IIf(Check1.Value, 1, 0) & [Ô],[Ô] sSQL = sSQL & [Ô]BATERIA=[Ô] & IIf(Check2.Value, 1, 0) & [Ô],[Ô] sSQL = sSQL & [Ô]CARREGADOR=[Ô] & IIf(Check3.Value, 1, 0) & [Ô],[Ô] sSQL = sSQL & [Ô]CANETA=[Ô] & IIf(Check4.Value, 1, 0) sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo.Text [ô]sSQL = sSQL & [Ô]manutencao=[Ô] & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô] [ô]sSQL = sSQL & [Ô]reparo=[Ô] & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) con.BeginTrans con.Execute sSQL con.CommitTrans MsgBox [Ô]Registro alterado com sucesso![Ô], vbInformation, [Ô]Cadastro de Equipamento[Ô] cmdAlterar.Enabled = False cmdEditar.Enabled = True cmdConsulta.Enabled = True cmdNovo.Enabled = True cmdExcluir.Enabled = True cmdImprimir.Enabled = True Habilita_Caixas End If Exit Sub erro: con.RollbackTrans MsgBox [Ô]Ocorreu um erro ao alterar o cadastro[Ô] & vbCrLf & Err.Description, vbExclamation, [Ô]Erro[Ô] End Sub |
é possÃvel que alguma outra função possa estar [Ô]zerando[Ô] os valores dessas caixas de texto antes de executar essa gravação? Depure o código e veja os valores delas no momento da gravação.
ESSE é O PROBLEMA NÃO ESTà DANDO ERRO PARA ALTERAR, INFORMA QUE QUE ALTERAÇÃO FOI REALIZADA COM SUCESSO MAIS QUANDO ABRO NAVAMENTE O PRGRAMA ESTà DO MESMO JEITO SEM ALTERAÇÃO.
Não, vc não entendeu, coloque um breakpoint na linha onde concatena os valores da obs ou do fone, então verifique o valor que está na textbox no momento dessa concatenação, porque pode estar em branco.
a questão é no banco de dados, a alteração está sendo feita?
Ola amigo esperementa no where colocar um CInt() como segue abaixo, estou vendo que sua chave primeira é um Inteiro e na query o Access deve estar interpretando como String, coloca o Cint() como segue abaixo e testa
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & Cint(atxtCodigo.Text)
Espero ter ajudado.
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & Cint(atxtCodigo.Text)
Espero ter ajudado.
OLà TEMPESTADE FIZ ALTERAÇÃO MAIS CONTINUA NÃO ALTERANDO. MARCELO-TREZE NÃO NO BANCO NÃO ESTà SENDO ALTERADO, Jà FIZ VÃRIOS TESTE MAIS SEM SUCESSO.
Tópico encerrado , respostas não são mais permitidas