Funzione "cerca" per datagrid

mercoledì 09 novembre 2005 - 08.30

Netrulez Profilo | Newbie

Ciao a tutti,

come già detto in un'altro post, sono nuovo nuovo, sia di .net che di dotnethell..

Sto "smanettando" con visual studio .net 2003, e devo dire che mi sta intrigando parecchio. Ho comprato e divorato più manuali sull'argomento, leggo da un po il vostro forum e vari tutorial trovati in rete.

Ora però ho deciso che è il momento di passare da passivo ad attivo.... quindi posto! :-)

Durante i miei esperimenti ho connesso un db access ad un'applicazione vb.net, e fin qui "tutto bene", ora vorrei sapere come è possibile integrare una funzione di ricerca sul db nel mio form.

Mi volete aiutare?

Ciauz

Brainkiller Profilo | Guru

>Ciao a tutti,
>come già detto in un'altro post, sono nuovo nuovo, sia di .net
>che di dotnethell..

Ciao e benvenuto :D

>Durante i miei esperimenti ho connesso un db access ad un'applicazione
>vb.net, e fin qui "tutto bene", ora vorrei sapere come è possibile
> integrare una funzione di ricerca sul db nel mio form.

Allora non dovrebbe essere una cosa molto complessa. Se hai un po' di dimestichezza con le classie OleDb.* dovresti riuscire. Direi che i passi fondamentali da seguire sono:

- Connessione al DB
- Invio di Query e conseguente recupero dei dati in un DataSet
- Chiusura Connessione
- Bind del DataSet alla datagrid

Per fare questo in una Form avrai bisogno di una Textbox per inserire i termini da ricercare e una DataGrid e un button per avviare la ricerca.

La ricerca poi la puoi implementare come vuoi, se hai un campo Titolo relativo a libri di una biblioteca puoi creare una query del tipo:

"SELECT * FROM Libri WHERE Title = '*mela*'"

Questo troverà tutti i record che abbiano all'interno del titolo la parola "mela".

Per lanciare questa query e recuperare i dati puoi farlo con un OleDbDataAdapter:

//Apertura connessione
Dim da as OleDbDataAdapter
Dim ds as DataSet
ds=new DataSet()
Dim strsql as string
strsql="SELECT * FROM Libri WHERE Title = '*mela*'"
da=new OleDbDataAdapter(strsql,connessione_aperta)
da.Fill(ds)
//chiusura connessione

alla fine assegni i risultati alla datagrid:

DataGrid1.DataSource=ds.Tables(0)

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

H2MARON Profilo | Junior Member

Puoi essere un po più chiaro...?!

Io di istinto ti direi di cambiare l'sql a seconda del valore della tua text box di ricerca...

ma non ho ben capito cosa vuoi fare...

ciao

Netrulez Profilo | Newbie

Grazie a entrambi per le risposte ma... non ho capito granchè dato che sono alle prime armi.

Brainkiller, quando tu dici:
Questo troverà tutti i record che abbiano all'interno del titolo la parola "mela".

Per quel che ho capito cosi potrei ricercare sempre e solo i risultati per "mela", giusto?

Quello che vorrei imparare io è: campo di testo vuoto dove posso inserire la stringa di ricerca e un pulsante tipo "avvia ricerca". Il tutto mi dovrebbe restituire un risultato..
H2MARON, è questo che intendi tu?

Ho provato a leggermi e rileggermi la documentazione contenuta nell'sdk del framework 1.1 ma... sob...
Vi prego di aver pazienza con me ragazzi.. :-(

Grazie




ysdemarc Profilo | Expert

Forse dovresti rileggere più attentamente l'esempio postato da Braiankiller.

Naturalmente l'esecuzione della query la devi fare all'evento click del pulsante di comando.

Se poi vuoi un solo risultato è necessario che il campo che ti digitano sia univoco e a quel punto non dovrebbero essere necessari i caratteri jolly nella query (ma una cosa del genere non so quanto possa essere utile).

Infine se vuoi solo il primo record che soddisfi i tuoi criteri di ricerca basta modificare la query in
strsql="SELECT TOP 1 * FROM Libri WHERE Title = '%mela%'"

e di da la prima occorrenza trovata (Anche se credo di aver compreso male altrimenti non si spiegherebbe l'uso della DataGrid).
Naturalmente mela è quello che l'utente ha digitato nella tua textbox.

Domanda per Braiankiller:
hai scritto la seguente query strsql="SELECT * FROM Libri WHERE Title = '*mela*'"
ma gli * hanno le stesse funzioni di %?
Ho provato in sqlserver a mettere * al posto del % ma non ottengo nulla...

Vincenzo
Programmatore sbilenco :-D

ApatiaMax Profilo | Newbie

eeehhh ma la cosa curiosa e' che se tu fai usi access allora devi mettere * l'asterisco
pero' se usi access, ma fai una query direttamente da VS allora devi usare %
..

io ho fatto una query parametrica direttamente da dentro access, perche' suppongo che sia piu' veloce il motore di access rispetto alle interrogazioni fatte attraverso vb.net...
insomma.. tutta la mattina a tirar giu' i santi con sta query che non veniva...

SELECT from utenti WHERE (((utenti.nome) Like [?] + "%"));

oviamente al posto di % ci andava *.... ma VS anche se usa database access, mdb non vuole * ma %

.. ho fatto un po' di casino, ma spero di avervi delucidato un po' sui carattery jolly

ps.
come si usano le query parametriche con i dataset ?
cioe' partendo dal presupposto che con una query parametrica non posso fare un'interrogazione sql, soppongo che dovrei fare la connessione alla mia tabella e quindi passare il parametro necessario alla query
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5