ERRO QUANDO CAMPO ESTA EM BRANCO
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
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
Provavelmente os campos do BD não permitem campo em branco.
Uma sugestão é vc testar os valores dos TextBox antes de tentar salvar
Uma sugestão é vc testar os valores dos TextBox antes de tentar salvar
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:
Vá na property text e defina os espaços para o campo e no evento goto_focus você chama a funlção
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.
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.
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.
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.
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
Como o PEGUDO disse, você tem duas opções.
1) Reconfigurar a Base de Dados aceitar Brancos.
2) Fazer um Tratamento no proprio codigo
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