Jag har en applikation som körs i ASP mot en Accessdatabas. I db har jag en tabell som heter Color. Du borde i din tabell ha det lite enklare genom att bara välja om det skall listas alla poster som antingen är YES eller NO. Den tabell jag har - har följande kolumner : ID , ProductID, + en kolumn för vardera färg (obegränsat)Förslag på dynamisk rutin för färgval
Color har ett antal kolumner med olika färgnamn - Röd , Blå, Gul o.s.v., alla kolumner har datatyp Yes/No
Varje post i tabellen har således värdet YES eller NO för respektive färg.
Applikationen anropar databsen enligt följande Sub-kod och bygger en <SELECT> av de färger som har värdet YES.
Sub ColorIn
%><!--#include file="db.inc"--><% 'Öppnar databas och recordset
Dim SQLC
SQLC="SELECT 'Vit' FROM Color WHERE ProductID = " & lngCatalogId & " AND Vit = YES"
SQLC=SQLC & " UNION SELECT 'Blå' FROM Color WHERE ProductID = " & lngCatalogId & " AND Blå = YES"
SQLC=SQLC & " UNION SELECT 'Gul' FROM Color WHERE ProductID = " & lngCatalogId & " AND Gul = YES"
RS.Open SQLC, Conn, 1,2
If RS.EOF = False Then
%>
<b>Färg: </b>
<select name="Color">
<%
do while not RS.eof
%>
<option value="<%= RS(0) %>"> <%= RS(0) %></option>
<%
RS.movenext
Loop
%>
</select>
<%
Else
End If
%><!--#include file="dbclose.inc"--><% 'Stänger databas och recordset
end sub
Alltihop fungerar alldeles utmärkt - men är ju fullständigt statiskt - för om vi vill lägga till en ny färg - eller ta bort en gammal, eller byta namn (ex Blå till marin) - så måste jag in och skriva om hela SQL-satsen - och den är ju inte så smidig precis.
Jag vill ha förslag på hur jag gör om detta till en helt dynamisk funktion på enklaste sätt.
Det jag vill är:
Färgerna ska få heta vad som helst och vara hur många/få som helst (även 0)
Byte av namn på en färg ska inte påverka applikationen
Omöjligt att att bort en färg som används av en produkt.
Varning för namnbyte på färg som används av produkt Sv: Förslag på dynamisk rutin för färgval
<code>
YesNo = "YES" eller YesNo = "NO"
SQLC="SELECT colornames FROM Color WHERE ProductID = " & lngCatalogId & " AND ColorStatus = " & YesNo
</code>
Så din tabell skall innehålla ColorNames och ColorStatus. Jag vet inte om ProductId också är så att det bestämmer VILKA färger som finns tillgängliga. I så fall väljer du även att ha en ny tabell som innehåller ProductId och vilka färger som förekommer för denna produkt.Sv:Förslag på dynamisk rutin för färgval
Kolumnen ProductID är en specifik produkt.
Vardera färgkolumnen markeras med YES om produkten finns i den färgen - annars ""
Jag behöver alltså en dynamisk SQL-sats som ger mig färgkolumnnamnet om posten värde i kolumnen är YES
Citerar Pelle"I så fall väljer du även att ha en ny tabell som innehåller ProductId och vilka färger som förekommer för denna produkt." - tabellen jag har innehåller redan det