overcloked Posted April 30, 2006 at 09:54 PM Report #25009 Posted April 30, 2006 at 09:54 PM 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
PuTeFabiO Posted May 4, 2006 at 08:23 PM Report #25684 Posted May 4, 2006 at 08:23 PM 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
overcloked Posted May 4, 2006 at 08:31 PM Author Report #25686 Posted May 4, 2006 at 08:31 PM 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 😄
PuTeFabiO Posted May 5, 2006 at 09:16 AM Report #25736 Posted May 5, 2006 at 09:16 AM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now