69 messaggi dal 17 settembre 2002
Come mai non mi esegue il comando nella mia mastodontica select?

<%option explicit%>

<!--#include file="adovbs.inc"-->

<%Dim conn
set conn=server.CreateObject("ADODB.connection")
conn.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\mdb\dbAudioVideo.mdb"
Dim rs4, strsql, Accessori, Audio, Car, DTT, Telefonia, Video, stereo, digital, tmpstr
set rs4=server.CreateObject("ADODB.Recordset")
rs4.ActiveConnection = conn
rs4.Open "SELECT * FROM IRRADIO"
tmpstr = " WHERE "
if accessori="checked" then
strsql=strsql & tmpstr & "NomeFamiglia_i = '"&Accessori&"' "
tmpstr = "or "
end if
if audio="checked" then
strsql=strsql & tmpstr & "NomeFamiglia_i = '"&Audio&"' "
tmpstr = "or "
end if
if stereo="checked" then
strsql=strsql & tmpstr & "NomeFamiglia_i = '"&Car&"' "
tmpstr = "or "
end if
if digital="checked" then
strsql=strsql & tmpstr & "NomeFamiglia_i = '"&DTT&"' "
tmpstr = "or "
end if
if telefonia="checked" then
strsql=strsql & tmpstr & "NomeFamiglia_i = '"&Telefonia&"' "
tmpstr = "or "
end if
if video="checked" then
strsql=strsql & tmpstr & "NomeFamiglia_i = '"&Video&"'"
end if
strsql = strsql & " ORDER BY NomeFamiglia_i"%>

Questo codice mi era stato suggerito da alex.java, e funziona correttamente tranne l'order by, come mai?

ciao

Tutto lavoro e niente spasso, il morale scende in basso!
3.122 messaggi dal 16 maggio 2002
Una domanda: a che ti serve ordinare i record in base a NomeFamiglia_i se prendi tutti i record con lo stesso valore per NomeFamiglia_i??

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
69 messaggi dal 17 settembre 2002
Io voglio che, cliccando sulle mie checkbox mi vengano visualizzate solo le famiglie selezionate e non tutte disordinatamente in un blocco solo come adesso.
Modificato da ddmedia il 11 novembre 2002 10.17 -

Tutto lavoro e niente spasso, il morale scende in basso!
3.122 messaggi dal 16 maggio 2002
Ora ho capito. Allora l'errore non sta nella order by. Il tuo script funziona solo se scegli una sola famiglia, giusto?
Infatti se hai piu' checkbox selezionate tu gli dici
select ... where famiglia='gigi' famiglia='franco' famiglia='antonio'
e la sintassi cosi' non e' corretta (anzi tu non hai messo nemmeno gli spazi). Invece dovresti fare
select ... where famiglia='gigi' OR famiglia='franco' OR famiglia='antonio'
Allora alla fine puoi anche usare l'order by famiglia.
Prova e poi fammi sapere.

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
69 messaggi dal 17 settembre 2002
Ma gli spazi in che senso? anzi no, più che altro, che codice posso usare per usare gli spazi in questa sql?


Modificato da ddmedia il 11 novembre 2002 10.46 -

Tutto lavoro e niente spasso, il morale scende in basso!
3.122 messaggi dal 16 maggio 2002
Noto ora anche che inserisci la stringa "WHERE" piu' volte nella strsql se, ovvero la inserisci in numero pari al numero di checkboxes selezionate (e questo e' un errore).
Fai cosi':
metti i tuoi if per controllare se le checkbox sono selezionate; utilizza una variabile "spia" che ti dice se la checkbox che stai considerando e' la prima selezionata, ovvero all'inizio setta la spia a 0, in ogni if che controlla se la checkbox e' checked fai un controllo; se la spia vale 0 metti il WHERE, se vale 1 metti OR, poi quando incontri una checkbox selezionata la setti a 1. In pratica ti consiglio di fare questo:

spia=0
if accessori="checked" then
if spia=0 then
strsql=strsql&" WHERE NomeFamiglia_i='accessori'"
else
strsql=strsql&" OR NomeFamiglia_i='accessori'"
end if
end if

e lo fai per tutti i tuoi campi.
Nota sulla sintassi di prima: le stringhe
stringa=accessori
e
stringa="accessori"
sono due cose diverse. Nel primo caso la variabile stringa va ad assumere il valore della variabile accessori (cioe' "checked" nel tuo caso), nel secondo caso invece la variabile stringa assume il valore "accessori".

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
69 messaggi dal 17 settembre 2002
Si, quello che mi hai detto tu l'ho esegiuto correttamente, ma la mia domanda non era riferita solo alla prima parte della query, ma anche all'order by, quindi volevo chiedervi cosa devo scrivere nella preposizione dell'order by, e non dalle altre parti, perchè anche se è banale, a me l'order by serve per far funzionare tutto il sito!!!!!!!!

rispondetemi solo sull'order by!!!!
Modificato da ddmedia il 11 novembre 2002 15.34 -

Tutto lavoro e niente spasso, il morale scende in basso!
879 messaggi dal 09 luglio 2002
www.i-studio.it
Ciao,
volevo sapere che tipo di errore ti da, perche' non mi sembra che ci siano problemi nel tuo codice. Inoltre, prova a farti stampare il valore di strsql per capire se e' tutto a posto.

Per Raynor: il codice non inserisce piu' volte il WHERE, perche' ad ogni controllo di checkbox, il codice e':
strsql = strsql & tmpStr & ...
ma il valore di tmpStr inizialmente e' " WHERE " ma successivamente, non appena entra in uno degli IF che vengono valutati, diventa " OR ". Quindi, alla fine, la stringa si compone correttamente. Cosi' facendo rispetto alla soluzione che proponevi tu, risparmi n-istruzioni IF.

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it

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.