SALVAR CAMPO DATA VAZIO ACCESS
Poxa! Eu testei aqui o seu código com as minhas alterações e esta gravando normalmente, sei lá.....!
Eu alterei o código de alteração do Form (frmContrato), não é esse que vc esta com dificuldades?
Private Sub GravarDados()
Dim strSQL As String
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
[ô]Verifica a operação e cria o comando SQL correspondente:
If NewRecord = True Then
Set OP = New ADODB.Command
With OP
strSQL = [Ô]INSERT INTO tbcontrato (ContratoNro, Matricula, CodCargo, CodFuncao, CodSetor, DtAdmissao, DtDesligado, Funcionario,[Ô]
strSQL = strSQL & [Ô]CodTipoContrato, DtConcurso, CodAto, NroAto, DtAto)[Ô]
strSQL = strSQL & [Ô]VALUES([Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtnrocontrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtMatricula.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodCargo.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodFuncao.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodSetor.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & IIf(Not IsDate(txtAdmissao.Text), [Ô]Null[Ô], Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô])) & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & IIf(Not IsDate(txtDesligado.Text), [Ô]Null[Ô], Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô])) & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & Combo1.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodTipoContrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataConcurso.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtNroAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataAto.Text & [Ô][ô])[Ô]
End With
Else
Set OP = New ADODB.Command
With OP
.ActiveConnection = conn
strSQL = [Ô]UPDATE tbcontrato SET [Ô]
strSQL = strSQL & [Ô]CodCargo=[ô][Ô] & txtCodCargo.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]CodFuncao=[ô][Ô] & txtCodFuncao & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]CodSetor=[ô][Ô] & txtCodSetor & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]DtConcurso=[ô][Ô] & txtDataConcurso.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]CodAto=[ô][Ô] & txtCodAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]Funcionario=[ô][Ô] & Combo1.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]codTipoContrato=[ô][Ô] & txtCodTipoContrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]DtAdmissao=[Ô] & IIf(Not IsDate(txtAdmissao.Text), [Ô]null[Ô], [Ô][ô][Ô] + Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô]) + [Ô][ô][Ô]) & [Ô],[Ô]
strSQL = strSQL & [Ô]DtDesligado=[Ô] & IIf(Not IsDate(txtDesligado.Text), [Ô]null[Ô], [Ô][ô][Ô] + Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô]) + [Ô][ô][Ô]) & [Ô],[Ô]
strSQL = strSQL & [Ô]NroAto=[ô][Ô] & txtNroAto.Text & [Ô][ô][Ô]
strSQL = strSQL & [Ô]Where Matricula =[Ô] & txtMatricula.Text
.CommandText = strSQL
.Execute
End With
End If
MsgBox [Ô]Gravação concluÃda com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
Limpar_Campos
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
GoTo Saida
End Sub
Private Sub GravarDados()
Dim strSQL As String
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean
vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
vErro = False
[ô]Se aconteceu um erro de digitação, sai da sub sem gravar:
If vErro Then Exit Sub
Screen.MousePointer = vbHourglass
[ô]Verifica a operação e cria o comando SQL correspondente:
If NewRecord = True Then
Set OP = New ADODB.Command
With OP
strSQL = [Ô]INSERT INTO tbcontrato (ContratoNro, Matricula, CodCargo, CodFuncao, CodSetor, DtAdmissao, DtDesligado, Funcionario,[Ô]
strSQL = strSQL & [Ô]CodTipoContrato, DtConcurso, CodAto, NroAto, DtAto)[Ô]
strSQL = strSQL & [Ô]VALUES([Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtnrocontrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtMatricula.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodCargo.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodFuncao.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodSetor.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & IIf(Not IsDate(txtAdmissao.Text), [Ô]Null[Ô], Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô])) & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & IIf(Not IsDate(txtDesligado.Text), [Ô]Null[Ô], Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô])) & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & Combo1.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodTipoContrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataConcurso.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtNroAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataAto.Text & [Ô][ô])[Ô]
End With
Else
Set OP = New ADODB.Command
With OP
.ActiveConnection = conn
strSQL = [Ô]UPDATE tbcontrato SET [Ô]
strSQL = strSQL & [Ô]CodCargo=[ô][Ô] & txtCodCargo.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]CodFuncao=[ô][Ô] & txtCodFuncao & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]CodSetor=[ô][Ô] & txtCodSetor & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]DtConcurso=[ô][Ô] & txtDataConcurso.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]CodAto=[ô][Ô] & txtCodAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]Funcionario=[ô][Ô] & Combo1.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]codTipoContrato=[ô][Ô] & txtCodTipoContrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô]DtAdmissao=[Ô] & IIf(Not IsDate(txtAdmissao.Text), [Ô]null[Ô], [Ô][ô][Ô] + Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô]) + [Ô][ô][Ô]) & [Ô],[Ô]
strSQL = strSQL & [Ô]DtDesligado=[Ô] & IIf(Not IsDate(txtDesligado.Text), [Ô]null[Ô], [Ô][ô][Ô] + Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô]) + [Ô][ô][Ô]) & [Ô],[Ô]
strSQL = strSQL & [Ô]NroAto=[ô][Ô] & txtNroAto.Text & [Ô][ô][Ô]
strSQL = strSQL & [Ô]Where Matricula =[Ô] & txtMatricula.Text
.CommandText = strSQL
.Execute
End With
End If
MsgBox [Ô]Gravação concluÃda com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]
[ô]Chama a sub que limpa os dados do formulário:
Limpar_Campos
Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing
Exit Sub
GoTo Saida
End Sub
IRENKO, ta dando erro de operadores e de sintaxe, tando para INCLUIR como para UPDATE. Vou copiar esse codigo acima e testar ....
colelga posta a estrutura inteira de sua tabela
ex:
codcargo = numerico
dtvencimento = data/hora
etc,etc
ex:
codcargo = numerico
dtvencimento = data/hora
etc,etc
MARCELO-TREZE, com as modificações que o IRENKO fez no meu projeto (pagina anterior) agora consigo fazer UPDATE dos dados, mas continuo sem conseguir INCLUIR novos contratos.Se quizer é so baixar um cópia para tu verificar a estrutura do banco por inteiro. Mesmo assim, segue um print com uma parcial da estrutura das tabelas. A dificuldade em incluir ainda é a mesma, incluir em branco os campos data do formulario.Outra coisa, para poder fazer UPDATE sem dar erro, tive de COMENTAR as SUB de LostFocus dos campos DATA,mas dai tenho de digitar as barras das datas.Arruma um lado estraga outro, tá uma verdadeira zona. Da uma olhada, que eu continuo tentando por aqui.....
Bom baseado em sua tabela fiz as duas instruções, teste.
inclusão
CommandText = [Ô]INSERT INTO tbcontrato [Ô] & _
[Ô](ContratoNro,Matricula, CodCargo,CodFuncao,CodSetor,DtAdmissao,DtRescisao,Funcionario,CodTipoContrato,DtConcurso,CodAto,NroAto, [Ô] & _
[Ô]DtAto) VALUES ([Ô] & _
txtMatricula.Text & [Ô],[Ô] & _
txtCodCargo.Text & [Ô],[Ô] & _
txtCodFuncao.Text & [Ô],[Ô] & _
txtCodSetor.Text & [Ô],[Ô] & _
IIf(txtAdmissao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtAdmissao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
IIf(txtRescisao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtRescisao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[ô][Ô] &
Combo1.Text & [Ô][ô],[Ô] & _
txtCodTipoContrato.Text & [Ô],[ô][Ô] & _
IIf(txtDataConcurso.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataConcurso.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
txtCodAto.Text & [Ô],[Ô] & _
txtNroAto.Text & [Ô],[Ô] & _
IIf(txtDataAto.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataAto.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô]);[Ô]
Alteração:
.CommandText = [Ô]update tbcontrato set [Ô] & _
[Ô](CodCargo =[Ô] & txtCodCargo.Text & [Ô],[Ô] & _
[Ô]CodFuncao = [Ô] & txtCodFuncao & [Ô],[Ô] & _
[Ô]CodSetor = [Ô] & txtCodSetor & [Ô],[Ô] & _
[Ô]DtAdmissao = [Ô] & IIf(txtAdmissao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtAdmissao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
[Ô]DtRescisao = [Ô] & IIf(txtRescisao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtRescisao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] &
[Ô]Funcionario= [ô][Ô] & Combo1.Text & [Ô][ô],[Ô] & _
[Ô]codTipoContrato= [Ô] & txtCodTipoContrato.Text & [Ô],[Ô] & _
[Ô]DtConcurso = [Ô] & IIf(txtDataConcurso.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataConcurso.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
[Ô]CodAto = [Ô] & txtCodAto.Text & [Ô],[Ô] & _
[Ô]NroAto = [Ô] & txtNroAto.Text & [Ô],[Ô] & _
[Ô]DtAto = [Ô] & IIf(txtDataAto.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataAto.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô])[Ô] & _
[Ô]where Matricula = [Ô] & txtMatricula.Text & [Ô][Ô]
inclusão
CommandText = [Ô]INSERT INTO tbcontrato [Ô] & _
[Ô](ContratoNro,Matricula, CodCargo,CodFuncao,CodSetor,DtAdmissao,DtRescisao,Funcionario,CodTipoContrato,DtConcurso,CodAto,NroAto, [Ô] & _
[Ô]DtAto) VALUES ([Ô] & _
txtMatricula.Text & [Ô],[Ô] & _
txtCodCargo.Text & [Ô],[Ô] & _
txtCodFuncao.Text & [Ô],[Ô] & _
txtCodSetor.Text & [Ô],[Ô] & _
IIf(txtAdmissao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtAdmissao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
IIf(txtRescisao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtRescisao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[ô][Ô] &
Combo1.Text & [Ô][ô],[Ô] & _
txtCodTipoContrato.Text & [Ô],[ô][Ô] & _
IIf(txtDataConcurso.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataConcurso.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
txtCodAto.Text & [Ô],[Ô] & _
txtNroAto.Text & [Ô],[Ô] & _
IIf(txtDataAto.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataAto.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô]);[Ô]
Alteração:
.CommandText = [Ô]update tbcontrato set [Ô] & _
[Ô](CodCargo =[Ô] & txtCodCargo.Text & [Ô],[Ô] & _
[Ô]CodFuncao = [Ô] & txtCodFuncao & [Ô],[Ô] & _
[Ô]CodSetor = [Ô] & txtCodSetor & [Ô],[Ô] & _
[Ô]DtAdmissao = [Ô] & IIf(txtAdmissao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtAdmissao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
[Ô]DtRescisao = [Ô] & IIf(txtRescisao.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtRescisao.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] &
[Ô]Funcionario= [ô][Ô] & Combo1.Text & [Ô][ô],[Ô] & _
[Ô]codTipoContrato= [Ô] & txtCodTipoContrato.Text & [Ô],[Ô] & _
[Ô]DtConcurso = [Ô] & IIf(txtDataConcurso.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataConcurso.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô],[Ô] & _
[Ô]CodAto = [Ô] & txtCodAto.Text & [Ô],[Ô] & _
[Ô]NroAto = [Ô] & txtNroAto.Text & [Ô],[Ô] & _
[Ô]DtAto = [Ô] & IIf(txtDataAto.Text = [Ô][Ô], [Ô]NULL[Ô],â€#†& Format(txtDataAto.Text, [Ô]mm/dd/yyyy[Ô]) & “#â€) & [Ô])[Ô] & _
[Ô]where Matricula = [Ô] & txtMatricula.Text & [Ô][Ô]
Meu caro, se neste mesmo Form (frmContrato) vc vai incluir e ou alterar um cadastro, vc tera q separar as coisas, ou seja, para incluir um funcionario crie um botão (Incluir) para controlar a variavel (NewRecord). Para configurar as barras de separação da data, exite aqui no forum varios exemplos para uso no KeyPress do objeto. Vou tentar arrumar seu codigo.
Tópico encerrado , respostas não são mais permitidas