Registrar valor me branco no banco de dados
Enviado: 25 Nov 2020 às 10:56
Prezados, bom dia.
Montei um código para inserir registros no meu banco de dado Access, porém o lançamento ocorre via um Form no excel, o problema é que as vezes quero deixar algumas informações em branco, porém não consigo, pois dá erro, toda vez tenho que preencher o textbox com 0 para conseguir registrar.
Alguma sugestão de como corrigir?
Aceito também sugestões para melhorar o código rs.
Desde já muito obrigado.
Montei um código para inserir registros no meu banco de dado Access, porém o lançamento ocorre via um Form no excel, o problema é que as vezes quero deixar algumas informações em branco, porém não consigo, pois dá erro, toda vez tenho que preencher o textbox com 0 para conseguir registrar.
Alguma sugestão de como corrigir?
Aceito também sugestões para melhorar o código rs.
Desde já muito obrigado.
Código: Selecionar todos
Private Sub btn_novo_Click()
On Error GoTo Erro:
If Me.txt_cliente = "" Then
MsgBox "Cliente não informado, campo obrigatório", vbCritical
Exit Sub
End If
If Me.txt_data_referencia = "" Then
MsgBox "Data de referência não informada, campo obrigatório", vbCritical
Exit Sub
End If
Call Conecta
Set rs = New ADODB.Recordset
rs.Open "select * from bd_faturas", conexao, adOpenKeyset, adLockOptimistic, adCmdText
rs.AddNew
rs.Fields("Data_ref") = Me.txt_data_referencia
rs.Fields("Unidade_consumidora") = Me.txt_cliente
rs.Fields("Id_fatura") = Me.txt_cliente & "-" & Me.txt_data_referencia
rs.Fields("Distribuidora") = Me.lbl_distribuidora
rs.Fields("Encargo_ponta") = Me.txt_energia_ponta
rs.Fields("Encargo_fora_ponta") = Me.txt_energia_fora_ponta
rs.Fields("Energia_reativa_ponta") = CDbl(Me.txt_energia_reativa_ponta)
rs.Fields("Energia_reativa_fora_ponta") = Me.txt_energia_reativa_fora_ponta
rs.Fields("Demanda_contratada_ponta") = Me.txt_contratada_ponta
rs.Fields("Demanda_medida_ponta") = Me.txt_demanda_ponta
'''''CALCULA DEMANDA PONTA ISENTA
If Me.lbl_distribuidora.Caption = "ENERGISA-MS" Or _
Me.lbl_distribuidora.Caption = "ENERGISA-MT" _
And CDbl(Me.txt_demanda_ponta) < CDbl(Me.txt_contratada_ponta) Then
IsentaPonta = CDbl(Me.txt_contratada_ponta) - CDbl(Me.txt_demanda_ponta)
Else
IsentaPonta = 0
End If
rs.Fields("Demanda_isenta_ponta") = IsentaPonta
'''''CALCULA ULTRAPASSAGEM DEMANDA PONTA
If CDbl(Me.txt_demanda_ponta) > (CDbl(Me.txt_contratada_ponta) * 1.05) Then
UltrapassagemPonta = CDbl(Me.txt_demanda_ponta) - CDbl(Me.txt_contratada_ponta)
Else
UltrapassagemPonta = 0
End If
rs.Fields("Ultrapassagem_demanda_ponta") = UltrapassagemPonta
rs.Fields("Demanda_reativa_ponta") = Me.txt_demanda_reativa_ponta
rs.Fields("Demanda_contratada_fora_ponta") = Me.txt_contratada_fora_ponta
rs.Fields("Demanda_medida_fora_ponta") = Me.txt_demanda_fora_ponta
'''''CALCULA DEMANDA FORA PONTA ISENTA
If Me.lbl_distribuidora.Caption = "ENERGISA-MS" _
Or Me.lbl_distribuidora.Caption = "ENERGISA-MT" _
And CDbl(Me.txt_demanda_fora_ponta) < CDbl(Me.txt_contratada_fora_ponta) Then
IsentaForaPonta = CDbl(Me.txt_contratada_fora_ponta) - CDbl(Me.txt_demanda_fora_ponta)
Else
IsentaForaPonta = 0
End If
rs.Fields("Demanda_isenta_fora_ponta") = IsentaForaPonta
'''''CALCULA ULTRAPASSAGEM DEMANDA FORA PONTA
If CDbl(Me.txt_demanda_fora_ponta) > (CDbl(Me.txt_contratada_fora_ponta) * 1.05) Then
UltrapassagemForaPonta = CDbl(Me.txt_demanda_fora_ponta) - CDbl(Me.txt_contratada_fora_ponta)
Else
UltrapassagemForaPonta = 0
End If
rs.Fields("Ultrapassagem_demanda_fora_ponta") = UltrapassagemForaPonta
rs.Fields("Demanda_reativa_fora_ponta") = Me.txt_demanda_reativa_fora_ponta
rs.Fields("Iluminacao_publica") = Me.txt_publica
rs.Fields("Encargo_conexao") = Me.txt_conexao
rs.Fields("Ajuste_faturamento") = Me.txt_ajuste
rs.Fields("Valor_devec") = Me.txt_devec
'''''CALCULA PIS COFINS
PisCofins = (CDbl(Me.txt_pis) + CDbl(Me.txt_cofins)) / 100
rs.Fields("Pis_cofins") = PisCofins
rs.Fields("Total_fatura") = Me.txt_total_fatura
rs.Fields("Data_emissao") = Me.txt_emissao
rs.Fields("Data_pagamento") = Me.txt_pgto
rs.Fields("Data_leitura") = Me.txt_leitura_atual
rs.Fields("Data_leitura_anterior") = Me.txt_leitura_anterior
rs.Update
Call Desconecta
MsgBox "Cadastro efetuado com sucesso"
For Each objeto In Me.Controls
If TypeName(objeto) = "TextBox" Or TypeName(objeto) = "ComboBox" Then
objeto.Text = ""
Me.lbl_distribuidora.Caption = Empty
End If
Next
For Each objeto In Me.Controls
If TypeName(objeto) = "TextBox" Or TypeName(objeto) = "ComboBox" Then
objeto.Locked = True
End If
txt_cliente.Locked = False
txt_data_referencia.Locked = False
Next
Set rs = Nothing
Exit Sub
Erro:
If Err.Number = -2147217887 Then
MsgBox "Ja existe uma fatura cadastrada com essa referência, por favor verifique!", vbCritical
Else
MsgBox "O seguinte erro ocorreu:" & Err.Description
End If
End Sub