Concatenazione stringa query

di il
12 risposte

Concatenazione stringa query

Chiedo scusa da subito per la banalità del problema, ma sono completamente ribollito.
Con la seguente query

Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '" & Text1.Text & "'*")
.
.
.

vorrei estrapolare tutti i campi della tabella dettagli che iniziano con una determinata lettera (C) che inserisco nella Text1.
Mi solleva l' errore di sintassi (operatore mancante) 'Descrizione LIKE 'C'*'.
e non riesco a venirne a capo. Ho provato in tutti i modi, ma niente
E' un problema di concatenazione, o cosa?

12 Risposte

  • Re: Concatenazione stringa query

    pierovb ha scritto:


    
    Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '" & Text1.Text & "*'")
    
  • Re: Concatenazione stringa query

    Secondo il codice che avevi inviato era

    'C'*

    ma come ti ha detto max deve essere

    'C*'
  • Re: Concatenazione stringa query

    Con la correzione indicata da Max , che avevo già provato e che è sicuramente corretta, solleva l'errore 3021
    ma vi assicuro che con l'iniziale C ci sono 10 record.
    Ho provato anche così
    
    Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '*" & Text1.Text & "*'")
    

    Stesso errore 3021.
    Non riesco a venirne a capo.
  • Re: Concatenazione stringa query

    No non è lo stesso errore, fai attenzione al codice d'errore
  • Re: Concatenazione stringa query

    Si, scusa, non è lo stesso errore.
    Non trova nessun record corrispondente al criterio impostato, però come
    ho specificato ci sono 10 record che iniziano per C.
  • Re: Concatenazione stringa query

    Il primo asterisco a cosa ti serve?
  • Re: Concatenazione stringa query

    Gian82 di quale primo asterisco parli? Quello della SELECT?


    Pierovb.... se usi ADO devi scrivere C% e non C*
  • Re: Concatenazione stringa query

    pierovb ha scritto:


    
    Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '*" & Text1.Text & "*'")
    
    Questa query è diversa da quest'altra :

    max.riservo ha scritto:


    pierovb ha scritto:


    
    Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '" & Text1.Text & "*'")
    
    Stai pettinando le bambole o vai a caso ?
  • Re: Concatenazione stringa query

    Grazie.
    
    Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '" & Text1.Text & "%'")
    
    funziona, ovviamente
  • Re: Concatenazione stringa query

    @Max
    nooo... era una dei tanti tentativi, in pratica le provavo tutte
  • Re: Concatenazione stringa query

    Ora, giusto per prova, fai in modo che

    Text1.Text

    contenga una stringa con UN APICE SINGOLO, ad esempio: " ' "
    Vedrai che succede

    Potrei proporti una stinga del tipo

    " ';DROP TABLE Dettagli; SELECT * FROM Dettagli WHERE Descrizione LIKE ' "

    MA NON FARLO, se non vuoi che la tabella SPARISCA misteriosamente

    Si chiama SQL Injection: NON SI COMPONGONO gli statement SQL mediante CONCATENAZIONE DI STRINGHE !!!!!
  • Re: Concatenazione stringa query

    @Migliorabile
    Text1.Text contenga una stringa con UN APICE SINGOLO, ad esempio: " ' "
    Intendi un nome con apostrofo o accento ?
    Ho ben capito?
    In questo caso uso
    
    Set rs = cn.Execute("SELECT * FROM Dettagli WHERE Descrizione LIKE '" & Apici(Text1.Text) & "%'")
    
    ... e funziona.
    Ma forse ho capito male.
Devi accedere o registrarti per scrivere nel forum
12 risposte