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

overcloked

[VB 2005] Duvida no DataGridView

4 mensagens neste tópico

Boas ppl,

tou aqui a tentar uma coisa com o DataGridView que n tou a conseguir.

Alguem sabe como fazer aparecer colunas de tabelas diferentes usando as ligações relacionais?

Mas concretamente o que quero fazer é:

Tenho 2 tabelas a tabela Encomendas e a Tabela Clientes ambas relacionam-se atravez da coluna ID_Cliente

O que quero fazer é mostrar as colunas TabEncomendas.ID_Encomenda, TabEncomendas.DataHora, TabClientes.CodigoPostal já tenho a query que é

"SELECT TabEncomendas.ID_Encomenda, TabEncomendas.DataHora, TabClientes.CodigoPostal  FROM TabEncomendas, TabClientes WHERE (tabEncomendas.ID_Cliente = TabClientes.ID_Cliente) ORDER BY TabEncomendas.ID_Encomenda DESC"

mas n consigo fazer com que o DataGridView me mostre estas colunas só consigo se tiver tudo na mesma tabela....

Alguma ideia?

Tks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ola tudo bem.

entao fazes assim:

crias um adapter e defines a query dele "select * from encomendas", nao podes fazer logo inner joins aki pq senao ele n consegue gerar as instrucoes de insert update e delete

dpx geras um dataset

associas a grid a esse dataset

dpx em programacao fazes:

adapter.selectcommand.comandtext= "akilo ke ali tens em cima"

adapter.selectcommand.comantype=...text

adapter.fill(dataset.encomendas)

e editas o dataset em design e adicionas os campos ke faltam

por exemplo tens um select id, descricao from encomendas e keres fazer

select e.id, e.descricao, c.nome from _encomendas as e

inner join clientes as c on c.id=e.idencomenda

este select devolve um campo "nome" ke nao está na tabela encomendas, logo tens de adicionar no dataset essa coluna nome

atencao ao case sensitive se o select devolve nome mete mesmo nome no dataset e nao "Nome"

e voila quando fizeres o fill do dataset em programacao ele mete la tudo na grid

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tks PuTeFabiO acabei por resolver o problema com um listView com o seguinte codigo:

        conn.ConnectionString = "data source=vmwareserver;initial catalog=MercoFarma;persist security info=False;user id=admin;password=admin"
        cmd.CommandText = "SELECT TabEncomendas.ID_Encomenda, TabEncomendas.DataHora, TabClientes.CodigoPostal  FROM TabEncomendas, TabClientes WHERE (tabEncomendas.ID_Cliente = TabClientes.ID_Cliente) ORDER BY TabEncomendas.DataHora ASC"
        cmd.Connection = conn

        Me.EncomendasListView.Items.Clear()

        Dim reader As DbDataReader = Nothing
        Try
            conn.Open()
            reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

            Dim itmListItem As ListViewItem
            Dim strTeste As String
            Dim cnt As Short

            'percorre os dados do datareader e preenche o listview
            Do While reader.Read
                itmListItem = New ListViewItem
                strTeste = IIf(reader.IsDBNull(0), "", reader.GetValue(0))
                itmListItem.Text = strTeste

                If SelectEstado(reader.GetValue(0)) = 0 Then
                    For cnt = 1 To reader.FieldCount() - 1
                        If reader.IsDBNull(cnt) Then itmListItem.SubItems.Add("")
                        'DONE Por a data Como hh/mm/ss
                        If IsNumeric(reader.GetValue(cnt)) Then
                            itmListItem.SubItems.Add(reader.GetValue(cnt))
                        ElseIf IsDate(reader.GetValue(cnt)) Then
                            itmListItem.SubItems.Add(FormatDateTime(reader.GetDateTime(cnt), DateFormat.ShortTime))
                        Else
                            itmListItem.SubItems.Add(reader.GetString(cnt))
                        End If
                    Next cnt
                End If
                Me.EncomendasListView.Items.Add(itmListItem)

            Loop

        Catch ex As Exception
        Finally
            reader.Close()
            conn.Close()
        End Try

De qq modo obrigado, assim ja sei como se faz atravez do datasource :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya podias usar os databinding sources e por exemplo por combos dentro da grid e relacionar os id dos clientes com a sua descricao atraves do binding sources..

mas isso em vb2005 ás xs dá bandeira, se apagares os binding sources perdes o designer..enfim uma porkaria, o design do 2005 ás xs passa-se, tens de ter cuidado com isso

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