Popolare datagrid con query di ricerca su DB Access

venerdì 31 maggio 2013 - 16.41
Tag Elenco Tags  VB.NET  |  Visual Studio 2010  |  Access (.mdb)

neo996sps Profilo | Junior Member

Ciao a tutti,
Io ho un form che contiene un datagridview che chiamo tblComunidatagridview creato trascinando il componente direttamenre dall'esplorazione database (DB access 2003). Il software mi ha creato la mia stringa di connessione e se lancio l'esecuzione del software vedo il datagridview che si popola regolarmente.
Ora però ho aggiunto una textbox che ho chiamato txtRicercaComune e sul suo evento textchange io vorrei esequire questa query:

"SELECT * FROM tblComuni WHERE comune LIKE '%" & txtRicercaComune.Text & "%'"

per popolare il datagridview, però non mi ricordo più come si fa.

Qualcuno mi sa dare una mano?
Errare è umano, ma per fare veramente casino ci vuole la password di root

freeteo Profilo | Guru

Ciao,
mi sa che ti mancano un po' di basi per padroneggiare la tecnologia, quello che hai fatto va bene, ma è qualcosa di "poco professionale", ed infatti appena vai a fondo ti nascono i problemi.

La cosa è fattibile anche tramite il dataset, inserendo un parametro e cambiando il comando...ma non te lo spiego nemmeno perchè preferirei portarti a sviluppare in maniera corretta, di modo che anche in futuro ti può tornare utile un diverso approccio.

La cosa corretta sarebbe lavorare ad oggetti, quindi avere un Provider che ti torna una collection tipizzata di oggetti, che sul database sono poi salvati tramite colonne/righe etc...visto il tuo problema forse un po' troppo avanti come cosa, ti consiglio intanto di fare il primo passo, ossia abbandonare il wizard grafico

Ti consiglio di farti una classe che ti faccia da provider, intanto possiamo farlo un po' generico, ossia che ti torna una DataTable, e riceva una stringa sql che vuoi, e poi la mostri nella Griglia settandola come DataSource:
public class DataBaseProvider { public static string ConnectionString { get { //--- leggo da app.config return ConfigurationManager.ConnectionStrings["..."].ConnectionString; } } public static DataTable GetTabella(string sql) { return GetTabella(sql, null); } public static DataTable GetTabella(string sql, IEnumerable<DbParameter> parametri) { DataTable dt = new DataTable(); using (OleDbConnection cn = new OleDbConnection(ConnectionString)) { //--- preparo l'oggetto command, ossia il comando da eseguire OleDbCommand cmd = cn.CreateCommand(); cmd.CommandText = sql; //--- eventuali parametri if(parametri != null) foreach (var p in parametri) cmd.Parameters.Add(p); //--- apro la connessione ed eseguo, riempiendo la datatable cn.Open(); OleDbDataReader rd = cmd.ExecuteReader(); dt.Load(rd); } return dt; } ....ETC...
come vedi puoi passare una stringa con la query scritta ed eventuali parametri (utili quando ne hai tanti e di tipi diversi da quelli classici come stringa,int che vai meglio a non metterli nella stringa sql intera, così eviti anche eventuale SqlInjection...)

Dopo che questa classe ti torna la datatable, puoi settarla come sorgente dati della griglia che ti mostrerà i dati risultanti dalla query:
DataTable dt = DataBaseProvider.GetTabella("SELECT * FROM tabella WHERE ..."); dataGridView1.DataSource = dt;

Intanto questo è il minimo per avere del codice "decente", ti consiglio qualche lettura di approfondimento sulla metodologia di accesso ai dati di .net:
http://msdn.microsoft.com/en-us/library/e80y5yhx(v=vs.80).aspx
http://msdn.microsoft.com/en-us/data/ef.aspx
http://msdn.microsoft.com/en-us/data/bb419139

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5