Chr. Forrestal wrote in news:9ph4ad$dt1$1@sunsite.dk:
> Jeg har et ASP dropdown problem som jeg ikke kan se løsningen på.
>
> Jeg har et ASP site hvor, når man indtaster data kan man vælge
> data fra dropdowns, f.eks. land og køn etc. Disse hentes fra
> databasen og det er der ikke nogle problemer i.
>
> Problemet opstår på mine update sider. Når man f.eks. skal
> opdatere disse data vil jeg gerne ha at den i dropdownen skal
> vise de data der tidligere blev valgt, men samtidigt skal der i
> samme dropdown være muligt at vælge de andre lande.
>
> Dvs. at hvis man, da man oprettede siden, valgte "Danmark" fra en
> lande liste, skal Danmark være valgt i dropdown'en når man går
> ind på update siden, men det skal være muligt at ersattet dette
> valg med f.eks. Tyskland.
>
> Sitet kører på en SQL 7.0
>
Du kan vælge at lave det på (mindst) to måder - én uden SQL og én med.
1.
På den side, hvor du indsætter data i din tabel kan du også lægge dine data
i session-variable. Når du så henter data fra din server, så checker du
sideløbende, om sessionvariablen er sat - og så "gør du noget".
fx:
på Update-siden:
strCountry = request.form("country)
strSQL = "INSERT INTO Table1 (country) VALUES (' & strCountry & "')"
session("country") = strCountry
På display-siden:
<%
strSQL = "SELECT Country FROM CountryTable"
set rs = obj.execute(strSQL)
<select name="country">
<% do while not rs.EOF %>
<option <% if rs("Country") = session("country") then response.write "
selected " end if %>><% = rs("Country") %></option>
<% rs.Movenext
loop
%>
<option
</select>
Du kan også lave det med SQL på serveren. Idéen her er, at du, i stedet for
en enkelt kolonne med landene i, tilføjer endnu en kolonne, der indikerer,
om landet er valgt for den enkelte bruger.
Du har altså to (tre) SELECT-statements
1.
SELECT Country FROM CountryTable
2.
SELECT Country FROM Memberdetail where userID = <something>
Disse kombinerer du så i en LEFT OUTER JOIN:
3.
SELECT
a.Country as aCountry,b.Country as bCountry
FROM
CountryTable a
LEFT OUTER JOIN
(SELECT Country FROM Memberdetail where userID = <something>) b
ON a.Country = b.Country order by a.Country ASC"
Du vil så følgende tabel ud af det
aCountry | bCountry
-------------------
Andorra NULL
Belgium NULL
China China
Denmark NULL
.... hvis China er valgt som land.
Dette recordset bruger du så til at skrive indhold i din dropdown-boks, hvor
du ikke skriver noget, hvis bCountry er NULL ... og ellers skriver du "
selected " i OPTION-tagget, hvis det ikke er NULL.
--
Er du også irriteret over, at din lokale grønthandler ikke slår dine varer
ind på kasseapperatet - og dermed undrager sig moms ? Så bed om en bon.
- Jesper Stocholm -
http://stocholm.dk