dare devil Posted February 12, 2008 Share Posted February 12, 2008 BoasEu tenho uma aplicação feita em C# k me permite gerir uma base de dados em Access, tenho o k preciso a funcionar, agora a minha duvida era saber se é possivel fazer algo do genero de um search para que ele possa procurar algum numa consulta k eu tenha previamente feita.Como por exemplo tenho uma consulta k mostra o tipo, o tamanho, a marca, a cor, etc dos tennis k tenho e se quisesse procura pela marca se era possivel fazer algo desse genero.Agradecia kkl ajuda k fosse possivel.ObrigadoCumprimentos Link to comment Share on other sites More sharing options...
Joca Posted February 12, 2008 Share Posted February 12, 2008 Desculpa o off-topic, mas quando li o título do tópico julguei que querias fazer música em access (C# - Dó Sustenido; Db - Ré Bemol; ambos são a "mesma" nota musical). :PTens alguma query definida no access, ou é tudo feito através da aplicação? Podes criar essa query na DB e usar como botão na aplicação, ou então colocar mesmo o comando em C# para fazer essa query conforme o que colocares na caixa de texto... Link to comment Share on other sites More sharing options...
Revenge Posted February 12, 2008 Share Posted February 12, 2008 Não estou a perceber bem o que queres.Mas tipo se já tens o código feito é básico.Basta fazeres o Query á base de dados a procurar pela "marca" e manda o resultado do Query para um Dataset ou um Datatable.Depois é só ler o Dataset,Depois poses usar pro exemplo o Foreach para percorreres os dados todos do Dataset e manda-los para algum lado. Tipo uma ListView. Link to comment Share on other sites More sharing options...
dare devil Posted February 12, 2008 Author Share Posted February 12, 2008 Não estou a perceber bem o que queres.Mas tipo se já tens o código feito é básico.Basta fazeres o Query á base de dados a procurar pela "marca" e manda o resultado do Query para um Dataset ou um Datatable.Depois é só ler o Dataset,Depois poses usar pro exemplo o Foreach para percorreres os dados todos do Dataset e manda-los para algum lado. Tipo uma ListView.So k o meu problema é k eu n tou a conseguir fazer a query à base dados e manda-la ou para um DataSet ou DataTable e n sei como hei-de usar o Foreach, eu tenho querys k mostram so os dados e funcionam so k se fizer uma query com criterio no access, o C# n a reconhece :s Link to comment Share on other sites More sharing options...
Revenge Posted February 12, 2008 Share Posted February 12, 2008 Não estou a perceber bem o que queres.Mas tipo se já tens o código feito é básico.Basta fazeres o Query á base de dados a procurar pela "marca" e manda o resultado do Query para um Dataset ou um Datatable.Depois é só ler o Dataset,Depois poses usar pro exemplo o Foreach para percorreres os dados todos do Dataset e manda-los para algum lado. Tipo uma ListView.So k o meu problema é k eu n tou a conseguir fazer a query à base dados e manda-la ou para um DataSet ou DataTable e n sei como hei-de usar o Foreach, eu tenho querys k mostram so os dados e funcionam so k se fizer uma query com criterio no access, o C# n a reconhece :sAgora não tenho tempo, mas mais logo explico-te +/- isso. Link to comment Share on other sites More sharing options...
Revenge Posted February 13, 2008 Share Posted February 13, 2008 Bem se queres fazer um pequeno programa em C# que te ligue a uma BD access fazes o seguinte:Crias uma class de conecção à BD, fica mais organizado assim.Vou-te colocar aqui algum código de um pequeno programa que tiev de fazer á uns tempos com ligação a Access.using System;using System.Collections.Generic;using System.Text;using System.Data.OleDb;using System.Windows.Forms;using System.Data;namespace qualquer_coisa{ class conectar {public void db_insert_dados(string query) { OleDbConnection conn = new OleDbConnection(); string connStr; connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"; connStr += @"Data Source= c:\\dados.mdb"; conn.ConnectionString = connStr; conn.Open(); OleDbCommand cmd = new OleDbCommand(); cmd = new OleDbCommand(query, conn); cmd.ExecuteNonQuery(); conn.Close(); }public DataTable db_select_dados(string query) { // Inicia ligação à Base de Dados Access OleDbConnection conn = new OleDbConnection(); string connStr; connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"; connStr += @"Data Source= c:\\dados.mdb"; conn.ConnectionString = connStr; OleDbDataAdapter da = new OleDbDataAdapter(); OleDbCommand dbCommand = new OleDbCommand(); dbCommand.CommandText = query; dbCommand.Connection = conn; DataSet ds = new DataSet(); // Abre LIgação conn.Open(); da.SelectCommand = dbCommand; try { // Preenche DataSet da.Fill(ds); } catch (Exception oBug) { conn.Close(); MessageBox.Show(oBug.Message); } DataTable dt = ds.Tables[0]; conn.Close(); return dt; } }}[/code] Como podes ver tens duas funções nesta classe. Uma para as Query Select. E outra para os outros Querys... Os Insert, Update, Delete etc. Agora na tua class principal, crias lá o Botãozinho onde vais colocar o código do que queres fazer. Tipo Isto: [code]//Faz a leitura do Numero OF string query = "select [OF] from config where id = 1"; conectar con = new conectar(); DataTable dt = con.db_select_dados(query); string of = dt.Rows[0][0].ToString(); Se reparares fiz uma query à BD. E mandei os resultados para uma datatable. Depois mandei o valor que está posição [0][0] para uma string. Tão simples como isso ;) Se quiseres por exemplo mandar todos os valores da Datatable para uma listview. crias uma Listview no teu Form e depois fazes o seguinte: Por baixo do Public Partial Class defines: private ListViewItem li; e depois onde quiseres o seguinte: foreach (DataRow dr in dt.Rows) { li = ListView_Marcacao.Items.Add(dr[1].ToString()); li.SubItems.Add(dr[2].ToString()); li.SubItems.Add(DateTime.Parse(dr[3].ToString()).ToString("dd-MM-yyyy")); li.SubItems.Add(dr[4].ToString()); li.SubItems.Add(dr[5].ToString()); li.SubItems.Add(dr[6].ToString()); li.SubItems.Add(dr[7].ToString()); li.SubItems.Add(dr[8].ToString()); li.SubItems.Add(dr[9].ToString()); li.SubItems.Add(dr[10].ToString()); }[/code]Como podes ver, neste caso tinha 10 colunas. Conforme o numero de colunas que tiveres diminuis ou aumentas os li.SubItems.AddDepois podes brincar com isso de varias maneiras.Isto é o básico. Alguma duvida depois apita ;)Este programinha que nem era muito grande, acabou por custar cerca de 70 mil linhas de código... eheh Link to comment Share on other sites More sharing options...
errors Posted February 13, 2008 Share Posted February 13, 2008 Atençao a uma coisa... não partilhe ligaçoes ah bd, tem atençao a fazeres o close da tua ligaçao e sempre q fores fazer uma nova verificar se a ligaçao esta aberta ou n. toma atençao a uma outra coisa, o c# permite varios tipos d comandos dependendo do q querias "montar". Link to comment Share on other sites More sharing options...
dare devil Posted February 14, 2008 Author Share Posted February 14, 2008 Pelo o k percebi, Revenge, o k esse codigo vai fazer é permitir-me ver o k ta na base de dados e escreve nela. Essa parte ja consigo fazer mas tenho a mostrar numa listbox, o k me falta fazer agora é algo tipo um search. Em k eu escrevo algo numa textbox, tipo a marca de um tenis, e ao carregar num botao ele vai procurar na consulta k tou a usar e mostra os campos tds da consulta mas so os da marca pela a qual procurei. Link to comment Share on other sites More sharing options...
Revenge Posted February 14, 2008 Share Posted February 14, 2008 Pelo o k percebi, Revenge, o k esse codigo vai fazer é permitir-me ver o k ta na base de dados e escreve nela. Essa parte ja consigo fazer mas tenho a mostrar numa listbox, o k me falta fazer agora é algo tipo um search. Em k eu escrevo algo numa textbox, tipo a marca de um tenis, e ao carregar num botao ele vai procurar na consulta k tou a usar e mostra os campos tds da consulta mas so os da marca pela a qual procurei.Isso é simples, mudas a query que fazes à BD, do estilo:query = "select * from dados where tenis like ' + textbox.text + "'";Carregas no botão, ele faz esse query à BD e pronto, retorna-te todos os ténis que tens.Tens outra maneira que é capaz de ser mais lenta mas funciona na mesma.Fazes o tal Foreach que mostrei acima. Mas metes uma condição, se aquela linha for igual a tenis, faz o add à listview, se não for igual, não faz.E assim na listview apenas te vão aparecer os Tenis. Link to comment Share on other sites More sharing options...
Green Hawk Posted February 14, 2008 Share Posted February 14, 2008 Desculpa lá... Mas tb vou mandar a minha posta de pescada!Por exemplo(em SQL, que acess nunca trabalhei):SELECT * FROM Consulta WHERE tennis = "nike tiempo" mandas isto para um dataset e depois é só imprimir a informação.. Em sql isto não tem nada que saber, mas pode ser que em acess seja diferente, não sei! Link to comment Share on other sites More sharing options...
Revenge Posted February 14, 2008 Share Posted February 14, 2008 Desculpa lá... Mas tb vou mandar a minha posta de pescada!Por exemplo(em SQL, que acess nunca trabalhei):SELECT * FROM Consulta WHERE tennis = "nike tiempo" mandas isto para um dataset e depois é só imprimir a informação.. Em sql isto não tem nada que saber, mas pode ser que em acess seja diferente, não sei!É praticamente igual, tem apenas algumas diferenças. Em access em algumas situações tens de colocar o nome do campo entre [] na query. E existe algumas funções que não suporta... Tipo inner joins ou outer joins, entre outras.Na tua query convinha trocares ai o " por ' ehe ;) Link to comment Share on other sites More sharing options...
Green Hawk Posted February 14, 2008 Share Posted February 14, 2008 (edited) Desculpa lá... Mas tb vou mandar a minha posta de pescada!Por exemplo(em SQL, que acess nunca trabalhei):SELECT * FROM Consulta WHERE tennis = 'nike tiempo'" mandas isto para um dataset e depois é só imprimir a informação.. Em sql isto não tem nada que saber, mas pode ser que em acess seja diferente, não sei!É praticamente igual, tem apenas algumas diferenças. Em access em algumas situações tens de colocar o nome do campo entre [] na query. E existe algumas funções que não suporta... Tipo inner joins ou outer joins, entre outras.Na tua query convinha trocares ai o " por ' ehe ;)Ah sim lol.... Aquilo como está não funciona como é óbvio...Era mais ou menos tipo isto:String connStr = "data source=\\My Documents\\bdlocal.sdf"; using(SqlCeConnection conn = new SqlCeConnection(connStr)) { conn.Open(); //Carregar as tabelas para o DataAdapter String dmlInfoUtilizador = "SELECT * FROM Consulta WHERE tennis = 'nike tiempo'"; //Em vez de asterisco metes as tabelas que queres daAgenda = new SqlCeDataAdapter(); dataset = new DataSet(); //Do DataAdapter para o DataSet daAgenda.SelectCommand = new SqlCeCommand(dmlInfoUtilizador, conn); daAgenda.Fill(dataset,"O que quiseres");//Fazes a parte do dataadapter para as restantes tabelas dataset.AcceptChanges(); daAgenda.Dispose(); conn.Close(); } Depois já tens as cenas dentro do dataset é só corre-lo.... E imprimi-lo em vez de estares a imprimir directamente do select....que tb dá, mas tem outros truques e não encontrei o cód que já fiz para isso! Para além de quantos menos acessos fizeres à BD, mais rápido é o programa! Edited February 14, 2008 by Green Hawk Link to comment Share on other sites More sharing options...
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