VALOR NULLO EM BANCO DE DADOS
algem sabe como posso fazer para salvar em um determinado campo um valor nulo??
exemplo:
campoNOME=txtnome
campoIDADE=txtidade
campoCPF=txtcpf
heis a questao.......imaginem um cadastro de um cliente cujo cpf este nao possui.
logico entao vc coloca um tracinho e pronto,certo?...nao tenho que colocar um campo que nao me mostre nada pois quando for exibir este iria me mostrar um traço coisa que nao posso.ou ate mesmo um 0,mas tbm nao poderia.
entao preciso de uma ajuda com uma saida de como poderia fazer isso no meu botao salvar deve conter algo do tipo que desabilite tais campos deste tabela.
grato por qualquer ajuda.
exemplo:
campoNOME=txtnome
campoIDADE=txtidade
campoCPF=txtcpf
heis a questao.......imaginem um cadastro de um cliente cujo cpf este nao possui.
logico entao vc coloca um tracinho e pronto,certo?...nao tenho que colocar um campo que nao me mostre nada pois quando for exibir este iria me mostrar um traço coisa que nao posso.ou ate mesmo um 0,mas tbm nao poderia.
entao preciso de uma ajuda com uma saida de como poderia fazer isso no meu botao salvar deve conter algo do tipo que desabilite tais campos deste tabela.
grato por qualquer ajuda.
O QUE VC PODE FAZER E TIPO NO SEU BANCO VC NUM SALVA NULO , TIPO VC FILTRA SE FOR NULO GRAVA 0 NO BANCO , NA HORA D CARREGAR NO FORM E SO FZ O INVERSO SE FOR 0 VC NÃO MOSTRA NADA NO CAMPO
Quando eu preciso que seja gravado um campo vazio no BD eu uso uma função neste exemplo o nome da função é Valor.
Public Function BdGravarLaudo(ByVal intItem As Integer) As Boolean
Dim intReg As Integer
On Error GoTo Error
On Error GoTo 0
BdGravarLaudo = True
Call AbrirConPed
Set rsBd = New ADODB.Recordset
rsBd.CursorLocation = adUseClient
rsBd.CursorType = adOpenDynamic
cnBd.BeginTrans
For intReg = 0 To intItem
strSql = "insert into ped_ld (data,num_id, item_ped, cliente, num_rig, bob_ex, rom_ex, tp_papel, " _
& "gram_ld, umd_ld, cmt_ld, cobbt_ld, cobbf_ld, cobbm_ld, mullen_ld, rct_ld, poro_ld, " _
& "pla_ld, plo_ld, dureza_ld) values ('" _
& Format(Date, "dd/mm/yyyy") & "','" _
& arrDados(intReg).strNum_id & "'," _
& CInt(arrDados(intReg).strItem_ped) & ",'" _
& arrDados(intReg).strCliente & "','" _
& arrDados(intReg).strNum_cli & "','" _
& arrDados(intReg).strBobina & "'," _
& CLng(arrDados(intReg).strRomaneio) & ",'" _
& arrDados(intReg).strPapel & "'," _
& Valor(arrDados(intReg).strGram) & "," _
& Valor(arrDados(intReg).strUmd) & "," _
& Valor(arrDados(intReg).strcmt) & "," _
& Valor(arrDados(intReg).strCobbt) & "," _
& Valor(arrDados(intReg).strCobbf) & "," _
& Valor(arrDados(intReg).strCobbm) & "," _
& Valor(arrDados(intReg).strMullen) & "," _
& Valor(arrDados(intReg).strRct) & "," _
& Valor(arrDados(intReg).strPoro) & "," _
& Valor(arrDados(intReg).strPla) & "," _
& Valor(arrDados(intReg).strPlo) & "," _
& Valor(arrDados(intReg).strDureza) & ")"
rsBd.Open strSql, cnBd
Next
cnBd.CommitTrans
Set cnBd = Nothing
Exit Function
Error:
BdGravarLaudo = False
cnBd.RollbackTrans
rsBd.Open "delete * from ped_ex where data = #" & Format(Date, "yyyy/mm/dd") & "#", cnBd
Set cnBd = Nothing
End Function
Private Function Valor(ByVal strText As String) As String
If strText = "-1" Then
Valor = "Null"
Else
On Error Resume Next
Valor = "'" & Format(CDbl(strText), "0.0") & "'"
End If
End Function
Public Function BdGravarLaudo(ByVal intItem As Integer) As Boolean
Dim intReg As Integer
On Error GoTo Error
On Error GoTo 0
BdGravarLaudo = True
Call AbrirConPed
Set rsBd = New ADODB.Recordset
rsBd.CursorLocation = adUseClient
rsBd.CursorType = adOpenDynamic
cnBd.BeginTrans
For intReg = 0 To intItem
strSql = "insert into ped_ld (data,num_id, item_ped, cliente, num_rig, bob_ex, rom_ex, tp_papel, " _
& "gram_ld, umd_ld, cmt_ld, cobbt_ld, cobbf_ld, cobbm_ld, mullen_ld, rct_ld, poro_ld, " _
& "pla_ld, plo_ld, dureza_ld) values ('" _
& Format(Date, "dd/mm/yyyy") & "','" _
& arrDados(intReg).strNum_id & "'," _
& CInt(arrDados(intReg).strItem_ped) & ",'" _
& arrDados(intReg).strCliente & "','" _
& arrDados(intReg).strNum_cli & "','" _
& arrDados(intReg).strBobina & "'," _
& CLng(arrDados(intReg).strRomaneio) & ",'" _
& arrDados(intReg).strPapel & "'," _
& Valor(arrDados(intReg).strGram) & "," _
& Valor(arrDados(intReg).strUmd) & "," _
& Valor(arrDados(intReg).strcmt) & "," _
& Valor(arrDados(intReg).strCobbt) & "," _
& Valor(arrDados(intReg).strCobbf) & "," _
& Valor(arrDados(intReg).strCobbm) & "," _
& Valor(arrDados(intReg).strMullen) & "," _
& Valor(arrDados(intReg).strRct) & "," _
& Valor(arrDados(intReg).strPoro) & "," _
& Valor(arrDados(intReg).strPla) & "," _
& Valor(arrDados(intReg).strPlo) & "," _
& Valor(arrDados(intReg).strDureza) & ")"
rsBd.Open strSql, cnBd
Next
cnBd.CommitTrans
Set cnBd = Nothing
Exit Function
Error:
BdGravarLaudo = False
cnBd.RollbackTrans
rsBd.Open "delete * from ped_ex where data = #" & Format(Date, "yyyy/mm/dd") & "#", cnBd
Set cnBd = Nothing
End Function
Private Function Valor(ByVal strText As String) As String
If strText = "-1" Then
Valor = "Null"
Else
On Error Resume Next
Valor = "'" & Format(CDbl(strText), "0.0") & "'"
End If
End Function
Faz de conta que o txt1 serve pro usuário escrever o nome do cara, e também serve pra mostrar o nome que você puxou do BD.
A mesma coisa pro txt2 e a idade e o txt3 e o cpf
Para inserir o dado com campo nulo no seu BD, dá pra usar a instrução Insert into:
"insert into cadastro values (IIf(Txt1 = "", "Null", "'" & Text1 & "'") & ", " & IIf(Txt2 = "", "Null", "'" & Text2 & "'") & ", " & IIf(Txt3 = "", "Null", "'" & Text3 & "'") & ") "
A sintaxe para a instrução Insert into é extremamente delicada (errou uma virgulinha, dançou) mas, em linhas gerais, funciona assim: Insert Into Tabela Values (4, 'valor', 56, Null). Ou seja, numa tabela com 4 campos, você insere os seus valores, respeitando a convenção: números sem aspas simples, strings entre aspas simples e Null para campo em branco, separados por vÃrgula. Nunca deixe de colocar um campo na instrução (tem que colocar Null para campo em branco)
Agora, puxando os valores pra tela:
if not isnull(rs(0)) then text1 = rs(0)
...
A mesma coisa pro txt2 e a idade e o txt3 e o cpf
Para inserir o dado com campo nulo no seu BD, dá pra usar a instrução Insert into:
"insert into cadastro values (IIf(Txt1 = "", "Null", "'" & Text1 & "'") & ", " & IIf(Txt2 = "", "Null", "'" & Text2 & "'") & ", " & IIf(Txt3 = "", "Null", "'" & Text3 & "'") & ") "
A sintaxe para a instrução Insert into é extremamente delicada (errou uma virgulinha, dançou) mas, em linhas gerais, funciona assim: Insert Into Tabela Values (4, 'valor', 56, Null). Ou seja, numa tabela com 4 campos, você insere os seus valores, respeitando a convenção: números sem aspas simples, strings entre aspas simples e Null para campo em branco, separados por vÃrgula. Nunca deixe de colocar um campo na instrução (tem que colocar Null para campo em branco)
Agora, puxando os valores pra tela:
if not isnull(rs(0)) then text1 = rs(0)
...
Tópico encerrado , respostas não são mais permitidas