Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Procedura ricerca con Query Sql!
martedì 15 luglio 2008 - 18.38
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
dosa85
Profilo
| Junior Member
51
messaggi | Data Invio:
mar 15 lug 2008 - 18:38
Salve a tutti sono nuovo del forum iscrittomi sotto indicazione si DoMa (mio amico).
Il mio quesito è il seguente:
Sto realizzando una piccola applicazione di Magazzino con vb.net 2005. Avviando il primo form (nell'evento load) mi carico in un datagridview tutte le colonne con le risettive righe del mio Database Access 2000 (dbmag.mdb). Fin qui tutto ok, ora vorrei effettuare una query di ricerca (tramite sql ed eventuale Button) nella colonna descrizone della stessa tabella.
---Ecco il codice---
Evendo Load del form:
Variabili pubbliche:
Dim dbcon As OleDb.OleDbConnection
Dim dbaDp As OleDb.OleDbDataAdapter
Dim inserisci As OleDb.OleDbDataAdapter
Dim datA As New DataSet
dbcon = New OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=c:\dbmag.mdb")
'Apre la connessione
dbcon.Open()
'Crea il DataAdapter: la stringa comunica di prelevare tutti i campi della tabella carico
dbaDp = New OleDb.OleDbDataAdapter("SELECT * FROM `carico`", dbcon)
'E tramite questo riempie il dataset
dbaDp.Fill(datA, "carico")
ComboBox1.DataSource = datA.Tables("carico")
ComboBox1.DisplayMember = "descrizione"
Dim table As DataTable = datA.Tables("Carico")
DataGrid.DataSource = table
DataGrid.AutoResizeColumns()
Tramite comano SQL:
Vorrei (per es.) ricercare il record in Descrizione col nome (peres.) "Birra".
E vorrei far aggiornare in modo istantaneo la datagrid in modo da farmi visualizzare se esiste solo il record che ha il nome "Birra".....credo di esse stato abbastanza chiaro.
!!!!!!!!!!!!!!!!!!!!!Grazie!!!!!!!!!!!!!!!!!!!!!!!!!!
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mar 15 lug 2008 - 22:49
Ciao dosa85,
Se ho ben capito vorresti "filtrare" la tua DataGrid.
Per fare questo puoi utilizzare la funzione "BindingSource.Filter"
BindingSource.Filter = "Descrizione = 'Birra' "
Ti consiglio di dare un'occhiata qui:
http://msdn.microsoft.com/it-it/library/system.windows.forms.bindingsource.filter.aspx
Oppure esegui una query come quella col cui carichi la datagrid mettendogli le varie clausole DISTINCT, WHERE ect
dbaDp = New OleDb.OleDbDataAdapter("SELECT Desrizione FROM myTable WHERE Descrizione = Birra", dbcon)
Ciao
dosa85
Profilo
| Junior Member
51
messaggi | Data Invio:
mer 16 lug 2008 - 11:47
Ho seguito il tuo cons. ma mi
accade una cosa strana:
questo è il Codice su un button:
dbaDp = New OleDb.OleDbDataAdapter("SELECT Descrizione FROM carico WHERE Descrizione='" & ComboBox1.Text & "'", dbcon)
dbaDp.Fill(datA, "carico")
Dim table As DataTable = datA.Tables("Carico")
ComboBox1.DataSource = datA.Tables("carico")
ComboBox1.DisplayMember = "descrizione"
DataGrid.DataSource = table
DataGrid.AutoResizeColumns()
Guarda questa img!
[URL=
http://img373.imageshack.us/my.php?image=esempiosu8.jpg
][IMG]
http://img373.imageshack.us/img373/763/esempiosu8.th.jpg
[/IMG][/URL]
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mer 16 lug 2008 - 12:33
Ciao
Non mi è chiara solo una cosa
Tutto il codice è nell'evento click del Button?
Perchè dovrebbe essere (se ho capito bene):
Nell'evento load del Form carichi tutte le descrizioni sulla ComboBox
Nell'evento Change della ComboBox (oppure un Button) vai ad effettuare la query di selezione e solo in questo momento carichi i dati (i risultati del "filtro" WHERE = )sulla DataGrid
E' cosi?
Ciao
dosa85
Profilo
| Junior Member
51
messaggi | Data Invio:
mer 16 lug 2008 - 13:36
Ho fatto così:
Evendo Load del form:
Variabili pubbliche:
Dim dbcon As OleDb.OleDbConnection
Dim dbaDp As OleDb.OleDbDataAdapter
Dim inserisci As OleDb.OleDbDataAdapter
Dim datA As New DataSet
dbcon = New OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=c:\dbmag.mdb")
'Apre la connessione
dbcon.Open()
'Crea il DataAdapter: la stringa comunica di prelevare tutti i campi della tabella carico
dbaDp = New OleDb.OleDbDataAdapter("SELECT * FROM `carico`", dbcon)
'E tramite questo riempie il dataset
dbaDp.Fill(datA, "carico")
ComboBox1.DataSource = datA.Tables("carico")
ComboBox1.DisplayMember = "descrizione"
Dim table As DataTable = datA.Tables("Carico")
DataGrid.DataSource = table
DataGrid.AutoResizeColumns()
Nell' Evento click del button invece solo quello che ho scritto nel form prcedente! vale a dire:
dbaDp = New OleDb.OleDbDataAdapter("SELECT Descrizione FROM carico WHERE Descrizione='" & ComboBox1.Text & "'", dbcon)
dbaDp.Fill(datA, "carico")
Dim table As DataTable = datA.Tables("Carico")
ComboBox1.DataSource = datA.Tables("carico")
ComboBox1.DisplayMember = "descrizione"
DataGrid.DataSource = table
DataGrid.AutoResizeColumns()
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mer 16 lug 2008 - 16:01
Ciao
Scusa ma ho cambiato qualcosa (per semplicità mia):
Varabili pubbliche:
Dim Connection As OleDb.OleDbConnection
Dim mCommand As OleDb.OleDbCommand
Dim mAdapter As OleDb.OleDbDataAdapter
Dim mTable As DataTable
Nell'evento Load del Form:
Private Sub Form1_Load()
Connection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\dbmag.mdb")
Connection.Open()
mCommand = New OleDbCommand("SELECT * FROM carico", Connection)
mAdapter = New OleDbDataAdapter()
mAdapter.SelectCommand = mCommand
mTable = New DataTable()
mAdapter.Fill(mTable)
Me.ComboBox1.DataSource = Me.mTable
Me.ComboBox1.DisplayMember = "Descrizione"
Me.DataGrid.DataSource = Me.mTable
Connection.Close()
End Sub
E questo nell'evento Changed della Combo oppure nell'evento Click del Button
Private Sub ComboBox1_SelectedIndexChanged
Connection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\dbmag.mdb")
Connection.Open()
mCommand = New OleDbCommand("SELECT * FROM carico WHERE Descrizione = '" & ComboBox1.Text & "'", Connection)
mAdapter = New OleDbDataAdapter()
mAdapter.SelectCommand = mCommand
mTable = New DataTable()
mAdapter.Fill(mTable)
Me.DataGrid.DataSource = Me.mTable
Connection.Close()
End Sub
E' possibile che qualcosa sia da adattare perchè l'ho testato su VB 2005 con un db Access che avevo (non ho access)
Ciao
dosa85
Profilo
| Junior Member
51
messaggi | Data Invio:
mer 16 lug 2008 - 16:58
***********OK*********** Grazie mille, problema risolto!!!
Avevo un'ultima domanda per ora e cioè volevo sapere qual'è la differenza fra il procedimento che hai descritto tu e quello che facevo io? Fra le variabili ne usi alcune che io non usavo, che diff. ce tra le mie variaili e le tue?????? e fra il mio procedimento e il tuo?
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mer 16 lug 2008 - 17:18
Ciao
Se te lo dicessi dopo dovrei ucciderti!!!!!
A parte gli scherzi, ci sono nella tua due cose che non mi piacciono
La prima e che carichi due volte (nel load del form e nel Click del Button) le query sia nella Combo sia nel DataGrid
La seconda e qui:
dbaDp.Fill(datA, "carico")
ComboBox1.DataSource = datA.Tables("carico")
e
DataGrid.DataSource = table
?????
Non riuscendo a capire come caricavi su i dati e non sapendo se c'erano altre parti di codice ho preferito "ricominciare" da zero secondo gli schemi che uso io (Access lo uso poco niente dal momento che lavoro con VB 2005 Express che ha integrato SQL Server 2005 Express)
Ciao
dosa85
Profilo
| Junior Member
51
messaggi | Data Invio:
mer 16 lug 2008 - 18:25
Perche non devo caricare nel combobox e nel datagrid?
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
mer 16 lug 2008 - 18:57
Mi sono spiegato male.
Con questa procedura in base al testo della Combo, "filtri" il contenuto della DataGrid
Mentre con la tua procedura, mi riferisco all'immagine che mi hai girato, non filtravi niente, anzi ti compariva una riga in più.
Giusto?
Questo era dovuto al fatto che caricavi sia nell'evento Load che Button le medesime query.
NB.
Non ho potuto testare le affermazioni sopra non avendo ne il tuo db Access ne VB 6.0 (ho dedotto che tu usi VB 6.0)
Tra l'altro ti volevo suggerire di inserire (se ne hai bisogno) un eventuale Button2 che ricarica la query (SELECT * FROM carico) per rivedere tutti gli articoli nel DataGrid
Ciao
Torna su
Stanze Forum
Elenco Threads
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 !