+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

Query di ricerca

  1. #1
    Maverick03 non  in linea Scolaretto
    Cerco aiuto per un mio programma che gestisce le spese di famiglia.
    Il programma si basa su un database SQL Server e l'ho impostato con Visual Studio 17.
    Ho scritto la seguente query per ricercare i dati nella colonna "DETTAGLIO"
    SELECT        Id, DATA, DESCRIZIONE, DETTAGLIO, ENTRATE, USCITE
    FROM            SPESE
    WHERE        (DETTAGLIO = @TESTO)
    
    passo il parametro "TESTO" alla query tramite il seguente codice:
    If Annata = "" Then
                TESTO = DETTAGLIO.SelectedItem
                Me.SPESETableAdapter.DETTAGLIO(NewProvaDataSet.SPESE, TESTO)
            EndIf
    
    Il contenuto di "TESTO" lo prelevo da una Listbox e tutto funziona perfettamente se il contenuto del parametro "TESTO" e il contenuto della colonna "DETTAGLIO" sono identici restituendomi un DataGridView completo dei dati richiesti, ma vorrei poter vedere anche quei record dove il parametro "TESTO" solo contenuto.

    Faccio un esempio per chiarire meglio:
    Se TESTO = "Bollo Auto" e nella colonna DETTAGLIO c' scritto "Bollo Auto" tutto OK
    Se TESTO = "Bollo Moto" e nella colonna DETTAGLIO c' scritto "Bollo Moto" tutto OK
    Se TESTO = "Bollo" e nella colonna DETTAGLIO c' scritto "Bollo Auto" o "Bollo Moto" mi viene restituito un DGV completamente vuoto ma senza nessuna segnalazione di errore.

    E' possibile ,con il vostro aiuto, capire dove sta l'errore

  2. #2
    Non un errore ... Devi studiare un po' di linguaggio SQl, in particolare l'operatore LIKE
    Ultima modifica di AntonioG; 22-02-2018 19:47 
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    Maverick03 non  in linea Scolaretto
    Ho modificato la query in questo modo, studiando l'operatore LIKE su un testo "GUIDA SQL Server 2005" forse un po' datato:
    SELECT        Id, DATA, DESCRIZIONE, DETTAGLIO, ENTRATE, USCITE
    FROM            SPESE
    WHERE        (DETTAGLIO LIKE @TESTO)
    
    ma il risultato non cambia, se non c' esatta corrispondenza tra il parametro "TESTO" e il contenuto della colonna "DETTAGLIO" del DGV ottengo sempre un DGV vuoto.

    Il codice di ricerca dati rimasto invariato:
    If Annata = "" Then
                TESTO = DETTAGLIO.SelectedItem
                Me.SPESETableAdapter.DETTAGLIO(NewProvaDataSet.SPESE, TESTO)
            EndIf
    
    Capisco che non sto interrogando il sistema nel modo giusto, poi scoprir che la modifica minima (forse), ma per adesso si sbatte la testa al muro
    Confido in altre utili indicazioni e grazie per l'aiuto

  4. #4
    Non hai usato la LIKE correttamente
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    Maverick03 non  in linea Scolaretto
    Ho provato a modificare la query inserendo il parametro tra parentesi quadre o tra apici singoli, aggiungendo all'operatore LIKE il carattere % che, se non ho capito male, dovrebbe essere un jolly, ma senza risultati significativi.
    Ottengo sempre degli errori di sintassi (in inglese) sia per l'operatore LIKE che per il parametro "@TESTO"per cui capisco che non scrivo correttamente la query ma dove sta l'inghippo?
    Il libro che ho non mi ha dato un grande aiuto ne le ricerche di esempi fatte su internet per cui mi puoi metter sulla buona strada?

    Grazie per l'attenzione

  6. #6
    Maverick03 non  in linea Scolaretto
    Forse ho trovato la soluzione e ti propongo quanto ho scritto
    SELECT        Id, DATA, DESCRIZIONE, DETTAGLIO, ENTRATE, USCITE
    FROM            SPESE
    WHERE        (DETTAGLIO LIKE '%' + @TESTO2 + '%')
    
    ho fatto qualche prova e sembra essere la strada corretta.
    Cosa ne pensi?

  7. #7
    Penso che cos funziona. Basta leggere bene quello che c' scritto nella documentazione.

    Sono elementi di base di programmazione per chi vuole avere a che fare con i DB.
    Io sono del parere che prima si studiano strumenti e teoria e dopo si mettono in pratica scrivendo codice.

    Se si fa al contrario, o addirittura si sorvola sulla teoria, ci si ferma alla prima banale linea di codice.
    ℹ️ Leggi di pi su AntonioG ...

  8. #8
    Maverick03 non  in linea Scolaretto
    Grazie AntonioG,
    ti garantisco che avevo letto sul testo in mio possesso quello che riguardava l'operatore LIKE e avevo masticato l'uso di apici, %, parentesi ecc. ma non riuscivo a scriverli nel modo corretto, anche perch non trovavo spiegazioni sull'uso dei parametri.
    Comunque dopo vari tentativi e le tue motivazioni (che mi hanno fatto capire che non ero molto distante dalla soluzione) sono riuscito a risolvere il problema.

    Grazie ancora e arrivederci o meglio a risentirci

    Maverick03

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 30-03-2012, 19:04
  2. Query ricerca
    Da Cis nel forum Visual Basic 6
    Risposte: 10
    Ultimo Post: 23-10-2007, 19:25
  3. Query di ricerca
    Da Carmen nel forum Visual Basic 6
    Risposte: 31
    Ultimo Post: 12-03-2007, 10:33
  4. Query di ricerca
    Da fabritio nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 06-04-2006, 18:58
  5. Query di ricerca
    Da Carmen nel forum Visual Basic 6
    Risposte: 10
    Ultimo Post: 15-05-2005, 09:31