Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Aiuto fare una select con variabile

    ho scritto questo codice:

    <%
    Dim tipo
    Dim materiale
    Dim rete
    Dim boccole
    Dim stringa

    tipo = Request.QueryString("tipo")
    materiale = Request.QueryString("materiale")
    rete = Request.QueryString("rete")
    boccole = Request.QueryString("boccole")
    stringa = tipo & "" & materiale & "" & rete & "" & boccole

    Dim CODICE
    Dim CODICE_numRows

    Set CODICE = Server.CreateObject("ADODB.Recordset")
    CODICE.ActiveConnection = MM_SQL_PRODUZIONE_STRING
    CODICE.Source = "SELECT * FROM dbo.CODICI WHERE DESCRITTIVO = '%" + Replace(stringa, "'", "''") + "%'"
    CODICE.CursorType = 0
    CODICE.CursorLocation = 2
    CODICE.LockType = 1
    CODICE.Open()

    CODICE_numRows = 0
    %>

    testo il contenuto della variabile stringa ed è esattamente quello nel campo del DB SQL server ma la Query non mostra il contenuto? ho provato a sotituire = con LIKE ma senza esito.

    cosa sbaglio? grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La query SELECT recupera qualcosa... ma devi dirgli poi tu di stampare il contenuto da qualche parte...

    Roby

  3. #3
    con % devi usare la like

    ----------------------------------------------------
    impariamo a fare un po' di debug

    *subito* dopo la composizione della stringa SQL metti

    Response.Write "maGGica SQL...: " & sql
    Response.Flush

    esempio:

    ....
    CODICE.ActiveConnection = MM_SQL_PRODUZIONE_STRING
    Dim SQL
    SQL = "SELECT * FROM dbo.CODICI WHERE DESCRITTIVO LIKE '%" + Replace(stringa, "'", "''") + "%'"
    Response.Write "maGGica SQL...: " & sql
    Response.Flush
    CODICE.Source = SQL
    CODICE.CursorType = 0
    .....

    poi posta quello che viene a video
    ----------------------------------------------------

  4. #4
    innanzitutto grazie per l'aiuto, ecco cosa esce

    maGGica SQL...: SELECT * FROM dbo.CODICI WHERE DESCRITTIVO LIKE '%SILENZIATORE ZINCATO - BOCCOLE%'

    STAMPO LE VARIABILI PASSATE DALL'URL DEL FORM

    SILENZIATORE
    ZINCATO
    -
    BOCCOLE

    STAMPO LA VARIABILE STRINGA
    SILENZIATORE ZINCATO - BOCCOLE

    ADODB.Recordset error '800a0e78'

    L'operazione non è consentita se l'oggetto è chiuso.

    /verificaCodice.asp, line 62

    nel campo "descrittivo" del db SQL ho esattamente:
    SILENZIATORE_ZINCATO_-_BOCCOLE

    ma non lo trova.. se metto un
    <%=(CODICE.Fields.Item("DESCRITTIVO").Value)%>

    errore classico della SELECT vuota:

    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non proprio "esattamente"... Nel db mi pare di vedere degli _ (underscore):
    SILENZIATORE_ZINCATO_-_BOCCOLE

    Quindi la query non estrae nulla ma al recordset non dici cosa fare se non trova nulla...
    E quindi va in errore, che è a questo punto nella parte di codice successiva a quella che hai mostrato.

    Roby

  6. #6
    giusto per avanzare con il debug

    <%
    Dim tipo
    Dim materiale
    Dim rete
    Dim boccole
    Dim stringa

    tipo = Request.QueryString("tipo")
    materiale = Request.QueryString("materiale")
    rete = Request.QueryString("rete")
    boccole = Request.QueryString("boccole")
    'stringa = tipo & " " & materiale & " " & rete & " " & boccole
    stringa = "SILENZIATORE_ZINCATO_-_BOCCOLE"

    Dim CODICE
    Dim CODICE_numRows

    'Set CODICE = Server.CreateObject("ADODB.Recordset")
    'CODICE.ActiveConnection = MM_SQL_PRODUZIONE_STRING
    'CODICE.Source = "SELECT * FROM dbo.CODICI WHERE DESCRITTIVO = '%" + Replace(stringa, "'", "''") + "%'"
    'CODICE.CursorType = 0
    'CODICE.CursorLocation = 2
    'CODICE.LockType = 1
    'CODICE.Open()
    Set CODICE = Server.CreateObject("ADODB.Recordset")
    CODICE.ActiveConnection = MM_SQL_PRODUZIONE_STRING
    CODICE.Source = "SELECT * FROM dbo.CODICI WHERE DESCRITTIVO LIKE '%" + Replace(stringa, "'", "''") + "%'"
    CODICE.CursorType = 0
    CODICE.CursorLocation = 2
    CODICE.LockType = 1
    CODICE.Open()
    CODICE_numRows = 0
    %>

    e il riscontro in SQL, allego immagine
    Immagini allegate Immagini allegate

  7. #7
    Funziona ma solo se setto la variabile stringa manualmente,e qui proprio non so dove sbattere la testa, alla stampa delle variabili mostrano lo stesso risultato:

    <%
    Dim tipo
    Dim materiale
    Dim rete
    Dim boccole
    Dim stringa

    tipo = Request.QueryString("tipo")
    materiale = Request.QueryString("materiale")
    rete = Request.QueryString("rete")
    boccole = Request.QueryString("boccole")
    stringa2 = tipo & " " & materiale & " " & rete & " " & boccole
    stringa = "SILENZIATORE_ZINCATO_-_BOCCOLE"
    Dim CODICE
    Dim CODICE_numRows


    Set CODICE = Server.CreateObject("ADODB.Recordset")
    CODICE.ActiveConnection = MM_SQL_PRODUZIONE_STRING
    CODICE.Source = "SELECT * FROM dbo.CODICI WHERE DESCRITTIVO LIKE '%" + Replace(stringa, "'", "''") + "%'"
    CODICE.CursorType = 0
    CODICE.CursorLocation = 2
    CODICE.LockType = 1
    CODICE.Open()
    CODICE_numRows = 0
    %>

    come si può vedere in seguito, il risultato della variabile "stringa" e "stringa2" è lo stesso
    eppure se imposto alla variabile stringa = tipo & " " & materiale & " " & rete & " " & boccole
    non funziona

    STAMPO LE VARIABILI PASSATE DALL'URL DEL FORM

    SILENZIATORE
    ZINCATO
    -
    BOCCOLE

    STAMPO LA VARIABILE STRINGA E STRINGA2:
    SILENZIATORE ZINCATO - BOCCOLE
    SILENZIATORE ZINCATO - BOCCOLE


    stampo la riga del Db
    31001SILENZIATORE ZINCATO - BOCCOLE

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Manca parte dello script... Non entra nel recordset oppure entra ma lo chiudi prima di usarlo.

    Roby

  9. #9
    scusa la mia ignoranza Roby ma non ho capito..

    c'è una novità se imposto alla variabile stringa solo la prima variabile
    cioè stringa = tipo che verrebbe "SILENZIATORE"

    magicamente funziona:

    STAMPO LE VARIABILI PASSATE DALL'URL DEL FORM

    SILENZIATORE
    ZINCATO
    -
    BOCCOLE

    STAMPO LA VARIABILE STRINGA
    SILENZIATORE



    stampo la riga del Db
    31001SILENZIATORE ZINCATO - BOCCOLE

    se concateno una seconda opzione con & non funziona più

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Se concateni solo le prime due?

    Roby

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.