79 messaggi dal 25 maggio 2001
Raga....ho una pagina con un campo SELECT che si aggiorna in automatico prendendo i dati da un db....

i dati in questione sono dei CAP ma può capitare che ci siano più cap uguali e io vorrei che nel select un cap venisse reppresentato una sola volta come posso fare.....la mia pagina ora è questa...

--------------------------------
<select name="capsec">
<%

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "dsn=cxp"

Dim rsCap
rsCap = Session("azienda")

set modulo = Server.CreateObject("ADODB.Recordset")
sql = "SELECT capsec,socpartner FROM iniz_fasci WHERE socpartner = '"& rsCap&"' ORDER BY capsec ASC"
modulo.Open sql, Conn

Do While Not modulo.EOF
Response.write "<OPTION VALUE='" & modulo.Fields.Item("capsec").Value & "'>"
Response.write "" & modulo.Fields.Item("capsec").Value & "</OPTION>"
modulo.MoveNext
Loop

modulo.Close
set modulo = nothing
Conn.close
set Conn = nothing

%>

</select>
--------------------------------------

Grazie mille



Matteo
------------------------------------
matteo@oldamerika.com
------------------------------------
ICQ N° 105837895
------------------------------------

Matteo
------------------------------------
matteo@oldamerika.com
------------------------------------
ICQ N° 105837895
------------------------------------
499 messaggi dal 14 luglio 2001
Puoi utilizzare la stringa SQL per raggruppare i cap come Gruppo


sql="SELECT capsec AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" GROUP BY capsec ORDER BY capsec ASC"

per richiamarli

modulo("Cap")



enzo
www.dnetware.it

enzo
www.dnetware.it
1.605 messaggi dal 06 settembre 2002
tramite "Distinct" è possibile selezionare campi senza duplicati
per es.
"SELECT distinct capsec,socpartner FROM iniz_fasci WHERE socpartner = '"& rsCap&"' ORDER BY capsec ASC"

ti tirerà fuori capsec,socpartner senza duplicati però il duplicato vale per tutti e due quindi potra restituite


capsec|socpartner
-----------------
1 | a
1 | b
2 | a

però se ci fossero stati due o più recordcon
capsec uguale a 1 e socpartner = "a"
ti restituisce comunque un solo record

se non ti bastasse potresti fare così

dim strControllo

Do While Not modulo.EOF
if InStr(1 ,& "|" modulo.Fields.Item("capsec").Value & "|" ) > then
else
strControllo = strControllo & "|" modulo.Fields.Item("capsec").Value & "|"
Response.write "<OPTION VALUE='" & modulo.Fields.Item("capsec").Value & "'>"
Response.write "" & modulo.Fields.Item("capsec").Value & "</OPTION>"
end if
modulo.MoveNext
Loop





FORZA LA MAGICA ROMA

FORZA LA MAGICA ROMA
499 messaggi dal 14 luglio 2001
Scusa albis ma uutilizzando DISTINCT se ci sono due persone differenti che hanno lo stesso CAP, inevitabilmente nella sua SELECT avrà comunque 2 CAP Uguali, con il Metodo GROUP BY viene scremato tutto, e di conseguenza avrà solo la selezione dei CAP Differenti tra loro..

ora da quello che ho capito dal post, secondo me il metodo più semplice è quello di usare il GROUP BY...


ciao..


enzo
www.dnetware.it

enzo
www.dnetware.it
1.605 messaggi dal 06 settembre 2002
la group by e la distinct si comportano all?incirca allo stesso modo
infatti nel caso della select di amatteo78
dove seleziona due campi

"SELECT capsec,socpartner FROM iniz_fasci WHERE socpartner = '"& rsCap&"' ORDER BY capsec ASC"
se si vuole usare la group by e srivi

"SELECT capsec,socpartner AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" GROUP BY capsec ORDER BY capsec ASC"

ti dà errore e dice che bisogna raggruppare per tutti i campi selezionati esclusi quelli di somma o calcolati
quindi dovresti scrivere

"SELECT capsec,socpartner AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" GROUP BY capsec ORDER BY capsec,socpartner ASC"

e il risultato è lo stesso della distinct

naturalmente se il secondo campo non serve

sia se scrivi
"SELECT capsec AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" GROUP BY capsec ORDER BY capsec ASC"

che

"SELECT distinct capsec AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" ORDER BY capsec ASC"

il risultato è lo stesso




FORZA LA MAGICA ROMA

FORZA LA MAGICA ROMA
499 messaggi dal 14 luglio 2001
Albis , nella tua reply hai commesso un errore perchè tu definisci socpartner come AS Cap, e come GROUP BY Capsec, e siccome amatteo utilizza socpartner come filtro nella condizione WHERE la definizione del GRUPPO quindi la stringa SQL con GROUP BY deve funzionare...


controlla... :-))

Ciò non toglie che i due metodi sono ugualmente validi, lasciamo la scelta ad Amatteo su quale si trova meglio :-))

CIAO

enzo
www.dnetware.it

Modificato - conidi - 26 Lug 2001 13:32:56

enzo
www.dnetware.it
1.605 messaggi dal 06 settembre 2002
hai ragione non avevo fatto caso a questo particolare, se nella select scrivi WHERE socpartner="&rsCap&" è inutile selezionare il campo socpartner
comunque resta il fatto che

"SELECT capsec AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" GROUP BY capsec ORDER BY capsec ASC"

e

"SELECT distinct capsec AS Cap FROM iniz_fasci WHERE socpartner="&rsCap&" ORDER BY capsec ASC"


restituiscono lo stesso risultato

ed anche la prima select che ho scritto
"SELECT distinct capsec,socpartner FROM iniz_fasci WHERE socpartner = '"& rsCap&"' ORDER BY capsec ASC"

dato che non ci saranno socpartner con valore diverso dato che socpartner deve essere uguale ad un valore prefissato



FORZA LA MAGICA ROMA


Modificato - albis - 26 Lug 2001 13:39:04

FORZA LA MAGICA ROMA
28 messaggi dal 17 maggio 2001
E come si fa allora se si vogliono prendere tutti e due i campi e non c'è il filtro WHERE?

Vale a dire: se ho i dati

capsec|socpartner
-----------------
1 | a
1 | b
2 | a
2 | c
3 | z

e voglio ottenere

1 | a
2 | a
3 | z

come si fa??

Ciao
Alex.D




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.