Trova in db access con parte del nome

di il
10 risposte

Trova in db access con parte del nome

Ciao a tutti, con il comando select trovo il testo che mi serve in un db access ma solo se è identico al testo che digito esempio:

cerco marco e se nel db è presente marco lo carico ma se ad esempio metto un dato per il quale ricordo parzialmente il nome, esempio marco.srl e io cerco marco.spa come posso fare in modo che scrivendo una parte del testo mi carichi tutto quello che corrisponde alla parte inserita?

scrivo mar e mi carica marco.srl + marco.spa + tutti quelli che corrispondono a mar

E' possibile? Così facendo caricherei i dati in un DGV e poi selezionerei quello che è di mio interesse..

Grazie e spero di essermi espresso in modo comprensibile.

10 Risposte

  • Re: Trova in db access con parte del nome

    Conosci l'operatore LIKE ?
  • Re: Trova in db access con parte del nome

    Si certo, uso like per definire poi quale deve essere il campo

    io uso select nometabella where campo da cercare like = campo di confronto

    ovviamente non scritto così brutto ma è quello che faccio, però non fa quello che vorrei
  • Re: Trova in db access con parte del nome

    orione1976 ha scritto:


    ovviamente non scritto così brutto ma è quello che faccio, però non fa quello che vorrei
    Mostra come l'hai scritto realmente, così possiamo dare un'occhiata e capire il problema: magari è una sciocchezzuola.
  • Re: Trova in db access con parte del nome

    Eccomi, ovviamente non funziona perchè.... 1 non mi da le parti del nome quindi manca qualcosa e 2 se metto 2 nomi uguali esempio marco bianchi e marco rossi mi carica nel FGV solo l'ultimo inserito... è un form di test quindi non fate caso alle scritte stambe
     Dim leggi As OleDb.OleDbDataReader
    Dim cmd As New OleDb.OleDbCommand("SELECT * FROM marco WHERE nome LIKE @nome")
            cmd.Parameters.AddWithValue("@nome", TextBox1.Text)
            conn.Open()
            cmd.Connection = conn
            leggi = cmd.ExecuteReader
            DataGridView1.Columns.Add("ID", "ID")
            DataGridView1.Columns.Add("nome", "NOME")
            DataGridView1.Columns.Add("cognome", "COGNOME")
            DataGridView1.Columns.Add("soprannome", "SOPRANNOME")
    
            While leggi.Read
                IDTextBox.Text = leggi("ID")
                UnoTextBox.Text = leggi("nome")
                DueTextBox.Text = leggi("cognome")
                TreTextBox.Text = leggi("soprannome")
                DataGridView1.Rows.Clear()
                DataGridView1.Rows.Add(leggi("ID"), leggi("nome"), leggi("cognome"), leggi("soprannome"))
            End While
            conn.Close()
    dove sbaglio?
  • Re: Trova in db access con parte del nome

    orione1976 ha scritto:


    1 non mi da le parti del nome quindi manca qualcosa e 2 se metto 2 nomi uguali esempio marco bianchi e marco rossi mi carica nel FGV solo l'ultimo inserito...
    Credo che gli errori stiano nel fatto di usare nomi identificativi per i parametri (es. @nome), perché su OLE DB e Access - che io ricordi - non sono supportati, ma al loro posto devi usare un punto interrogativo (?) e andare in base all'ordine.

    In secondo luogo, bisogna vedere cosa inserisci nella casella; ad esempio, se vuoi trovare i nomi che "iniziano con" quello che inserisci, devi mettere un carattere % dopo il testo; ad esempio, se vuoi trovare tutti i nomi che iniziano per "gian", nella casella dovrai scrivere "gian%".

    Ciao!
  • Re: Trova in db access con parte del nome

    orione1976 ha scritto:


    ...e 2 se metto 2 nomi uguali esempio marco bianchi e marco rossi mi carica nel FGV solo l'ultimo inserito... è un form di test quindi non fate caso alle scritte stambe...
    Attenzione che per come hai strutturato il ciclo, le textbox avranno sempre e solo l'ultimo valore. In merito alla DGV, avendo tu un Clear subito prima dell'Add avrai sempre e solo una riga nella griglia all'uscita del ciclo.
  • Re: Trova in db access con parte del nome

    Ok... capito, quindi Sgrubak ho tolto il clear row dal ciclo while e l'ho messo prima così se faccio una ricerca mi elimina quanto già scritto e carica correttamente se trovo piu nomi che corrispondono.

    Per il secondo problema, alla fine non ho ben capito dove sta l'errore concettuale e quindi se il nome corrisponde = ok altrimenti.... nulla

    ho visto degli esempi su youtube ma sinceramente non mi sbilancio, se faccio solo copia\incolla poi mi si ripresenta in futuro il problema...

    Grazie comunque per le dritte
  • Re: Trova in db access con parte del nome

    orione1976 ha scritto:


    Per il secondo problema, alla fine non ho ben capito dove sta l'errore concettuale e quindi se il nome corrisponde = ok altrimenti.... nulla
    Cosa intendi? Tu hai esposto due problemi: uno lo ha risolto Alka, uno io...
  • Re: Trova in db access con parte del nome

    orione1976 ha scritto:


    se faccio solo copia\incolla poi mi si ripresenta in futuro il problema...
    Certo, perché il copia/incolla è senz'altro uno strumento fondamentale (si è scherzato per tutta la giornata di ieri riguardo la tastiera con i soli tasti per CTRL+C/CTRL+V di StackOverflow), però bisogna anche comprendere quello che si va a incollare, e non usare passivamente gli esempi: analizza le classi che vengono utilizzate, il loro scopo, i metodi che vengono chiamati, i parametri, ecc.

    Non puoi pretendere di trovare esattamente il pezzo di codice in giro che risolve il tuo problema specifico.

    Detto questo, se qualcosa non si comporta come si dovrebbe, a prescindere dalla provenienza del codice, devi fare un ulteriore copia/incolla: quello che riporta sul forum il codice che hai scritto, perché se non lo vediamo non siamo in grado di dirti dove sono gli eventuali problemi, tantomeno suggerirti come risolverli.

    Ciao!
  • Re: Trova in db access con parte del nome

    Si si ho risolto il primo caso come dicevo nel post precedente, grazie, il secondo problema sicuramente lo risolvo come dice Alka e lo proverò quanto prima, pensavo che i punti interrogativi seguissero lo stesso criterio per UPDATE o DEL etc... leggendo in rete sconsigliano i ? in quanto devi seguire l'ordine esatto della posizione nei campi mentre con @ no. Ovviamente però parliamo del solo operatore LIKE quindi è un solo campo ed è diverso, per il %testo non lo sapevo ma provo.

    Grazie comunque


    P.S. Alka, il copia\incolla è proprio come dici te, io poi cerco sempre di capire come e perchè funziona, non sempre ci riesco e quindi se non trovo qualcosa in rete poi chiedo.... grazie come sempre a tutti per la pazienza...
Devi accedere o registrarti per scrivere nel forum
10 risposte