+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Query di ricerca con parametri

  1. #1
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Ho creato una query di ricerca su access con 2 parametri di cui i 2 parametri sono i campi da cui estrapolare i dati.
    Spiego in dettaglio come da immagine che allego
    Nome:   ricerca.JPG
Visite:  47
Grandezza:  14.1 KB
    Come si può vedere la ricerca è composta o dal nome oppure dalla città seguita dalla textbox,premetto che i campi di access sono in formato testo.
    In pratica io passo alla routine di ricerca i 2 parametri che a priori io non sò quale dei 2 campi sceglierà l'utente,quindi,passo i parametri come da codice:
     Select Case sceltardb
                Case 1
                    query_ricerca("nome", txtRicercaPrivati.Text)
                Case 2
                    query_ricerca("citta", txtRicercaPrivati.Text)
            End Select
    
    i nomi fanno parte dei campi di access e quì passo i parametri
      Private Sub query_ricerca(ByVal parametro As String, ByVal ricercaTesto As String)
            Dim sql As String = String.Empty
            Dim nome As String = ""
            dts = New DataSet
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & CStr(strPath) & "\DBPrivatiServizi.mdb"
            objConn = New OleDbConnection(strConn)
            sql = "SELECT * FROM privati WHERE nome='" & ricercaTesto & "'"
            ap = New OleDbDataAdapter(sql, objConn)
            ap.SelectCommand.CommandText = sql
            ap.SelectCommand.Connection = objConn
            objConn.Open()
            ap.SelectCommand.ExecuteNonQuery()
            ap.Fill(dts, "privati")
            record = dts.Tables(0).Rows.Count - 1
            For i = 0 To record
                nome = CStr(dts.Tables(0).Rows(i).Item(1))
                MessageBox.Show(nome)
            Next
    
    in questo modo ho messo implicitamente il campo nome e per parametro ho messo ricercatesto
    e fin quì tutto funziona bene,mi trova solo 2 nomi uguali come deve essere,ora il problema è che al posto di inserire implicitamente il campo nome lo devo sostituire con la variabile parametro che può contenere o il nome o la città,posto il codice
      Private Sub query_ricerca(ByVal parametro As String, ByVal ricercaTesto As String)
            Dim sql As String = String.Empty
            Dim nome As String = ""
            dts = New DataSet
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & CStr(strPath) & "\DBPrivatiServizi.mdb"
            objConn = New OleDbConnection(strConn)
            sql = "SELECT * FROM privati WHERE '" & parametro & "='"
            ap = New OleDbDataAdapter(sql, objConn)
            ap.SelectCommand.CommandText = sql
            ap.SelectCommand.Connection = objConn
            objConn.Open()
            ap.SelectCommand.ExecuteNonQuery()
            ap.Fill(dts, "privati")
            record = dts.Tables(0).Rows.Count - 1
            For i = 0 To record
                nome = CStr(dts.Tables(0).Rows(i).Item(1))
                MessageBox.Show(nome)
            Next
    
    ora,dopo le ultime virgolette qualsiasi cosa metto la & ,le virgolette,l'apice tanto per capirsi se faccio
    così
     sql = "SELECT * FROM privati WHERE '" & parametro & "='" & ricercatesto
    
    me li fà vedere tutti e non và bene...se faccio così
     sql = "SELECT * FROM privati WHERE '" & parametro & "='" & '" & ricercatesto "'"
    
    dà errore.
    Come inserisco correttamente il secondo parametro in modo che mi restituista i record giusti?
    ℹ️ Leggi di più su sistemista ...

  2. #2
    Hai fatto un po' di pasticci con le & e con le '

    parametro NON va tra ' '

    	
    sql = "SELECT * FROM privati WHERE " & parametro & " = '" & ricercatesto & "'"
    
    In realtà dovresti usare i veri Oggetti Parametri e non formare le stringhe SQL
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    L'avatar di gibra
    gibra non è in linea Very Important Person

  4. #4
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    versione 2008 sp1
    ℹ️ Leggi di più su sistemista ...

  5. #5
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Hai fatto un po' di pasticci con le & e con le '

    parametro NON va tra ' '

    	
    sql = "SELECT * FROM privati WHERE " & parametro & " = '" & ricercatesto & "'"
    
    In realtà dovresti usare i veri Oggetti Parametri e non formare le stringhe SQL
    scusa ma non capisco,io parametro l'ho messo così:
     sql = "SELECT * FROM privati WHERE '" & parametro & " = '" & ricercatesto & "'"
    
    apice,virgolette,&,parametro etc.etc
    i veri oggetti parametri cosa sarebbe?non sono molto ferrato in materia essendo autodidatta..
    ℹ️ Leggi di più su sistemista ...

  6. #6
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da sistemista Visualizza il messaggio
    i veri oggetti parametri cosa sarebbe?
    Sarebbero gli oggetti che devi utilizzare, al posto delle stringhe SQL formattate manualmente.
    Inizia a studiare da qui:
    Commands and Parameters
    https://docs.microsoft.com/en-us/dot...ectedfrom=MSDN

    Ti avevo chiesto la versione perché ti avrei girato una soluzione, ma hai la vecchissima 2008, mentre io ho la 2019.
    (suggerisco di aggiornare, se possibile).
    ℹ️ Leggi di più su gibra ...

  7. #7
    Comunque con la stringa che ti ho scritto, se fai copia incolla, funziona
    ℹ️ Leggi di più su AntonioG ...

  8. #8
    L'avatar di SirJo
    SirJo non è in linea Scolaretto
    AntonioG ti ha dato (ovviamente) la soluzione corretta, ma meglio ancora se fai così:
    sql = "SELECT * FROM privati WHERE " & parametro & " = '" & ricercaTesto.replace("'","''") & "'"
    
    in questo caso infatti funziona anche con nomi con l'apice, ad esempio se cerchi il sig. DALL'ALBA

  9. #9
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    in questo caso infatti funziona anche con nomi con l'apice
    Se si usano i Parametri nei Command ci si risparmia di dover scrivere stringhe SQL in semi-ostrogoto.
    Pensa se si deve inserire/aggiornare il valore di 10 stringhe con Replace()...
    Per non parlare poi delle date che in un MDB dovrebbero essere racchiuse tra cancelletti...
    ℹ️ Leggi di più su gibra ...

  10. #10
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Hai fatto un po' di pasticci con le & e con le '

    parametro NON va tra ' '

    	
    sql = "SELECT * FROM privati WHERE " & parametro & " = '" & ricercatesto & "'"
    
    In realtà dovresti usare i veri Oggetti Parametri e non formare le stringhe SQL
    Intanto grazie,funziona perfettamente,appena ho tempo mi studio Oggetti Parametri.
    Ringrazio anche Gibra e sirJo.
    ℹ️ Leggi di più su sistemista ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Query di ricerca con inserimento parametri da maschera
    Da vesant nel forum Microsoft Access
    Risposte: 12
    Ultimo Post: 15-01-2013, 14:45
  2. Risposte: 1
    Ultimo Post: 30-03-2012, 19:04
  3. parametri query
    Da mobile75 nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 11-09-2010, 17:20
  4. Query e parametri
    Da _J_ nel forum C#
    Risposte: 2
    Ultimo Post: 13-07-2007, 17:57
  5. ricerca con parametri
    Da Wizard nel forum Microsoft Word
    Risposte: 6
    Ultimo Post: 24-09-2004, 11:36