• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

yekxmerr

Erro de valores NULL

35 mensagens neste tópico

Boas tenho um problema que me está a dar cabo da cabeça, passa-se o seguinte:

A minha base de dados foi criada em SQL, tenho várias tabelas alunos , codpostal, etc e tenho um formulário que faz criação de alunos, dados , etc. Então tenho o seguinte:

- 2 caixas de texto ( não ligadas á base de dados ) que é para inserir o código postal

- 1 Caixa de texto ligada a base de dados que indica a localidade do código postal

- 1 Caixa de texto ligada a base de dados que tem o código chave, do código postal.

Então tenho um código que faz o seguinte: Eu insiro o código postal nas 2 caixas de texto ( " 3000 " "200" ) e após perder o focus, ele faz uma procura na tabela de código postal e dá-me a localidade, e também a chave do código postal, e envia para 2 caixas de texto.

Na de alunos, tenho o campo de código postal para não aceitar valores nulos. Tou a utilizar um tipo de dados Integer.

O código é o seguinte:

    Private Sub Button_PaisCodPostal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_PaisCodPostal.Click
        Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BaseDados.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim SQL As String = "SELECT Cod_Postal,[Cod1], [Cod2], Localidade FROM CodigoPostal WHERE [Cod1] = '" & Me.txt_paiscodpostal1.Text & "' AND [cod2] = '" & Me.txt_paiscodpostal2.Text & "'"
        Dim connection As New SqlConnection(myConnectionString)
        Dim command As New SqlCommand(SQL, connection)

        Try
            connection.Open()
        Catch myerror As SqlException
            MessageBox.Show("Erro a conectar a base de dados: " & myerror.Message)
        End Try

        Dim reader As SqlDataReader = command.ExecuteReader()
        If reader.HasRows Then
            reader.Read()
            Me.LocalidadeTextBox1.Text = (Convert.ToString(reader(3)))
            Me.Cod_PostalTextBox1.Text = (Convert.ToString(reader(0)))
        Else
            MessageBox.Show("Necessita de inserir um código postal.", "Erro")
        End If
    End Sub

Só um pequeno detalhe, este código está dentro de um botão, e quando as caixas de texto do código postal perdem o focus, clicka no botão.

Tenho o seguinte erro quando tento guardar dados: " Cod_Postal não aceita valores nulos " , isto é referente a tabela de alunos na base de dados. Mas o dilema é o seguinte, as caixas de texto estão todas preenchidas com os valores todos, está tudo como devia estar, portanto não estou a perceber isto.

Isto está um bocado confuso, desculpem lá mas não é fácil me explicar. Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para gravar tenho um binding navigator normal que guarda os registos na bd. O botão guardar apenas faz-m o fill dos dados na tabela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha pergunta é, será que está alguma coisa errada no meu código ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A minha pergunta é, será que está alguma coisa errada no meu código ?

A tua pergunta é sobre um erro ao gravar, e não mostraste código para gravar.

O outro está a funcionar ? Não sei, tens algum erro ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O erro que me dá é: Quando tento gravar, para gravar uzo apenas o butão de gravar no binding navigator, dá-me o erro que o campo cod_postal não aceita valores nulos, e a caixa de texto tem lá valores :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Alguem me sabe ajudar, numa outra maneira de fazer aquele código. É que tenho erros "estúpidos" , e ter a minha aplicação toda num só formulário devido ás tabs, não ajuda muito isto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O erro que me dá é: Quando tento gravar, para gravar uzo apenas o butão de gravar no binding navigator, dá-me o erro que o campo cod_postal não aceita valores nulos, e a caixa de texto tem lá valores :S

E o campo está bem associado ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim :P , os dados apareçem todos tudo como devia estar. Mas ao guardar o campo tem la dados, e dá-me erro que não tem, portanto desconfio que seja do código que tou a utilizar para fazer a verificação do código postal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E o erro dá-te a gravar ou a ir buscar os dados ?

O que fica em LocalidadeTextBox1 e em Cod_PostalTextBox1 ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sao os campos da base de dados. E o butão de guardar não faz nada, so quando carrego no de adicionar novo registo é que ele faz alguma coisa. Já estou a desperar com isto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom, descobri que o problema não é do código mas sim da base de dados. Criei um formulário em branco, e arrastei os campos do data source e tentei gravar um registo, e deu o mesmo erro. Portanto leva-me a crer que o problema é da base de dados, mas não consegui descobrir qual o problema. Gostaria de saber se me é permitido colocar aqui um link com a base de dados para ver se alguém me consegue ajudar ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gostaria de saber se me é permitido colocar aqui um link com a base de dados para ver se alguém me consegue ajudar ?

Sim podes!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por acaso estas a preencher o campo cod_postal??

O erro parece-me bastante explicito

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou o prob é esse. Dá-me erro que a caixa de texto não tem valores, mas tem :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, estou a ter um prob com uma notificação de Tabs:

Tenho um botão para adicionar uma tab, e quando clicko tenho o seguinte código:

        Dim CriarPais As TabPage = Tab_CriarPais
        VerificarTab = CriarPais.Visible
        CriarPais.Visible = VerificarTab

        If VerificarTab = True Then
            MessageBox.Show("Este formulário já se encontra aberto.", "Avizo")
        Else
            TabControl1.Controls.Add(Tab_CriarPais)
            TabControl1.SelectedTab = Tab_CriarPais
            CodigoPostalTableAdapter.Fill(Me.CodigoPostalDataSet.CodigoPostal)
        End If

Isto é para verificar se a tab está aberta , e se estiver não abre outra igual. Mas quando a fecho, já nao consigo abrir novamente,.diz que a tab já esta aberta

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

VerificarTab = CriarPais.Visible

CriarPais.Visible = VerificarTab

?

Tu queres ver se é aquela que esta a ser vizualizada no ecrã?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nepia. Sou tão calhau ... lol . Quer apenas verificar se a tab está aberta, e se estiver não abre e dá a mensagem de erro

O "VerificarTab" é uma variavel bolean que declarei

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para remover tab utilizo:

        TabControl1.Controls.Remove(Tab_CriarPais)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

If TabControl1.TabPages.Contains(Tab_CriarPais) Then

End If

Para apagar:

TabControl1.TabPages.Remove(Tab_CriarPais)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

És o maior ! :) Funcionou, só me falta o problema da base de dados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se fores inserir directamente os dados la na base de dados dá erro tambem certo?

Se deu, inseris-te algum valor no cod_postal ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

volto a repetir

Se deu, inseris-te algum valor no cod_postal ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora