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

devin

Datagridview e MySQL - apresentar valores de duas tables

15 mensagens neste tópico

boas pessoal.

vou directo ao assunto. tenho uma datagrid que quero que apresente valores e um campo é o ID de reparação e outro é o Nome de cliente. este nome de cliente está ligado através de uma foreign key que liga a tabela de reparações e a clientes que é o IDCliente. eu quero nessa datagrid apresentar o ID da reparação e o nome do cliente só que para isso tenho que fazer uma maneira de ir buscar o nome através do ID cliente que está associado à reparação.

e não estou a ver como fazer.

obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso faz-se com um inner join com a tabela à qual pertence a foreign key...

Dependendo da metodologia que estas a utilizar, nomeadamente se estás a usar os objectos automátios, a melhor opção é criares uma view, query, ou consulta... como lhe querias chamar, e basear o dataset nessa consulta...

Por outro lado, se estiveres a preencher a datgrid à unha... podes fazer o inner join directamente na instrução de SQL.

QQ coisa... posta ai

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, estou a fazer o preenchimento à la pata. já que o express tem limitações quanto à utilização do MySQL. eu não sei muito bem utilizar o inner. se puderes mostrar alguma exemplo do género senão o Google faz-me companhia  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

parece que agora o problema está em mostrar o resultado do select na datagrid. nem sei como começar. mas deixo aqui o código do select para certeficar que ao menos isso está correcto

SELECT IDReparacao FROM reparacoes;" + "SELECT Cnome FROM clientes INNER JOIN reparacoes ON clientes.IDCliente=reparacoes.IDCliente

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT rep.IDReparacao, clt.nome_do_cliente FROM reparacoes rep INNER JOIN clientes clt ON rep.IDCliente=clt.IDCliente

coisa menos coisa...deve ficar assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora a minha dúvida é como meter isto na datagrid através de código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como e que carregas a datagridview? no blog do paulino acho ue tens la um exemplo como e que fazes isso com objectos criados por ti...inclusive o dito reader

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu consigo ler. mas desta vez não.

       Dim cmd1 As MySql.Data.MySqlClient.MySqlCommand
        cmd1 = New MySql.Data.MySqlClient.MySqlCommand
        cmd1.Connection = connection1
        cmd1.CommandText = "SELECT rep.IDReparacao, clt.Cnome FROM reparacoes rep INNER JOIN clientes clt ON rep.IDCliente=clt.IDCliente"

        dataAdapter1.SelectCommand = cmd1
        connection1.Open()
        dataAdapter1.Fill(dsGridReparacao)
        connection1.Close()
        dgvListarReparacoes.DataSource = dsGridReparacao

        dgvListarReparacoes.Columns(0).Width = 80
        dgvListarReparacoes.Columns(0).HeaderText = "ID"
        dgvListarReparacoes.Columns(1).Width = 375
        dgvListarReparacoes.Columns(1).HeaderText = "Cliente"

dá-me erro na parte do dgvListarReparacoes.Columns(0).Width=80 diz "O índice estava fora do intervalo. Tem de ser não negativo e inferior ao tamanho da colecção. Nome do parâmetro: index"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois de: dgvListarReparacoes.DataSource = dsGridReparacao

falta: dgvListarReparacoes.DataBind()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

convém lembrar que isto é uma datagridview. desculpem. por isso databind, pelo menos da maneira que definiste bruno, não faz parte do datagridview.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e está resolvido bastou trocar

dgvListarReparacoes.DataSource = dsGridReparacao

por

 dgvListarReparacoes.DataSource = dsGridReparacao.Tables(0)

obrigado pela ajuda pessoal.

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