64 messaggi dal 25 settembre 2006
Ciao a Tutti,

vi disturbo perché ho un nuovo problema:

non riesco a ordinare un risultato? mi spiego meglio:

nella tabella Strutture ho una colonna che si chiama Lnk_Rec che ho popolato con percorsi di links reciproci o con un indirizzo fittizio (http://www.zzzzz.it).

come faccio a ordinare i risultati in modo da dare precedenza alle righe col Lnk_Rec popolato dai links (quelli validi)? L?ho provata in tutte le salse e mi genera un loop

Quelle che invio sono i rs:

<%
Dim rsRegioni
Dim rsRegioni_cmd
Dim rsRegioni_numRows

Set rsRegioni_cmd = Server.CreateObject ("ADODB.Command")
rsRegioni_cmd.ActiveConnection = MM_Regioni_STRING
rsRegioni_cmd.CommandText = "SELECT distinct Reg from Strutture where dati='ok' and ts='d' order by Reg asc"
rsRegioni_cmd.Prepared = true

Set rsRegioni = rsRegioni_cmd.Execute
rsRegioni_numRows = 0
%>
<%
Dim rsProvince__Param1
rsProvince__Param1 = "-1"
If (Request("Reg") <> "") Then
rsProvince__Param1 = Request("Reg")
End If
%>
<%
Dim rsProvince
Dim rsProvince_cmd
Dim rsProvince_numRows

Set rsProvince_cmd = Server.CreateObject ("ADODB.Command")
rsProvince_cmd.ActiveConnection = MM_Regioni_STRING
rsProvince_cmd.CommandText = "SELECT distinct Pr FROM strutture WHERE Reg = ? and dati='ok' and ts='d' order by Pr"
rsProvince_cmd.Prepared = true
rsProvince_cmd.Parameters.Append rsProvince_cmd.CreateParameter("param1", 200, 1, 255, rsProvince__Param1) ' adVarChar

Set rsProvince = rsProvince_cmd.Execute
rsProvince_numRows = 0
%>
<%
Dim rsComuni__Param1
rsComuni__Param1 = "-1"
If (Request("Reg") <> "") Then
rsComuni__Param1 = Request("Reg")
End If
%>
<%
Dim rsComuni__Param2
rsComuni__Param2 = "-1"
If (Request("Pr") <> "") Then
rsComuni__Param2 = Request("Pr")
End If
%>
<%
Dim rsComuni
Dim rsComuni_cmd
Dim rsComuni_numRows

Set rsComuni_cmd = Server.CreateObject ("ADODB.Command")
rsComuni_cmd.ActiveConnection = MM_Regioni_STRING
rsComuni_cmd.CommandText = "SELECT distinct Comune FROM strutture WHERE Reg = ? AND Pr = ? and dati='ok' and ts='d' order by Comune"
rsComuni_cmd.Prepared = true
rsComuni_cmd.Parameters.Append rsComuni_cmd.CreateParameter("param1", 200, 1, 255, rsComuni__Param1) ' adVarChar
rsComuni_cmd.Parameters.Append rsComuni_cmd.CreateParameter("param2", 200, 1, 255, rsComuni__Param2) ' adVarChar

Set rsComuni = rsComuni_cmd.Execute
rsComuni_numRows = 0
%>


<%
Dim rsTipi__Param1
rsTipi__Param1 = "-1"
If (Request("Reg") <> "") Then
rsTipi__Param1 = Request("Reg")
End If
%>
<%
Dim rsTipi__Param2
rsTipi__Param2 = "-1"
If (Request("Pr") <> "") Then
rsTipi__Param2 = Request("Pr")
End If
%>
<%
Dim rsTipi__Param3
rsTipi__Param3 = "-1"
If (Request("Comune") <> "") Then
rsTipi__Param3 = Request("Comune")
End If
%>
<%
Dim rsTipi
Dim rsTipi_cmd
Dim rsTipi_numRows

Set rsTipi_cmd = Server.CreateObject ("ADODB.Command")
rsTipi_cmd.ActiveConnection = MM_Regioni_STRING
rsTipi_cmd.CommandText = "SELECT distinct T FROM strutture WHERE Reg = ? AND Pr = ? AND Comune = ? and dati='ok' and ts='d' order by t"
rsTipi_cmd.Prepared = true
rsTipi_cmd.Parameters.Append rsTipi_cmd.CreateParameter("param1", 200, 1, 255, rsTipi__Param1) ' adVarChar
rsTipi_cmd.Parameters.Append rsTipi_cmd.CreateParameter("param2", 200, 1, 255, rsTipi__Param2) ' adVarChar
rsTipi_cmd.Parameters.Append rsTipi_cmd.CreateParameter("param3", 200, 1, 255, rsTipi__Param3) ' adVarChar

Set rsTipi = rsTipi_cmd.Execute
rsTipi_numRows = 0
%>

<%
Dim rsAnagrafica__Param1
rsAnagrafica__Param1 = "-1"
If (Request("Reg") <> "") Then
rsAnagrafica__Param1 = Request("Reg")
End If
%>
<%
Dim rsAnagrafica__Param2
rsAnagrafica__Param2 = "-1"
If (Request("Pr") <> "") Then
rsAnagrafica__Param2 = Request("Pr")
End If
%>
<%
Dim rsAnagrafica__Param3
rsAnagrafica__Param3 = "-1"
If (Request("Comune") <> "") Then
rsAnagrafica__Param3 = Request("Comune")
End If
%>
<%
Dim rsAnagrafica__Param4
rsAnagrafica__Param4 = "-1"
If (Request("T") <> "") Then
rsAnagrafica__Param4 = Request("T")
End If
%>
<%
Dim rsAnagrafica
Dim rsAnagrafica_cmd
Dim rsAnagrafica_numRows

Set rsAnagrafica_cmd = Server.CreateObject ("ADODB.Command")
rsAnagrafica_cmd.ActiveConnection = MM_Regioni_STRING
rsAnagrafica_cmd.CommandText = "SELECT * FROM strutture where Reg = ? and dati ='ok' and ts='d'"
rsAnagrafica_cmd.Prepared = true
rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param1", 200, 1, 255, rsAnagrafica__Param1) ' adVarChar

If (CStr(Request("Pr")) <> "-1") AND (CStr(Request("Pr")) <> "") then
rsAnagrafica_cmd.CommandText = rsAnagrafica_cmd.CommandText + " AND Pr = ?"

rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param2", 200, 1, 255, rsAnagrafica__Param2) ' adVarChar
End If

If (CStr(Request("Comune")) <> "-1") AND (CStr(Request("Comune")) <> "") then
rsAnagrafica_cmd.CommandText = rsAnagrafica_cmd.CommandText + " AND Comune = ?"

rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param3", 200, 1, 255, rsAnagrafica__Param3) ' adVarChar
End If

If (CStr(Request("T")) <> "-1") AND (CStr(Request("T")) <> "") then
rsAnagrafica_cmd.CommandText = rsAnagrafica_cmd.CommandText + " AND T = ?"

rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param4", 200, 1, 255, rsAnagrafica__Param4) ' adVarChar
End If

Set rsAnagrafica = rsAnagrafica_cmd.Execute
rsAnagrafica_numRows = 0
%>

Grazie

GuidoC
5.610 messaggi dal 09 febbraio 2002
Contributi
come faccio a ordinare i risultati in modo da dare precedenza alle righe col Lnk_Rec popolato dai links (quelli validi)?


Puoi farlo nella clausola ORDER BY della select.

... ORDER BY CASE WHEN Lnk_Rec<>'http://www.zzzzz.it' THEN 1 ELSE 2 END


Tutti i record che hanno un Lnk_Rec diverso dal valore "http://www.zzzzz.it" risulteranno più in alto degli altri.
Sei libero di ordinare i record ulteriormente, specificando un secondo e un terzo campo come criteri di ordinamento:

... ORDER BY CASE WHEN Lnk_Rec<>'http://www.zzzzz.it' THEN 1 ELSE 2 END, Reg, Comune


Se l'istruzione CASE non dovesse essere supportata dal tuo db, prova semplicemente:

... ORDER BY Lnk_Rec<>'http://www.zzzzz.it'


Ad ogni modo, prova ad usare null oppure una stringa vuota al posto di zzzzz.it per indicare che un record non dispone di Lnk_Rec. I "valori magici" sono sempre sconsigliati :)
Modificato da BrightSoul il 02 luglio 2011 12.03 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
64 messaggi dal 25 settembre 2006
Ciao BrightSoul

Bingo!!!

con la terza.

con la prima perdeva troppo tempo

Grazie

GuidoC
64 messaggi dal 25 settembre 2006
Ciao BrightSoul,

in realtà un piccolo problema c'è:

la pagina di risultato ha, come ricerca, 4 tendine:

Regione
Provincia
Comune
Tipo

nel risultato mi dà tutti i risultati della regione e non filtra pr, comune e t. mi puoi aiutare a capire perchè?

Grazie

GuidoC
5.610 messaggi dal 09 febbraio 2002
Contributi
Ciao,
qual è esattamente la query che non ti restituisce i risultati voluti? Puoi postarla?

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
64 messaggi dal 25 settembre 2006
credo che sia questa:

<%
Dim rsAnagrafica
Dim rsAnagrafica_cmd
Dim rsAnagrafica_numRows

Set rsAnagrafica_cmd = Server.CreateObject ("ADODB.Command")
rsAnagrafica_cmd.ActiveConnection = MM_Regioni_STRING
rsAnagrafica_cmd.CommandText = "SELECT * FROM strutture where Reg = ? and dati ='ok' and ts='d'"
rsAnagrafica_cmd.Prepared = true
rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param1", 200, 1, 255, rsAnagrafica__Param1) ' adVarChar

If (CStr(Request("Pr")) <> "-1") AND (CStr(Request("Pr")) <> "") then
rsAnagrafica_cmd.CommandText = rsAnagrafica_cmd.CommandText + " AND Pr = ?"

rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param2", 200, 1, 255, rsAnagrafica__Param2) ' adVarChar
End If

If (CStr(Request("Comune")) <> "-1") AND (CStr(Request("Comune")) <> "") then
rsAnagrafica_cmd.CommandText = rsAnagrafica_cmd.CommandText + " AND Comune = ?"

rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param3", 200, 1, 255, rsAnagrafica__Param3) ' adVarChar
End If

If (CStr(Request("T")) <> "-1") AND (CStr(Request("T")) <> "") then
rsAnagrafica_cmd.CommandText = rsAnagrafica_cmd.CommandText + " AND T = ?"

rsAnagrafica_cmd.Parameters.Append rsAnagrafica_cmd.CreateParameter("param4", 200, 1, 255, rsAnagrafica__Param4) ' adVarChar
End If

Set rsAnagrafica = rsAnagrafica_cmd.Execute
rsAnagrafica_numRows = 0
%>

GuidoC
5.610 messaggi dal 09 febbraio 2002
Contributi
Mmmh, non è molto semplice... Prova a fare un Response.Write di questo,subito prima di Set rsAnagrafica = rsAnagrafica_cmd.Execute
Response.Write rsAnagrafica_cmd.CommandText

Così potrai vedere a video come è stata composta la query.

C'è una cosa che non mi è chiara... tu controlli che Request("Comune") non sia vuoto e che non valga -1, ma poi, al momento di aggiungere un parametro alla query non usi il suo valore, ma quello di rsAnagrafica__Param3. E' corretto?

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
64 messaggi dal 25 settembre 2006
con il request non dà alcunchè.

fosse quello che dà problemi? ovvero il diverso trattamento dei filtri?

GuidoC

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC