17 messaggi dal 05 agosto 2001
www.macsiti.com
Ciao vorrei una mano sul seguente:

DB=Nazioni.mdb Tabella=Categorie con campi ID,Nazione,Città.
Nazione (Italia,Belgio,Etc CI SONO MOLTE RIPETIZIONI)
Città (Roma,Parigi,NewYork - associata a quella Nazione).

Quello che vorrei fare è mostrare senza le ripetizioni il campo Nazione nella prima SELECT e far sì che quando l'utente seleziona quella nazione nella seconda siano mostrate le Città corrispondenti. Ho provato in vari modi ma mi sono intoppato. Potete aiutarmi?

Codice:

<%
Set catConn = Server.CreateObject("ADODB.Connection")
catConn.Open "DRIVER=Microsoft Access Driver (*.mdb);" _
& "DBQ=" & Server.MapPath("Nazioni.mdb")

' Prendo le Nazioni
Set catRS = catConn.Execute("SELECT ID, Nazione " _
& " FROM Categorie ORDER BY Nazione")
' converto record set in array
catRows = catRS.getRows

' e pulisco
catRS.Close
Set catRS = nothing

' mostro l'ultima scelta dell'utente
catChosen = Request.Form("CategorySelect")
showSubcat = False
If (("X" & catChosen) <> "X") AND (catChosen <> "NONE") Then
' se lo ha fatto
catChosen = CInt(catChosen)
' and say we *will* show subcategories
showSubcat = True
' ottengo le città in base alla nazione
Set subRS = catConn.Execute("SELECT ID, Città " _
& " FROM Categorie" _
& " WHERE ID=" & catChosen _
& " ORDER BY Città")
' converto nuovamente il record set in array
subRows = subRS.getRows
subRS.Close
Set subRS = nothing
End If

' pulisco il più possibile
catConn.Close
Set catConn = nothing
%>

<CENTER><H2>Categorie e Sottocategorie</H2></CENTER>

<FORM Name="Form1" Action="testcat.asp" Method=Post>
<HR><P>
In che nazione vivi?<P>
Prima seleziona la Nazione e poi la Città:<P>

<SELECT Name="CategorySelect" MULTIPLE size=10
onChange="document.Form1.submit();">
<OPTION Value="NONE">-- scegli la Nazione --
<% For cnum = 0 To UBound(catRows,2) %>
<OPTION Value="<%= catRows(0,cnum) %>"
<% If catRows(0,cnum) = catChosen Then %>
SELECTED
<% End If %>
><%= catRows(1,cnum) %>
<% Next %>
</SELECT>

<SELECT Name="SubcategorySelect" MULTIPLE Size=10>
<% If showSubcat = False Then %>
<OPTION Value="0">-- Non hai ancora selezionato --
<% Else %>
<OPTION Value="0">-- scegli la tua Città --
<% For cnum = 0 To UBound(subRows,2) %>
<OPTION Value="<%= subRows(0,cnum) %>"><%= subRows(1,cnum) %>
<% Next %>
<% End If %>
</SELECT>
</FORM></BODY></HTML>

Ho provato a selezionare/raggruppare i campi con SELECT DISTINCT Nazioni as Naz ma poi, in realtà, non sò proprio dove mettere quel Naz.


Marco

Marco
499 messaggi dal 14 luglio 2001
ma per ogni nazione ci sono più di una città ?
e vuoi che se viene selezionata Italia, ti faccia vedere tutte le città nel DB che fanno parte di Italia?

ciao

enzo
www.dnetware.it

enzo
www.dnetware.it
17 messaggi dal 05 agosto 2001
www.macsiti.com
Sì nella Nazione ci sono molte Città. (Sia in Nazioni che in Città ci sono ripetizioni)

Italia - Roma
Italia - Venezia
Francia - Parigi
Italia - Roma

Sò come usare SELECT DISTINCT e fare "la cernita"

In realtà il problema che ho è: Nella form ho molte inserzioni, nome, cognome etc. Arriva il momento in cui deve scegliere Nazione e la Città se faccio fare la Query a questo punto mi cancella tutta la pagina :-( e questo con Javascript è l'unico metodo che ho trovato per non "pulire" i campi della pagina nel momento della ricerca (il click sulla Nazione).



Marco

Marco
499 messaggi dal 14 luglio 2001
Purtroppo devi fare due stringhe SQL distinte, il motivo è semplice, nel momento in cui raggruppi per città, e quindi avrai nome di città diverse, inevitabilmente associata alla città hai la nazione, di conseguenza in un risultato di query non puoi scindere il raggruppamento in modo che hai un solo valore per un campo e 10 per il secondo, quindi puoi fare una cosa, è una idea, puoi fare una distinct su nazioni soltanto in modo che hai solo i valori nazioni e lo metti in una select,
nel frattempo, con la stringa che dopo ti posto, ti trovi gli univoci CITTA, il controllo lo fai con una routine in JS che nel momento che viene selezionata la nazione, passi la variabile nazione alla seconda query che seleziona solo le città della nazione selezionata....
questo a mio avviso è l'unico modo per non fare un aggiornamento pagina.....

la stringa SQL è questa :
sql="SELECT Città FROM Nazioni WHERE Nazione='" & nazione & "' GROUP BY Città"
dove nazione è la variabile selezionata.....

ciao...


enzo
www.dnetware.it

enzo
www.dnetware.it
17 messaggi dal 05 agosto 2001
www.macsiti.com
Mi sono deciso a rifare il database e quindi creare una nuova tabella con ID + citta + NumeroNazione. In tal modo funziona :-)

Grazie x l'aiuto




Marco

Marco
358 messaggi dal 05 marzo 2001
questo è quello che succede quando si implementa (male) una base dati...
Non farebbe certo male approfondire concetti tipo chiavi primarie, esterne, relazioni, integrità referenziale etc...
Si evita di faticare a debuggare il codice dopo.


A.Paterno
Il =:P ianista
'Ascolta Mozart mezz'ora al giorno e ti toglierà il "magone" di torno'

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.