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

edferreira

[vb2005] possivel criar array dentro de uma coluna do mysql?

9 mensagens neste tópico

Antes de mais boas,

Estou com um problema. Estou a desenvolver uma aplicação em vb, e cheguei ao ponto onde preciso de guardar numa base de dados mysql informações relativas a facturas. Ora uma factura tem vários produtos associados a ela, produtos esses que também são uma tabela no mysql com vários dados.

O meu problema é como vou guardar as informações relativas aos produtos na tabela das facturas, tendo em conta que o numero de produtos de uma factura é variavel.

Dito por linguagem leiga o que pretendia era guardar a tabela produtos dentro de um campo da tabela factura. Não sei se isto é possivel.

Agradecia ajuda, ou então sugestões de como contornar o problema.

Desde já obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso é uma típica relação 1-n

o que fazes é que na tabela factura tens a chave, por exemplo, idFactura, e na tabela produtos, para além da chave primária idProduto, tens a chave estrangeira idFactura

depois quando quiseres ver que produtos tem a factura x, fazes algo do género:

select *
from factura, produtos
where factura.idFactura = produtos.idFactura
and idFactura = :numero;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi bem isso. Na tabela produtos para cada produto teria um idfactura relativo a cada factura que eles pertencem é isso?

Não sei se será muito correcto mas se eu na tabela factura tiver um campo onde guardo as referencias dos produtos pertencentes a mesma separados por ";" torna-se uma solução muito incorrecta? penso que resolveria o meu problema, não estou a ver é se me vai trazer problemas depois.

Dêm-me a vossa opiniao pf.

Mais uma vez obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi bem isso. Na tabela produtos para cada produto teria um idfactura relativo a cada factura que eles pertencem é isso?

É exactamente isso

Não sei se será muito correcto mas se eu na tabela factura tiver um campo onde guardo as referencias dos produtos pertencentes a mesma separados por ";" torna-se uma solução muito incorrecta? penso que resolveria o meu problema, não estou a ver é se me vai trazer problemas depois.

De facto é uma solução muito incorrecta. Estás a usar uma base de dados para guardar a informação, mas ao mesmo tempo estás a descartar as vantagens que ter uma base de dados te proporciona. Enquanto que se fizeres da maneira correcta podes ir buscar a lista de produtos de uma determinada factura com um select, da maneira incorrecta tens de ir buscar o campo que tem as referências separadas por ponto e virgula, depois fazer um parsing para separar as referências umas das outras, e depois um select para cada referência para ir buscar o produto. Tenta implementar da maneira correcta, só tens vantagens e estamos cá no caso de chocares com dificuldades.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente a outra solução é melhor.

Mas o que eu não percebi é que um produto vai pertencer a várias facturas, logo no campo idfactura vai ter mais de um "id", voltando aparentemente a solução que eu tinha questionado se era correcta.

Desculpem estar a fazer tantas perguntas mas estou mesmo enrrascado com isto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu optava mais por 3 tabelas. Uma de produtos, uma de facturas e outra de produtos/facturas...

produtos > id, descricao, blabla

factura > id, blablabla

produtos/facturas > id_factura, id_produto, preço, iva, blablabla

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas o que eu não percebi é que um produto vai pertencer a várias facturas, logo no campo idfactura vai ter mais de um "id", voltando aparentemente a solução que eu tinha questionado se era correcta.

nesse caso a relação entre as duas tabelas é n-n, a solução é portanto uma terceira tabela, como apontado pelo Tiago

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

so mais uma duvida, já não é relacionada com o tema mas gostaria de saber. Para realizar a factura o utilizador vai introduzindo as referencias do produto. Eu gostaria que não existi-se limite para os produtos a ser introduzidos, para isso tenho de arranjar uma forma que me permita ir acrescentando campos no formulário para receber a referencia.

Como posso fazer isso dinamicamente.

Exemplo:

No formulario aparece UMA textbox para introduzir a referencia.

Depois de introduzida a mesma referencia, a primeira textbox ficara preenchida, aparecendo uma nova em branco, ficando portanto DUAS text box.

e assim sucessivamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para isso ou poes uma Datagridview em modo de edição, para adicionares lá directamente os produtos... ou entao usas textboxes e um botao de inserir, que vai-te adicionar o produto na datagridview, e depois limpa-te as textboxes para nova inserção.

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