ERRO QUANDO CAMPO ESTA EM BRANCO

EDERSONARRUDA2 12/01/2010 21:42:06
#331726
Olá pessoal!
Estou com um problema: na hora de salvar osa dados para o banco de dados ele dá erro se deixo algum campo em branco, o que pode ser feito?

Seuge a aixo instrução utilizada


Private Sub I_SALVA_Click()
[ô]INSERE DADOS
Set CNN = New ADODB.Connection [ô] CONEXÃO COM O ARQUIVO
Set RS = New ADODB.Recordset [ô] CONEXÃO COM A TABELA
[ô]FAZER A CONEXÃO COM O BANCO DE DADOS
SQL = App.Path & [Ô]\BANCO\ATL.mdb[Ô]
CNN.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & SQL & [Ô];Jet OLEDB:Database Password=REDE;[Ô]
Set RS = CNN.Execute([Ô] INSERT INTO ATLETAS (RG,DATA,NOME) VALUES ([ô][Ô] & I_RG.Text & [Ô][ô] ,[ô][Ô] & I_DATA.Text & [Ô][ô] , [ô][Ô] & I_NOME.Text & [Ô][ô])[Ô])
[ô]ORDENAR BANCO DE DADOS PELO NOME
Set RS = CNN.Execute([Ô]SELECT * FROM ATLETAS ORDER BY NOME[Ô])
End Sub
SAMUKA 12/01/2010 21:51:29
#331728
Provavelmente os campos do BD não permitem campo em branco.

Uma sugestão é vc testar os valores dos TextBox antes de tentar salvar
DANIKULL 12/01/2010 23:23:45
#331734
EDERSONARRUDA2, boa noite.

Uma alternativa que criei foi o seguinte:
Campo null NÃO são campos em branco, certo???
Espaço é um caractere certo???
Então o que eu fiz foi definir em todos os campos do tipo texto um certa quantidade de espaços, tipo uns 10 e para campos numéricos na gravação testo se é null o textbox e salvo com zero, caso seja true, ok???

Crie a seguinte rotina:

Public Sub SelecionaTexto(obj As TextBox)
obj.SelStart = 0
obj.SelLength = Len(obj.Text)
End Sub


Vá na property text e defina os espaços para o campo e no evento goto_focus você chama a funlção


Private Sub Text1_GotFocus()
Call SelecionaTexto(Text1)
End Sub


Como funciona:

No caso do Access ele não testa se o campo esta com “caractere válido” e não retorna null na pesquisa. Quando o ponteiro seta o campo ele seleciona todo o conteúdo e basta digitar para que o novo valor entre na textbox.

Esta é minha opinião, ok???

Qualquer dúvida posta ai novamente.


PEGUDO 14/01/2010 11:34:27
#331865
Se o campo, do banco de dados, for configurado para não permitir valores nulos e você não puder reconfigurá-lo,
tenta colocar uma instrução IF...THEN, que avise que não pode haver campos vazios, assim, antes de dar erro,
o programa vai avisar que há campos vazios.

Se realmente puder ficar algum campo em branco, tenta colocar um tratamento de erro, como:

[txt-color=#0000f0]On Error GoTo [/txt-color]erro
[txt-color=#007100][ô]Seu código aqui[/txt-color]
erro:

Espero ter ajudado.
LEANDRO 14/01/2010 12:11:50
#331867
Partindo do Principio que Nulo é DIFERENTE de Branco.
Como o PEGUDO disse, você tem duas opções.
1) Reconfigurar a Base de Dados aceitar Brancos.
2) Fazer um Tratamento no proprio codigo
MARCELO.TREZE 14/01/2010 12:26:20
#331871
por via das duvidas tente

Private Sub I_SALVA_Click()
[ô]INSERE DADOS
Set CNN = New ADODB.Connection [ô] CONEXÃO COM O ARQUIVO
Set RS = New ADODB.Recordset [ô] CONEXÃO COM A TABELA
[ô]FAZER A CONEXÃO COM O BANCO DE DADOS
SQL = App.Path & [Ô]\BANCO\ATL.mdb[Ô]
CNN.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & SQL & [Ô];Jet OLEDB:Database Password=REDE;[Ô]
Set RS = CNN.Execute([Ô] INSERT INTO ATLETAS (RG,DATA,NOME) VALUES ([ô][Ô] & IIf(I_RG.Text = [Ô][Ô], Null, I_RG.Text ) & [Ô][ô] ,[ô][Ô] & IIf(I_DATA.Text = [Ô][Ô], Null, I_DATA.Text) & [Ô][ô] , [ô][Ô] & IIf(I_NOME.Text = [Ô][Ô], Null, I_NOME.Text) & [Ô][ô])[Ô])
[ô]ORDENAR BANCO DE DADOS PELO NOME
Set RS = CNN.Execute([Ô]SELECT * FROM ATLETAS ORDER BY NOME[Ô])
End Sub

Tópico encerrado , respostas não são mais permitidas