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

Sign in to follow this  
Pedr01

Erro no acesso á base de dados

Recommended Posts

Pedr01

Boa noite!

Isto é assim eu sou aluno do 12º ano e frequento o curso profissional de técnico de Gestão, E no final dos 3 anos de curso temos que fazer a PaP(Prova de Aptidão Profissional) e só tendo a mesma positiva é que receberemos o diploma com o prémio de fim de curso.

Bem eu para a minha PaP vou fazer uma aplicação de Gestão de venda de productos informáticos, tipo a worten ou a box, mas claro em termos de tamanho é mini xD

E gostava que podesse ter este tópico aqui aberto para ir pondo aqui as minhas duvidas e erros que me vão aparecendo para me irem ajudando...

Bem como programa para a minha base de dados estou a usar o sql server 2008 utilizando o visual basic para a manusear.

e em termos de base de dados já tenho tudo feito, mas agora que comecei a programar acerio é que isto ta mal ^^

Bem então comecei por tentar adicionar clientes na base de dados, a tabela clientes que recebe todos os valores do programa que o utilizador digita, menos o codigo postal que vem numa tabela aparte, ou seja a tabela cliente relaciona se com a codigo postal, de forma a ter todos os codigos postais numa combobox para o utilizador la ir buscar.

tenho o seguinte código:

Private Sub Novo_Cliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  
        Dim adapter_codigopostal As New GesturoDBDataSetTableAdapters.Codigo_PostalTableAdapter
        Dim tb_codigo_postal As New GesturoDBDataSet.Codigo_PostalDataTable
        adapter_codigopostal.Fill(tb_codigo_postal)
        Dim Codigo As DataRow
        For Each Codigo In tb_codigo_postal.Rows
            Codigo_PostalComboBox.Items.Add(Codigo.Item(0))
        Next

    End Sub

PS: Esta parte serve para quando  o form novo_cliente é carregado vaia buscar a tabela codigopostal os valores a meter na combobox para o utilizador possa selecionar o que deseja.

 Private Sub Avançar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Avançar.Click

        Dim contribuinte As Integer
        Dim nome As String
        Dim telefone As Integer
        Dim email As String
        Dim codigopostal As Integer
        Dim morada As String
        contribuinte = N_ContribuinteMaskedTextBox.Text
        nome = NomeTextBox.Text
        telefone = TelefoneMaskedTextBox.Text
        email = E_mailTextBox.Text
        codigopostal = Codigo_PostalComboBox.Text
        morada = MoradaTextBox.Text
        Const constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Pedro Fernandes\Desktop\my precious\escola\PRojecto final de curso\Gesturo\Gesturo\GesturoDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim db As New SqlConnection(constr)
        db.Open()

        Dim Varsql As String
       
        Varsql = "INSERT INTO Cliente(N_Contribuinte,Nome,Telefone,E_mail,morada) VALUES(@N_ContribuinteMaskedTextBox,@NomeTextBox,@TelefoneMaskedTextBox,@E_mailTextBox,@MoradaTextBox)"
        Dim cmd As New SqlCommand(Varsql, db)
        cmd.Parameters.Add("@N_ContribuinteMaskedTextBox", SqlDbType.Int).Value = contribuinte
        cmd.Parameters.Add("@NomeTextBox", SqlDbType.VarChar).Value = nome
        cmd.Parameters.Add("@TelefoneMaskedTextBox", SqlDbType.Int).Value = telefone
        cmd.Parameters.Add("@E_mailTextBox", SqlDbType.VarChar).Value = email
        cmd.Parameters.Add("@Codigo_PostalComboBox", SqlDbType.Int).Value = Codigo_PostalComboBox.Text
        cmd.Parameters.Add("@MoradaTextBox", SqlDbType.VarChar).Value = morada
        cmd.ExecuteNonQuery()
        db.Close()
        Me.Close()

      

    End Sub

PS: esta Parte é para adicionar Valores na base de dados!

Até aqui tudo Bem, mas quando vou correr o programa e acesso á base de dados da me o seguinte erro:

ConstraintException was unhandled:

Falha ao activar restrições. Uma ou mais linhas contêm valores que violam restrições não nulas, exclusivas ou de chave externa.

Erro este na parte do load  do form, quando estou a fazer o código para ir buscar os valores á tabela codigo postal, ja tentei de tudo, ja fui a BD tirar e por os allow nulls activos e desactivos vezes sem conta, e mexi e remexi e da sempre o mesmo erro.

mas o engrançado é que se eu for a tabela clientes e meter o codigo postal como nulo, e na parte do codigo puser em comentario tudo aquilo que tem haver com o codigopostal e correr o programa já consigo adicionar coisas na tabela, o que me leva a crer que o erro deve estar nas ligações entre as tabelas clientes e codigo postal, mas não sei...

portanto se alguem me puder dar uma ajuda nisto força :)

se não perceberem algo digam ^^

Share this post


Link to post
Share on other sites
M!Gu3L

Boas,

Olha eu nunca usei o sql para fazer base de dados, utilizei sempre o Access, mas fiz uma coisa semelhante à tua mas num programa de Simulação de uma MAquina de Vendas Automaticas, ainda em construção, (PAP). A situação era por os nomes das Categorias dos produtos numa combobox e depois aplicar um filtro com o CodCategoria.

Utilizei uma variavel do tipo Data.DataRow e o conteudo da Combobox era o resultado duma consulta feita no Access onde so mostrava as Categorias, logo o CodCategoria nao aparecia.

A variavel faz um select da consulta e apena armazena os valores referente aquela Categoria, pois as categorias nao se repetem.

Ex:

Dim testacat() As Data.DataRow 
testacat = Me.MaquinaAutoDataSet.Tables("Categorias").Select("Categoria = '" & CategoriaComboBox.Text & "'")
Me.ProdutosBindingSource.Filter = "CodCategoria = '" & testacat(0).Item(0).ToString() & "' and Nome like '*" & txtnome.Text & "*'"

Penso que é semelhante o que queres fazer, mas em vez de o usares para filtragem usas o valor da variavel para adicionares dados.

Espero ter ajudo.

Share this post


Link to post
Share on other sites
Pedr01

Hummm ja esta ^^

eliminei a tabela codigo_postal, e vou meter tudo na altura em que registar, ja que a tabela nao era fundamental...

agora ja consigo adicionar produtos e tudo ^^

agora peço que deixem o topico aberto, para se eu for tendo duvidas ir colocando aqui ^^

Share this post


Link to post
Share on other sites
duduml

Penso que deverias colocar as dúvidas noutros tópicos...pois con certeza que serão diferentes das deste titulo...:D


"use windows, você merece!"

Share this post


Link to post
Share on other sites
Pedr01

Mas este não era o titulo que tinha, o original foi modificado pelos moderadores...

o titulo era : Projecto Final De Curso - SoS Portugal a Programar...

Share this post


Link to post
Share on other sites
ciganofcp

Mais um a fazer a pap, e por engraçado que seja tem um projecto parecido com o meu mas o meu tem login  :cheesygrin:

Depois deixa ai uns prints de como ja vao as coisas...

Share this post


Link to post
Share on other sites
Pedr01

o meu tambem tem login, não tenho é tabela para utilizadores...

primeiro quero conseguir fazer o basico do programa, ou seja, adicionar produtos, clientes e fornecedores e conseguir vender produtos ao cliente e compralos ao fornecedor...

depois disso a trabalhar a 5* logo penso em fazer utilizadores com permissoes diferentes e blablabla

Share this post


Link to post
Share on other sites
Pedr01

Bem mais uma duvida:

na tabela produtos tenho uma parte que é para inserir a imagem de um produto  na BD, na BD tenho o campo Imagem_Produto com a propriadade image, o codigo que tenho é o seguinte:

        Dim ImageDialog As New OpenFileDialog()

        ImageDialog.InitialDirectory = "c:\"

        ImageDialog.Filter = "Image Files|*.jpg;*.gif;*.bmp;*.png;*.jpeg|All Files|*.*"

        ImageDialog.FilterIndex = 2

        ImageDialog.RestoreDirectory = True

        If ImageDialog.ShowDialog() = DialogResult.OK Then

            PictureBox1.Image = Image.FromFile(ImageDialog.FileName)

        End If

PS: Este tenho no botao para procurar imagem que serve para ir buscar a imagem ao sistema.

Dim ImagemProduto As Image

ImagemProduto = PictureBox1.Image

  Const constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Pedro Fernandes\Desktop\my precious\escola\PRojecto final de curso\Gesturo\Gesturo\GesturoDB.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

        Dim db As New SqlConnection(constr)

        db.Open()

        Dim Varsql As String

Varsql = "INSERT INTO Produto(Imagem_Produto) VALUES(@PictureBox1)"

Dim cmd As New SqlCommand(Varsql, db)

cmd.Parameters.Add("@PictureBox1", SqlDbType.Image).Value = ImagemProduto

cmd.ExecuteNonQuery()

        db.Close()

        Me.Close()

Bem este aqui é o codigo que tenho no botao para inserir as cenas na tabela produto, não meti aqui o codgio todo(ou seja das outras coisas a inserir na BD porque so ia ocupar espaço) e isto supostamentedeveria inserir a imagem do produto na BD, eu tenho o campo Imagem_produto na BD como allows nulls, e quando não tento inserir nenhuma imagem, não me da qualquer erro, mas quando tento inserir sai isto :

kbrseb.png

bem eu tive por ai á procura na net, e o que vi foi muitas linhas de código em que pouco ou nada percebi, portanto se alguem conseguir ajudar força :thumbsup:

Share this post


Link to post
Share on other sites
pmaster

Só uma pequena nota.

Não é aconselhável gravares imagens na base de dados, porque assim vais sobre-carregar a tua base de dados. De modos que aconselho a gravares apenas o caminho para a imagem, por exemplo:

"C:\Documents and Settings\user\Os meus documentos\As minhas imagens\img.jpg"

Depois só tens de ler o caminho de onde está a imagem e não carregar-la da base de dados.

Quando tiveres muitas imagens e procurares uma, vais ver que o sistema fica bem mais lento. E desta maneira não tens problemas e ficas com um BD muito mais leve.

 

Share this post


Link to post
Share on other sites
Pedr01

tirando isso da imagem que estou a tentar descodificar o codigo para o que quero mesmo fazer ^^

em todas as tabelas ja fiz inserção de dados, consultas , alterações e eliminação de dados...

depois disso

agora sim posso dizer que estou ás aranhas, agora não sei mesmo o que fazer pois vou para a parte de fazer a venda de produtos ao cliente, e a cena de selecionar o produto, fazer a multiplicação dos valores do preço base, do iva e da margem de lucro para obter o preço final... fazer a selecção do cliente a quem vou fazer a venda, fazer a "impressão" do recibo, e depois disso tudo actualizar varias tabelas e blablabla, tou mesmo as aranhas porque acho que cheguei até aquela parte ao limite dos meus conhecimentos, tal como a minha professora chegou aos dela, e agora recebi a resposta " pois agora tens que procurar por ti! desenrascate"

sinceramente estou completamente as aranhas, a desesperar ^^

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.