Olá, estou com o seguinte problema para inserção de Pessoa Física no banco (Access):
Quando vou inserir um novo cadastro, ele testa o CPF. Se existir igual, retorna. Mas o sistema tem que deixar cadastrar vazios também, ou seja, cadastros sem CPF. O problema é que já existem vazios lá, portanto ele sempre retorna, por causa do teste do CPF igual (vazio).
Vou colocar como estava e como eu tentei fazer, se alguém tiver uma sacada que funcione, peço aqui esta ajuda.
O que estava:
q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' AND vigencia_ate = #01/01/1900#"
'Aqui eu tentei:
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF is null AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF isnull AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF not is null AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF not isnull AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF <> '' AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF <> '""' AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF = '' AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF = '""' AND vigencia_ate = #01/01/1900#"
'nada deu certo, sempre não deixa cadastrar, continuando:
If Servidor = "Produção" then
rseq.source = q
rseq.CursorType = 0
rseq.CursorLocation = 3
rseq.LockType = 1
rseq.Open()
Else
rseq.open q, rseq, 3
End If
if rseq.eof then
sql = "INSERT INTO tb_pessoa_fisica (cpf,id_titulo,nome,area_especializacao,vigencia_de,vigencia_ate,observacao) VALUES ('" & cpf & "'," & titulo & ",'" & nome & "','" & especializacao & "','" & date & "','" & "01/01/1900" & "', '" & obspf & "')"
If Servidor = "Produção" then
rseq2.source = sql
rseq2.CursorType = 0
rseq2.CursorLocation = 3
rseq2.LockType = 1
rseq2.Open()
Else
rseq2.open sql, rseq2, 3
End If
msg = "Pessoa Física cadastrada com sucesso !"
Else
msg = "A Pessoa Física não pode ser cadastrado, pois
já existe uma Pessoa com esse CPF: " & cpf & " !"
End if
Quando vou inserir um novo cadastro, ele testa o CPF. Se existir igual, retorna. Mas o sistema tem que deixar cadastrar vazios também, ou seja, cadastros sem CPF. O problema é que já existem vazios lá, portanto ele sempre retorna, por causa do teste do CPF igual (vazio).
Vou colocar como estava e como eu tentei fazer, se alguém tiver uma sacada que funcione, peço aqui esta ajuda.
O que estava:
q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' AND vigencia_ate = #01/01/1900#"
'Aqui eu tentei:
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF is null AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF isnull AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF not is null AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF not isnull AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF <> '' AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF <> '""' AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF = '' AND vigencia_ate = #01/01/1900#"
'q = "SELECT * from tb_pessoa_fisica where CPF = '" & cpf & "' OR CPF = '""' AND vigencia_ate = #01/01/1900#"
'nada deu certo, sempre não deixa cadastrar, continuando:
If Servidor = "Produção" then
rseq.source = q
rseq.CursorType = 0
rseq.CursorLocation = 3
rseq.LockType = 1
rseq.Open()
Else
rseq.open q, rseq, 3
End If
if rseq.eof then
sql = "INSERT INTO tb_pessoa_fisica (cpf,id_titulo,nome,area_especializacao,vigencia_de,vigencia_ate,observacao) VALUES ('" & cpf & "'," & titulo & ",'" & nome & "','" & especializacao & "','" & date & "','" & "01/01/1900" & "', '" & obspf & "')"
If Servidor = "Produção" then
rseq2.source = sql
rseq2.CursorType = 0
rseq2.CursorLocation = 3
rseq2.LockType = 1
rseq2.Open()
Else
rseq2.open sql, rseq2, 3
End If
msg = "Pessoa Física cadastrada com sucesso !"
Else
msg = "A Pessoa Física não pode ser cadastrado, pois
já existe uma Pessoa com esse CPF: " & cpf & " !"
End if