Jump to content

Recommended Posts

Posted

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

Posted

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

Posted

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 😄

Posted

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

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
×
×
  • Create New...

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.