VALOR NULLO EM BANCO DE DADOS

USUARIO.EXCLUIDOS 05/01/2005 15:45:21
#58817
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.



MADMAX 05/01/2005 15:52:37
#58824
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
RXGOMES 05/01/2005 16:04:12
#58826
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
USUARIO.EXCLUIDOS 05/01/2005 16:04:21
#58827
Resposta escolhida
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)
...
Tópico encerrado , respostas não são mais permitidas