Pagina 11 di 12 primaprima ... 9 10 11 12 ultimoultimo
Visualizzazione dei risultati da 101 a 110 su 120

Discussione: Esempio select

  1. #101
    Ho perso un po' il filo del discorso....

    Allo stato attuale, quello che dici allo script di fare è:

    codice:
    - acquisisci le variabili (regioni, capoluogo, comuni, condizione)
    - valorizzi strVar(false se cond="TUTTE", in caso contrario true)
    - solo se strVar=false   (cioè se cond="TUTTE")
           - estrai dalla tabella 1 tutti i record che corrispondono alle scelte fatte per regione, provincia e comune
    - in ogni caso estrai i dati dalla tabella 2, e precisamente 
           - tutti i dati se cond = "TUTTE"
           - solo quelli che hanno nel campo "condizione" il valore che tu passi per mezzo della variabile "cond" se cond non vale "TUTTE"
    Questo è ciò che dici allo script di fare...non so (o non ricordo, sono fuori casa e non posso verificare...) cosa contenga la tabella 2, né che valori possa assumere la variabile "cond" quando non vale "TUTTE", né se è questo il risultato che volevi ottenere.

    Per quanto riguarda la tabella 1, la logica mi sembra corretta e coerente.

    La sintassi è quasi a posto. Solo:
    - mi sembra che ci sia un "end if" di troppo, alla fine, se non si riferisce a una parte dello script non compresa nel post
    Importante: chiudi il secondo recordset (RECX) prima di chiudere la connessione!
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  2. #102
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie per aver risposto.

    Dunque, riepilogando:
    Ho due tabelle che devono essere visibli all'utente secondo il campo selezionato nelle select;

    ho quattro select: REGIONI, CAPOLUOGO, COMUNI (agganciate alla tabella1) e CONDIZIONE (agganciata alla tabella2)

    -se tutte le quattro select contengono valore "TUTTE" le tabelle devono essere visibili entrambe;

    - se almeno una delle select REGIONI, CAPOLUOGO e COMUNI contiene un valore DIVERSO da TUTTE , la tabella2 non deve essere più visibile (questo funziona).;

    -se la select CONDIZIONE contiene un valore DIVERSO da TUTTE (disponibile, non disponibile, informarsi) la tabella1 non deve essere più visibile (questo funziona).

    Il problema è quando in tutte le SELECT ho valore TUTTE, perchè non mi fa vedere la tabella2.
    Mi segui?

    Tutto il resto delle selezioni singole o multiple funziona correttamente.

    NB: ho chiuso RECX prima della Conn

  3. #103
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    up

  4. #104
    Una modifica che dovrebbe aiutarti a risolvere, e che è fattibile sfruttando il codice che hai già, potrebbe essere (pseudo-codice da tradurre in codice):
    codice:
    if (reg <> 0 OR prov <> 0 OR trim(ucase(com))<> "TUTTI") then
        seleziona solo la prima tabella (applicando le relative condizioni)
      else if ucase(trim(cond)) <> "TUTTE" then
        seleziona solo la seconda tabella (applicando le relative condizioni)
      else
        seleziona entrambe le tabelle (senza condizioni)
      end if
    end if
    In questo modo puoi sfruttare parte del codice già esistente (okkio però a non inserire ulteriori condizioni, magari senza volerlo...)

    Per presentare entrambe le tabelle (terzo caso) ti conviene fare e presentare a video due query di select completamente separate



    p.s.: non sono proprio sicurissimo che si possa usare "OR" due volte nell'IF (guarda sul manuale per la sintassi, eventualmente ci vorranno due parentesi.....)
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #105
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie, modifico così:
    codice:
    if (reg <> 0 OR prov <> 0 OR trim(ucase(com))<> "TUTTI") then
    
        'seleziona solo la prima tabella (applicando le relative condizioni)
    
    SQLDown = "select * From TABELLAN1 WHERE 1=1"
    
    If REG <> 0 then
       SQLDown = SQLDown & " AND ID_REG = "& REG &" "
    End if
    
    If PROV <> 0 then
      SQLDown = SQLDown & " AND ID_PROV = "& PROV &" "
    End If
    
    If ucase(trim(COM)) <> "TUTTI" then
      SQLDown = SQLDown & " AND COM = '"& COM &"'"
    End If
    
    Set RECDown = ConnDown.Execute(SQLDown)
    
    
    'il primo è pieno
    if not RECDown.eof then 
    
    'ciclo sul primo recordset
    While Not RECDown.EOF 'ciclo sul primo recordset 
    
    ...
    VISUALIZZO SOLO DATI TABELLAN1
    ...
    
    'muovo il primo
    RECdown.MoveNext
    Wend
    end if
    
    'chiudo il primo
    RECDown.Close
    Set RECdown = Nothing
    
    
    else if ucase(trim(COND)) <> "TUTTE" then
    
        'seleziona solo la seconda tabella (applicando le relative condizioni)
      
    SQL = "select * From TABELLAN2 WHERE 1=1"
    
    If ucase(trim(COND)) <> "TUTTE" then
       SQL = SQL & " AND COND = '"& COND &"'"
    End if
    
    Set REC = ConnDown.Execute(SQL)
    
    'controlliamo il secondo rec
    
    'il secondo è pieno
    if not rec.eof then 
    
    'ciclo sul primo recordset
    While Not REC.EOF 
    
    ...
    VISUALIZZO SOLO DATI TABELLAN2
    ...
    
    else   
    
        'seleziona entrambe le tabelle (senza condizioni)
        
    SQLDown = "select * From TABELLA1"
    Set RECDown = ConnDown.Execute(SQLDown)
    
    'il primo è pieno
    if not RECDown.eof then 
    
    'ciclo sul primo recordset 
    While Not RECDown.EOF 
    
    ...
    VISUALIZZO DATI TABELLAN1
    ...
    
    'muovo il primo
    RECDown.MoveNext
    Wend
    end if
    
    'chiudo il primo
    RECDown.Close
    Set RECdown = Nothing
      
    SQL = "select * From TABELLAN2"
    Set REC = ConnDown.Execute(SQL)
    
    'il secondo è pieno
    if not REC.eof then 
    
    'ciclo sul secondo recordset
    While Not REC.EOF 
    
    ...
    VISUALIZZO DATI TABELLAN2
    ...
    
    'muovo il secondo
    REC.MoveNext 
    Wend
    end if
    
    'CHIUDO LA CONN
    ConnDown.Close
    Set ConnDown = Nothing
    
    end if
    end if
    ma restituisce errore sulla riga rossa ELSE... :master:

    Microsoft VBScript compilation error '800a03fa'

    Expected 'Wend'

  6. #106
    Infatti, prima di else, ci vogliono le istruzioni

    REC.movenext
    loop

    per chiudere il ciclo aperto con l'istruzione "while"
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  7. #107
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da teorema55
    Infatti, prima di else, ci vogliono le istruzioni

    REC.movenext
    loop

    per chiudere il ciclo aperto con l'istruzione "while"
    Grazie ma con queste modifiche quando le select = TUTTE non estrae più nulla nemmeno la TABELLAN1:
    codice:
    <%
    REC.movenext 
    wend (con LOOP mi va in errore)  
    'seleziona entrambe le tabelle (senza condizioni)
        
    SQLDown = "select * From TABELLA1"
    Set RECDown = ConnDown.Execute(SQLDown)
    
    'il primo è pieno
    if not RECDown.eof then 
    
    'ciclo sul primo recordset 
    While Not RECDown.EOF 
    
    ...
    VISUALIZZO DATI TABELLAN1
    ...
    
    'muovo il primo
    RECDown.MoveNext
    Wend
    end if
    
    'chiudo il primo
    RECDown.Close
    Set RECdown = Nothing
      
    SQL = "select * From TABELLAN2"
    Set REC = ConnDown.Execute(SQL)
    
    'il secondo è pieno
    if not REC.eof then 
    
    'ciclo sul secondo recordset
    While Not REC.EOF 
    
    ...
    VISUALIZZO DATI TABELLAN2
    ...
    
    'muovo il secondo
    REC.MoveNext 
    Wend
    end if
    
    'CHIUDO LA CONN
    ConnDown.Close
    Set ConnDown = Nothing
    
    end if
    end if

  8. #108
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Mi correggo:
    codice:
     <%
    'controlliamo il secondo rec
    if not rec.eof then 'il secondo è pieno
    Do While Not REC.EOF 'ciclo sul secondo recordset
    %>
          
    <td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=REC("reg")%></td>
    <td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=REC("prov")%></td>
    <td align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=REC("com")%></td>
    
    <%
    REC.movenext 
    loop
    %>
    
     
    
    <%
    
    else
    
        'seleziona entrambe le tabelle (senza condizioni)
        
    SQLDown = "select * From TABELLA1 ORDER BY REG"
    Set RECDown = ConnDown.Execute(SQLDown)
    
    if not RECDown.eof then 'il primo è pieno
    While Not RECDown.EOF 'ciclo sul primo recordset 
    %>
     
    
    ...
    VISUALIZZO DATI TABELLAN1
    ...
    
    'muovo il primo
    RECDown.MoveNext
    Wend
    end if
    
    'chiudo il primo
    RECDown.Close
    Set RECdown = Nothing
      
    SQL = "select * From TABELLAN2"
    Set REC = ConnDown.Execute(SQL)
    
    'il secondo è pieno
    if not REC.eof then 
    
    'ciclo sul secondo recordset
    While Not REC.EOF 
    
    ...
    VISUALIZZO DATI TABELLAN2
    ...
    
    'muovo il secondo
    REC.MoveNext 
    Wend
    end if
    
    'CHIUDO LA CONN
    ConnDown.Close
    Set ConnDown = Nothing
    
    end if
    end if
    continua a non estrarre niente quando le select = TUTTE

  9. #109
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    OK trovato e risolto!

  10. #110
    con LOOP mi va in errore
    sì, chiedo scusa per il lapsus, sono abituato a usare do...until

    Qual'era il problema?
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.