Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926

    Cercare tutti i valori di un record

    Ho un modulo che invia i parametri di ricerca ad una pagina
    asp che poi li prende con l'oggetto Request.Form per
    compilare la query sql.

    In particolare, un menu a discesa permette di selezionare
    il tipo di records da estrarre, ad esempio posso scegliere
    tra Tipo1 e Tipo2, dalla pagina asp leggo poi il valore
    passato dal menu a discesa in questo modo:

    <%
    Dim rs__MMColParam
    rs__MMColParam = "1"
    If (Request.Form("target") <> "") Then
    rs__MMColParam = Request.Form("target")
    End If
    %>

    poi la stringa sql è la seguente

    "SELECT email FROM tbl_authors WHERE authority = '" + Replace(rsEmail__MMColParam, "'", "''") + "'"

    dove la condizione WHERE è data dal valore letto dal menu a discesa "target".

    Funziona perfettamente quando la scela è Tipo1 o Tipo2 ma io vorrei
    inserire una terza scelta ovvero Tutti, come se come filtro mettessi
    il classico asterisco *.

    Ho provato a passare questo valore dal menu a discesa con il value settato a *,
    ho anche provato a non mandare nulla, lasciando il campo vuoto
    in modo che prenda il valore di default
    rs__MMColParam = "1"
    cambiando 1 con *
    ma in entrambi i casi non funziona....

    Come posso estrarre tutti i record?

    grazie del vostro aiuto
    Luca

  2. #2
    selezionare TUTTO vuol dire non mettere NIENTE nella WHERE (pensaci...)

  3. #3
    codice:
    <%
    Dim rs__MMColParam
    rs__MMColParam = "1"
    If (Request.Form("target") <> "") Then 
    rs__MMColParam = Request.Form("target")
    End If
    
    
    sql = "SELECT email FROM tbl_authors" 
    
    if rs_MMColParam <> "1" then
    sql = sql & " WHERE authority = '" + Replace(rsEmail__MMColParam, "'", "''") + "'"
    end if
    %>
    Ovviamente la option della tua combo che passa il valore per "tutti" deve essere uguale a ""

  4. #4
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    grazie per la risposta, ma non riesco a farlo funzionare.
    Mettendo le modifiche che mi hai suggerito,funziona solo
    se scelgo un tipo di utenti, mentre se scelgo Tutti
    non viene inviata nessuna mail, senza che la pagina
    che invia la mail dia alcun errore.

    questo è il codice completo

    codice:
    <%
    Dim rsEmail__MMColParam
    rsEmail__MMColParam = "1"
    If (Request.Form("target") <> "") Then 
      rsEmail__MMColParam = Request.Form("target")
    End If
    
    sql = "SELECT email FROM tbl_authors" 
    
    if rs_MMColParam <> "tutti" then
    sql = sql & " WHERE authority = '" + Replace(rsEmail__MMColParam, "'", "''") + "'"
    end if
    %>
    
    <%
    Dim rsEmail
    Dim rsEmail_numRows
    
    Set rsEmail = Server.CreateObject("ADODB.Recordset")
    rsEmail.ActiveConnection = MM_conn_STRING
    rsEmail.Source = sql
    rsEmail.CursorType = 0
    rsEmail.CursorLocation = 2
    rsEmail.LockType = 1
    rsEmail.Open()
    
    rsEmail_numRows = 0
    %>
    nel modulo che passa i valori alla pagina asp di invio mail
    ho provato in entrambi i modi

    codice:
     <select name="target" id="target">
          <option value="">Tutti</option>
    che anche

    codice:
     <select name="target" id="target">
          <option value="tutti">Tutti</option>
    e poi anche

    codice:
    <select name="target" id="target">
          <option>Tutti</option>
    ovviamente quando lascio il campo value nullo
    metto la condizione di confornto <>"1" e non <>"tutti"

    ma non riesco a mandare la mail a tutti i tipi di utente.....

    grazie ancora per la tua disponibilità
    Luca

  5. #5
    codice:
    <select name="target" id="target">
          <option value="">Tutti</option>
    codice:
    <%
    Dim rsEmail__MMColParam
    rsEmail__MMColParam = Request.Form("target")
    
    sql = "SELECT email FROM tbl_authors" 
    
    if rs_MMColParam <> "" then
    sql = sql & " WHERE authority = '" + Replace(rsEmail__MMColParam, "'", "''") + "'"
    end if
    %>
    
    <%
    Dim rsEmail
    Dim rsEmail_numRows
    
    Set rsEmail = Server.CreateObject("ADODB.Recordset")
    rsEmail.ActiveConnection = MM_conn_STRING
    rsEmail.Source = sql
    rsEmail.CursorType = 0
    rsEmail.CursorLocation = 2
    rsEmail.LockType = 1
    rsEmail.Open()
    
    rsEmail_numRows = 0
    %>

  6. #6
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    ottimo....funziona perfettamente...
    mi sai spiegare perchè nell'altro modo
    non funzionava?

    Credevo di aver capito il funzionamento
    del codice e mi sembrava corretto...
    se non viene passato alcun valore, la variabile è uguale a 1,
    se la variabile è uguale a uno (ovvero nessun valore passato)
    prendo tutti i valori, altrimenti se è diverso da 1 per
    cui esiste un parametro passato dal form,
    lo prendo e lo concateno alla stringa sql
    con la condizione WHERE per filtrare i risultati.

    E perchè non funzionava?

    Grazie per il tuo prezioso aiuto
    Luca

  7. #7
    Guarda le differenze.

  8. #8
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    ho visto le differenze....
    nella prima versione, veniva settata la variabile
    rs_MMColParam a 1 e solo se il campo target
    era diverso da "" veniva riassegnato il valore di rs_MMColParam
    con quello preso dal campo target,
    successivamente, se il valore di rs_MMColParam era diverso da 1
    si utilizzava la query sql con la condizione, altrimenti quella generica.
    Il concetto mi sembrava valido.

    Nella seconda versione, che poi è quella che funziona,
    alla variabile rs_MMColParam viene associato il valore del campo target,
    se questo è uguale a zero si usa la query generica,
    se è diverso da zero si accoda alla query sql anche la condizione
    where presa dal campo target.

    Come li vedo io dovrebbero andare entrambi i metodi,
    ma la prova sul campo (e tu lo confermi velatamente)
    non è lo stesso....
    mi piacerebbe capire dove il mio ragionamento è sbagliato....

    grazie ancora
    Luca

  9. #9
    Che ne so... io faccio il cuoco di professione. ASP è un hobby...

  10. #10
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    bè...se me l'hai messa a posto credevo che sapessi come funzionava....
    allora spiegami come faccio a fare un suppli....


    grazie ancora......
    Luca

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.