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

Discussione: Query di ricerca

  1. #1
    Maverick03 non è in linea Scolaretto
    Post
    62

    Query di ricerca

    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"
    codice:
    SELECT        Id, DATA, DESCRIZIONE, DETTAGLIO, ENTRATE, USCITE
    FROM            SPESE
    WHERE        (DETTAGLIO = @TESTO)
    passo il parametro "TESTO" alla query tramite il seguente codice:
    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
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,807
    Blogs
    5
    Non è un errore ... Devi studiare un po' di linguaggio SQl, in particolare l'operatore LIKE
    Ultima modifica di AntonioG; 22-02-2018 18:47 
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    Maverick03 non è in linea Scolaretto
    Post
    62
    Ho modificato la query in questo modo, studiando l'operatore LIKE su un testo "GUIDA SQL Server 2005" forse un po' datato:
    codice:
    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:
    codice:
    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
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,807
    Blogs
    5
    Non hai usato la LIKE correttamente
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    Maverick03 non è in linea Scolaretto
    Post
    62
    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
    Post
    62
    Forse ho trovato la soluzione e ti propongo quanto ho scritto
    codice:
    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
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,807
    Blogs
    5
    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.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  8. #8
    Maverick03 non è in linea Scolaretto
    Post
    62
    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 Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi