Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Pedr01

Erro no acesso á base de dados

Mensagens Recomendadas

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 ^^

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 ^^

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 ^^

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.