Visualizzazione dei risultati da 1 a 6 su 6

Discussione: SQL e IF

  1. #1

    SQL e IF

    Ho il seguente codice e funziona.
    Però è stilisticamente una schifezza. Vorrei proprio per imparare in futuro, capire come ottenere lo stesso risultato, ma con codice pulito.
    Questo recordset raccoglie i dati di un form e a seconda di come sono impostati i campi "r_stato" e "r_prodotto" fa una determinata istruzione sql.

    Grazie.

    codice:
    <%
    Dim stato
    set stato = Server.CreateObject("ADODB.Recordset")
    stato.ActiveConnection = line
    if request.QueryString("r_prodotto") = "TUTTI" AND request.QueryString("r_stato") = "TUTTE" then
    stato.Source = "SELECT * FROM chiam WHERE internet = 'SI' AND cod = '" + Replace(var1, "'", "''") + "' AND (username = '"+ request.Cookies("my_cook")("username") +"' OR username is null) AND (problema LIKE '%"&key2&"%' OR titolo LIKE '%"&key2&"%' OR gestint LIKE '%"&key2&"%' OR continuo LIKE '%"&key2&"%') ORDER BY "& ordinamento &" "& modo
    elseif request.QueryString("r_prodotto") = "TUTTI" then
    statocall.Source = "SELECT * FROM chiam WHERE internet = 'SI' AND cod = '" + Replace(var1, "'", "''") + "' AND (username = '"+ request.Cookies("my_cook")("username") +"' OR username is null) AND ((problema LIKE '%"&key2&"%' OR titolo LIKE '%"&key2&"%' OR gestint LIKE '%"&key2&"%' OR continuo LIKE '%"&key2&"%') AND stato = '"&stat&"') ORDER BY "& ordinamento &" "& modo
    elseif request.QueryString("r_stato") = "TUTTE" then
    stato.Source = "SELECT * FROM chiam WHERE internet = 'SI' AND cod = '" + Replace(var1, "'", "''") + "' AND (username = '"+ request.Cookies("my_cook")("username") +"' OR username is null) AND ((problema LIKE '%"&key2&"%' OR titolo LIKE '%"&key2&"%' OR gestint LIKE '%"&key2&"%' OR continuo LIKE '%"&key2&"%') AND cod = '"&prod&"') ORDER BY "& ordinamento &" "& modo
    else
    stato.Source = "SELECT * FROM chiam WHERE internet = 'SI' AND cod = '" + Replace(var1, "'", "''") + "' AND (username = '"+ request.Cookies("my_cook")("username") +"' OR username is null) AND ((problema LIKE '%"&key2&"%' OR titolo LIKE '%"&key2&"%' OR gestint LIKE '%"&key2&"%' OR continuo LIKE '%"&key2&"%') AND cod = '"&prod&"' AND stato = '"&stat&"') ORDER BY "& ordinamento &" "& modo
    end if
    stato.CursorType = 0
    stato.CursorLocation = 3
    stato.LockType = 1
    stato.Open()
    %>

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    codice:
    <%
    Dim stato
    set stato = Server.CreateObject("ADODB.Recordset")
    stato.ActiveConnection = line
    
    strq="SELECT * FROM chiam WHERE internet = 'SI' AND cod = '" + Replace(var1, "'", "''") + "' AND (username = '"+ request.Cookies("my_cook")("username") +"' OR username is null) AND ((problema LIKE '%"&key2&"%' OR titolo LIKE '%"&key2&"%' OR gestint LIKE '%"&key2&"%' OR continuo LIKE '%"&key2&"%') "
    
    if request.QueryString("r_prodotto") = "TUTTI" AND request.QueryString("r_stato") = "TUTTE" then
    
    elseif request.QueryString("r_prodotto") = "TUTTI" then
    	strq=strq & " AND stato = '"&stat&"') "
    elseif request.QueryString("r_stato") = "TUTTE" then
    	strq=strq & " AND cod = '"&prod&"') "
    else
    	strq=strq & " AND cod = '"&prod&"' AND stato = '"&stat&"' ORDER BY "& ordinamento &" "& modo
    end if
    
    strq=strq & "ORDER BY "& ordinamento &" "& modo
    
    stato.Source=strq
    
    stato.CursorType = 0
    stato.CursorLocation = 3
    stato.LockType = 1
    stato.Open()
    %>
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  3. #3
    Prima di tutto grazie.

    Sbaglio o la riga in neretto va tolta?

    codice:
    else
    	strq=strq & " AND cod = '"&prod&"' AND stato = '"&stat&"' ORDER BY "& ordinamento &" "& modo 
    
    end if
    
    strq=strq & "ORDER BY "& ordinamento &" "& modo

  4. #4
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Hai ragione, dimenticanza.....

    In effetti viene aggiunta una volta sola alla fine
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  5. #5
    ok, perfetto. La cosa mi conforta, vuol dire che qualcosa capisco...

    Dato che ci sono, approfitto della tua dispo.

    Questa procedura rappresenta un piccolo motore di ricerca, che mostra a video ordinati per colonna i record trovati.

    Se volessi permettere all'utente di ordinare i record trovati per colonna cliccando sull'intestazione, come posso fare?

    Grazie

  6. #6
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    devi mettere un link nel titolo dell'intestazione in cui passi nuovamente tutte le variabili di ricerca + la variabile che ti dice come devono essere ordinati.
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

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.