UPDATE EM TABELA
Boa tarde amigos!
pessoal é o seguinte, quando gravo um novo registro na tabela, deixando os campos [Ô]MANUTENCAO E REPARO[Ô], como vazio, e tento fazer alguma alteração em outro campo vai dereto para linha de erro, mais se preencho os dois campos que são do tipo Data/Hora, vaz a alteração normal, é como não aceitasse alterar com esses dois campos vazio. Alguém pode mim ajuda a resolver esse probleminha. Segue o código.
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
con.BeginTrans
sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô]
sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]manutencao=#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#,[Ô]
sSQL = sSQL & [Ô]reparo=#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo & [Ô];[Ô]
con.Execute sSQL
con.CommitTrans
MsgBox [Ô]Cadastro alterado com sucesso![Ô]
End If
Exit Sub
erro:
con.RollbackTrans
MsgBox [Ô]Ocorreu um erro ao alterar o cadastro[Ô] & vbCrLf & Err.Description, vbExclamation, [Ô]Erro[Ô]
End Sub
pessoal é o seguinte, quando gravo um novo registro na tabela, deixando os campos [Ô]MANUTENCAO E REPARO[Ô], como vazio, e tento fazer alguma alteração em outro campo vai dereto para linha de erro, mais se preencho os dois campos que são do tipo Data/Hora, vaz a alteração normal, é como não aceitasse alterar com esses dois campos vazio. Alguém pode mim ajuda a resolver esse probleminha. Segue o código.
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
con.BeginTrans
sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô]
sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]manutencao=#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#,[Ô]
sSQL = sSQL & [Ô]reparo=#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo & [Ô];[Ô]
con.Execute sSQL
con.CommitTrans
MsgBox [Ô]Cadastro alterado com sucesso![Ô]
End If
Exit Sub
erro:
con.RollbackTrans
MsgBox [Ô]Ocorreu um erro ao alterar o cadastro[Ô] & vbCrLf & Err.Description, vbExclamation, [Ô]Erro[Ô]
End Sub
Você tem que tratar o campo NULL,
tente dessa forma...
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
con.BeginTrans
sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô]
sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp & [Ô][ô],[Ô]
sSQL = sSQL & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null,[Ô],[Ô]#[Ô] & [Ô]manutencao=#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#,[Ô])
sSQL = sSQL & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null,[Ô],[Ô]#[Ô] & [Ô]reparo=#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo & [Ô];[Ô]
con.Execute sSQL
con.CommitTrans
MsgBox [Ô]Cadastro alterado com sucesso![Ô]
End If
Exit Sub
erro:
con.RollbackTrans
MsgBox [Ô]Ocorreu um erro ao alterar o cadastro[Ô] & vbCrLf & Err.Description, vbExclamation, [Ô]Erro[Ô]
End Sub
tente dessa forma...
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
con.BeginTrans
sSQL = sSQL & [Ô]UPDATE tblpocket SET [Ô]
sSQL = sSQL & [Ô]sml=[ô][Ô] & atxtSml & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]escritorio=[ô][Ô] & atxtEscritorio & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]aparelho=[ô][Ô] & atxtAparelho & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]sn=[ô][Ô] & atxtsn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]imei=[ô][Ô] & atxtImei & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp & [Ô][ô],[Ô]
sSQL = sSQL & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null,[Ô],[Ô]#[Ô] & [Ô]manutencao=#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#,[Ô])
sSQL = sSQL & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null,[Ô],[Ô]#[Ô] & [Ô]reparo=#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo & [Ô];[Ô]
con.Execute sSQL
con.CommitTrans
MsgBox [Ô]Cadastro alterado com sucesso![Ô]
End If
Exit Sub
erro:
con.RollbackTrans
MsgBox [Ô]Ocorreu um erro ao alterar o cadastro[Ô] & vbCrLf & Err.Description, vbExclamation, [Ô]Erro[Ô]
End Sub
OLá JONATHANSTECKER, fiz do jeito que passou, mais continua dando o erro.
Faça desta foma (é diferente da anterior):
Note que o último NULL não tem a vÃrgula no final e as palavras NULL não estão entre [Ô]#[Ô].
sSQL = sSQL & [Ô]chiptimnovo=[ô][Ô] & atxtChip & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]responsavel=[ô][Ô] & atxtResp & [Ô][ô],[Ô]
sSQL = sSQL & [Ô]manutencao=[Ô] & IIf(atxtManut.Text = [Ô][Ô], [Ô]Null[Ô],[Ô]#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô]reparo=[Ô] & IIf(atxtReparo.Text = [Ô][Ô], [Ô]Null[Ô],[Ô]#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
sSQL = sSQL & [Ô] WHERE codigo=[Ô] & atxtCodigo & [Ô];[Ô]
con.Execute sSQL
Note que o último NULL não tem a vÃrgula no final e as palavras NULL não estão entre [Ô]#[Ô].
o colega jonathanstecker ja respondeu é apenas uma correçãozinha que farei e funcionará
apesar que a diferença de meu código pro edemir é apenas uma virgula que ele esqueceu
ps: meu código está certo porem o EDERMIR respondeu primeiro, ponto pra ele OK
sSQL = sSQL & IIf(atxtManut.Text = [Ô][Ô], [Ô]manutecao=Null,[Ô],[Ô]manutencao=#[Ô] & Format(atxtManut, [Ô]mm/dd/yyyy[Ô]) & [Ô]#,[Ô])
sSQL = sSQL & IIf(atxtReparo.Text = [Ô][Ô], [Ô]reparo=Null[Ô],[Ô]reparo=#[Ô] & Format(atxtReparo, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
apesar que a diferença de meu código pro edemir é apenas uma virgula que ele esqueceu
ps: meu código está certo porem o EDERMIR respondeu primeiro, ponto pra ele OK
VALEU AMIGOS PELA AJUDA DE TODOS,
Tópico encerrado , respostas não são mais permitidas