Boa tarde a todos!
Preciso de ajuda quanto a variáveis. Seguinte, tenho um formulário onde cadastro pedidos de exames, inseri um botão onde ele copia o cabeçalho do pedido, Paciente, DataNasc, Prontuario e Nome do médico para as variáveis, após esse processo ele salva o registro na tabela, limpa os campos e insere os valores do cabeçalho de novo nos devidos campos. Fiz isso para que não tenha que digitar tudo de novo. Detalhe, uso formulário desvinculado. Até ai tudo bem, meu problema começa quando um desses campos do cabeçalho está vazio, um exemplo a Data de Nascimento, ai aparece erro de depuração 96, "Uso de Null invalido", acredito que é porque uso um modulo global que limpa todos os campos do formulário usando o Null, porem já tentei alterar para "" e Empty mas não deu certo.
Acontece pelo que entendi que não consigo gravar na variável um valor de um campo em branco, ou quando coloco "on error resume Next" ele usa a ultima data de nascimento gravada na variável. Tentei de varias formas e foram todas sem sucesso, peço uma luz quanto a isso, só falta este problema para terminar o BD.
Dados do BD
Tabela: tabPEItem
Nome formulario: frmPECadastro
Segue o código do botão:
Código que uso para salvar os dados do cabeçalho nas variáveis:
Agradeço desde já!
Preciso de ajuda quanto a variáveis. Seguinte, tenho um formulário onde cadastro pedidos de exames, inseri um botão onde ele copia o cabeçalho do pedido, Paciente, DataNasc, Prontuario e Nome do médico para as variáveis, após esse processo ele salva o registro na tabela, limpa os campos e insere os valores do cabeçalho de novo nos devidos campos. Fiz isso para que não tenha que digitar tudo de novo. Detalhe, uso formulário desvinculado. Até ai tudo bem, meu problema começa quando um desses campos do cabeçalho está vazio, um exemplo a Data de Nascimento, ai aparece erro de depuração 96, "Uso de Null invalido", acredito que é porque uso um modulo global que limpa todos os campos do formulário usando o Null, porem já tentei alterar para "" e Empty mas não deu certo.
Acontece pelo que entendi que não consigo gravar na variável um valor de um campo em branco, ou quando coloco "on error resume Next" ele usa a ultima data de nascimento gravada na variável. Tentei de varias formas e foram todas sem sucesso, peço uma luz quanto a isso, só falta este problema para terminar o BD.
Dados do BD
Tabela: tabPEItem
Nome formulario: frmPECadastro
Segue o código do botão:
- Código:
Private Sub btSalvarConti_Click()
If IsNull(Me.IdPedido) Then 'Se o campo IdPedido estiver nulo, segue o codigo abaixo...
'=======================================================
' CADASTRO NA TABELA
'=======================================================
'======================== VALIDA OS CAMPOS =====================
If IsNull(DataPedido) Then
MsgBox ("O campo Data Pedido é obrigatório")
Me.DataPedido.SetFocus
'Me.Nome.BackColor = vbYellow
DoCmd.CancelEvent
Exit Sub
End
End If
If IsNull(PedidoParaMes) Then
MsgBox ("O campo Pedido p/ Mês é obrigatório")
Me.PedidoParaMes.SetFocus
'Me.Nome.BackColor = vbYellow
DoCmd.CancelEvent
Exit Sub
End
End If
If IsNull(Paciente) Then
MsgBox ("O campo Paciente é obrigatório")
Me.Paciente.SetFocus
'Me.Nome.BackColor = vbYellow
DoCmd.CancelEvent
Exit Sub
End
End If
If IsNull(TipoExame) Then
MsgBox ("O campo Tipo de Exame é obrigatório")
Me.TipoExame.SetFocus
'Me.Nome.BackColor = vbYellow
DoCmd.CancelEvent
Exit Sub
End
End If
If IsNull(MedicoSolic) Then
MsgBox ("O campo Médico Solicitante é obrigatório")
Me.MedicoSolic.SetFocus
'Me.Nome.BackColor = vbYellow
DoCmd.CancelEvent
Exit Sub
End
End If
'========= Variaveis p/ salvar os dados para o proximo registro =================
'On Error Resume Next
Dim fPaciente As String
Dim fAno As String
Dim fDataNasc As Date
Dim fTipoEx As String
Dim fMedico As String
Dim fdataPedi As Date
Dim fPedidoMes As String
Dim fNControle As String
Dim fProntu As String
fPaciente = Me.Paciente
fAno = Me.Ano
fDataNasc = Me.DataNasc
fTipoEx = Me.TipoExame
fMedico = Me.MedicoSolic
fdataPedi = Me.DataPedido
fPedidoMes = Me.PedidoParaMes
fNControle = Me.Ncontrole
fProntu = Me.Prontuario
'====================== CADASTRA NA TABELA ======================
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("tabPEItem", dbOpenDynaset)
With rs
.AddNew
!Ncontrole = Ncontrole 'O primeiro campo é o da tabela, o segundo é o do formulario
!DataPedido = DataPedido
!Ano = Ano
!PedidoParaMes = PedidoParaMes
!Paciente = Paciente
!DataNasc = DataNasc
!Prontuario = Prontuario
!TipoExame = TipoExame
!MedicoSolic = MedicoSolic
!StatusPend = StatusPend
!StatusAuto = StatusAuto
!StatusNaoAuto = StatusNaoAuto
!DataAutorizacao = DataAutorizacao
!Status = Status
!Selecionar = Selecionar
!Faturado = Faturado
!Impresso = Impresso
!Lote = Lote
!Item = Item
!ValorItem = ValorItem
!Qtda = Qtda
!ValorTotalItem = ValorTotalItem
!Prestador = Prestador
!IdPrestador = IdPrestador
!Realizado = Realizado
!DataRealizacao = DataRealizacao
!DataFaturamento = DataFaturamento
.Update
.Close
End With
Set rs = Nothing
'===================== CODIGOS POS CADASTRO ======================
Call LimpaGeral(Me) 'Macro que limpa tudo (veja no repositório)
Me.DataPedido.SetFocus 'foca o campo desejado, pode ser qualquer um
MsgBox "Registro salvo com sucesso!", 64, "Salvar"
'Insere as variaveis do cabeçalho nos campos
Me.Paciente = fPaciente
Me.Ano = fAno
Me.DataNasc = fDataNasc
Me.TipoExame = fTipoEx
Me.MedicoSolic = fMedico
Me.DataPedido = fdataPedi
Me.PedidoParaMes = fPedidoMes
Me.Ncontrole = fNControle
Me.Prontuario = fProntu
Me.StatusPend.Value = 1
'esvazia as variaveis do cabeçalho
'=======================================================
' FIM
'=======================================================
Else
'=======================================================
' ALTERAÇÃO NA TABELA
'=======================================================
If MsgBox("Deseja realmente alterar o cadastro?", vbYesNo + vbInformation, "Alteração de cadastro") = vbYes Then
Dim ISQL As String
Set db = CurrentDb()
ISQL = "SELECT * FROM tabPEPedido WHERE IdPedido = " & Me.IdPedido & ""
Set rs = CurrentDb.OpenRecordset(ISQL)
With rs
Do While Not rs.EOF
.Edit
!Ncontrole = Ncontrole 'O primeiro campo é o da tabela, o segundo é o do formulario
!DataPedido = DataPedido
!Ano = Ano
!PedidoParaMes = PedidoParaMes
!Paciente = Paciente
!DataNasc = DataNasc
!Prontuario = Prontuario
!TipoExame = TipoExame
!MedicoSolic = MedicoSolic
!StatusPend = StatusPend
!StatusAuto = StatusAuto
!StatusNaoAuto = StatusNaoAuto
!DataAutorizacao = DataAutorizacao
!Status = Status
!Selecionar = Selecionar
!Faturado = Faturado
!Impresso = Impresso
!Lote = Lote
!ValorTotalPedido = ValorTotalPedido
!Item = Item
!ValorItem = ValorItem
!Qtda = Qtda
!ValorTotalItem = ValorTotalItem
!Prestador = Prestador
!IdPrestador = IdPrestador
!Realizado = Realizado
!DataRealizacao = DataRealizacao
!DataFaturamento = DataFaturamento
.Update
.MoveNext
Loop
.Close
End With
Set rs = Nothing
MsgBox "Registro alterado com sucesso!", 64, "Salvar"
DoCmd.Close
Else
Exit Sub
End If
End If
'=======================================================
' FIM
'=======================================================
End Sub
Código que uso para salvar os dados do cabeçalho nas variáveis:
- Código:
'On Error Resume Next
Dim fPaciente As String
Dim fAno As String
Dim fDataNasc As Date
Dim fTipoEx As String
Dim fMedico As String
Dim fdataPedi As Date
Dim fPedidoMes As String
Dim fNControle As String
Dim fProntu As String
fPaciente = Me.Paciente
fAno = Me.Ano
fDataNasc = Me.DataNasc
fTipoEx = Me.TipoExame
fMedico = Me.MedicoSolic
fdataPedi = Me.DataPedido
fPedidoMes = Me.PedidoParaMes
fNControle = Me.Ncontrole
fProntu = Me.Prontuario
Agradeço desde já!