timediaMedlem sedan maj 2001451 inlägg
Har hittat en massa trådar om loop, men ingen som hjälpte mig :r
tblPlattor
-Artnr
-Namn
tblPlattmiljo
-Id
-P1
-P2
-...o.s.v t.o.m.
-P8
-U1
-U2
-...o.s.v t.o.m.
-U8
I tblPlattmiljo finns olika artikelnummer lagrade i fälten P* och i fälten U* är följande värden möjliga: Golv, Vägg, Bård, Mosaik, Pelare, Motiv.
Ex. P1 = 24567 och i U1 finns "Golv", P2 = 12345 och i U2 finns "Vägg"
Kan någon hjälpa mig loopa en ut en miljö där det sorteras på vad slags plattor det är?
headbugMedlem sedan sep. 2006858 inlägg
Är frågan hur du skriver en loop i ASP?
Eller är frågan egentligen hur du formulerar din SQL-sats? :)
Om vi förutsätter att du har fått dina resultat från en SQL-fråga så har du ett recordset som man ofta döper till rs.
Loopen skriver du på följande vis:
do while not rs.EOF and not rs.BOF
' Gör något med dina resultat, räkna eller skriv ut eller så
loop
Läs mer på http://www.elated.com/articles/looping-the-loop/
Men detta svaret hjälper dig inte att sortera på vilka slags plattor för det behöver du ställa en klurig SQL-fråga.
Och då behöver man veta vad som är en slags platta. Är "golv" en slags platta eller är det artikelnumret som är en slags platta. Kan det stå golv i U1 OCH U8? Osv. Beskriv lite bättre hur ett tänkt slutresultat ska se ut :)
timediaMedlem sedan maj 2001451 inlägg
Ja det kan stå golv i t.ex. U2, U6, U7 och det kan stå vägg i U1, U3, bård i U4 och pelare i U5.
Loop har jag läst in mig på, men frågan är väl egentligen om hur man kombinerar loopen med sorteringen.
headbugMedlem sedan sep. 2006858 inlägg
Aha,
man kan säga att en loop inte är så smart och att SQL är jättesmart. Det jag vill säga är att du bör försöka göra all sortering och urval etc redan i din SQL-sats eftersom det språket är byggt för att vara bra på just sådana saker. ASP är väl inte bra på något egentligen :)
Så givet att du sorterat och haft dig i din SQL-sats så är det ju sedan bara att skriva ut varje rad för rad ur det som SQL-frågan spottar ur sig. Dom kommer ju då i "rätt" ordning.
timediaMedlem sedan maj 2001451 inlägg
Såhär ser mina två olika SQL ut:
Visamil = "SELECT * FROM Plattor WHERE Artikelnr LIKE '" & RS("P1") & "' OR Artikelnr LIKE '" & RS("P2") & "' OR Artikelnr LIKE '" & RS("P3") & "' OR Artikelnr LIKE '" & RS("P4") & "' OR Artikelnr LIKE '" & RS("P5") & "' OR Artikelnr LIKE '" & RS("P6") & "' OR Artikelnr LIKE '" & RS("P7") & "' OR Artikelnr LIKE '" & RS("P8") & "'"
Visa = "SELECT * FROM Plattmiljo WHERE '" & Request.QueryString("miljo") & "' IN (P1, P2, P3, P4, P5, P6, P7, P8)"
Hur kan man få detta att sortera?
PS! Jag veta att man inte ska använda SELECT *
Kommer att ändra när det fungerar!
headbugMedlem sedan sep. 2006858 inlägg
Du behöver läsa på om "ORDER BY"
Tex: http://www.devguru.com/technologies/t-sql/7082.asp
Sedan är jag nyfiken på vilken typ av information du vill lagra och hämta ut och varför och hur du designat dina tabeller som dom ser ut. Ofta kan en väldigt knepig kod och SQL-fråga bero på att man tänkt galet när man designade sin databas. Men det är överkurs.
Och för övrigt har du nog en tredje SQL-fråga, var har du fått RS("P1") etc ifrån?
Jag undrar: Kan ett Id ur tblPlattmiljo ha alla P* och U* satta samtidigt och varför i såfall? Och hänger P1 och U1 ihop? Eller är det olika saker. Spelar det roll om "Golv" står i U1 eller U2?
timediaMedlem sedan maj 2001451 inlägg
headbug skrev:
Jag undrar: Kan ett Id ur tblPlattmiljo ha alla P* och U* satta samtidigt och varför i såfall? Och hänger P1 och U1 ihop? Eller är det olika saker. Spelar det roll om "Golv" står i U1 eller U2?
P1...P8 är artikelnumret till den specifika plattan som är användt som (U*) golv eller vägg eller bård o.s.v.
P1 hör ihop med U1, P2 med U2 o.s.v.
headbugMedlem sedan sep. 2006858 inlägg
Så om ett specifikt mönster/platta har använts till fler än 8 saker så går det inte?
Hur använder du ID i tblPlattmiljo då? Finns det någon anledning till att du vill gruppera dom så?
Jag börjar få en känsla av att man skulle vilja strukturera om lite i dina tabeller och då skulle de också bli lite enklare att få ut det du vill ha.
Jag ser framför mig en ny variant av tabellen tblPlattmiljo som bara har kolumnerna ID, P, U och refID där ditt P och U hänger ihop som tidigare, där refID pekar på en "samlande" typ/produkt eller vad du nu vill samla dom som. den första kolumnen ID kanske är överflödig men det känns alltid tryggt att ha ett unikt ID att falla tillbaka på om det skulle börja strula.
Fördelarna skulle vara många, ingen begränsning på 8 saker per typ, enklare sökningar och sorteringar.
Vill du sedan ta ut alla produktID:n som är golv så skriver du
select P from tblPlattmiljo where U = 'Golv'
eller om du vill ta ut alla produkter, sorterade på U (golv, bård etc)
select P, U from tblPlattmiljo order by U
Om du vill ta ut alla produkter av en viss sorts platta med ID 12345:
select P,U from tblPlattmiljo where refID = 12345
då skulle du få produkID och miljö för alla saker som tidigare stog på en rad med P* och U*
Fint va? :)
timediaMedlem sedan maj 2001451 inlägg
headbug skrev:
Så om ett specifikt mönster/platta har använts till fler än 8 saker så går det inte?
Jodå. Begränsningen på antal plattor i en miljö är 8. Räcker mer än väl.
headbug skrev:
Hur använder du ID i tblPlattmiljo då? Finns det någon anledning till att du vill gruppera dom så?
ID i tblPlattmiljo är som du skriver inte nödvändig, men ändå kanske bra att ha.
Själv tycker jag uppbyggnade av db känns logiskt? Frågan är dock fortfarande hur jag loopar ut. Repeterar/förtydligar lite då tråden börjar bli lång:
tblPlattmiljo
-Id (primärnyckel)
-Bild (filnamn)
-Namn (på miljöet t.ex. Johanssons nya bad)
-P1 (artikelnummer på plattan)
-U1 (vad har ovanstående användts till i Johanssons bad, golv, vägg, bård?
-P2 (artikelnummer på plattan)
-U2 (hör ihop med P2)
.........o.s.v. tom P8/U8
-Brodtxt (Pm med infotext om Johanssons bad)
tblPlattor
-Id (primärnyckel)
-Bild (filnamn)
-Artikelnr
-Pris
- m.m som storlek, lagervara, färg
Nu vill jag visa en bild av miljöen. Där ska det loopas ut? vilka plattor som används och i vilken sammanhang dom används. Såhär:
Golv:
En platta 248:- m2
Annan platta också 275:- m2
Vägg:
Ny platta 195:- m2
Bård:
Snyggaste bården 48:- per st.
<% Set RS = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM Plattmiljo WHERE '" & Request.QueryString("miljo") & "' IN (P1, P2, P3, P4, P5, P6, P7, P8)"
RS.Open Visa, Connect %>
<table cellspacing="2" cellpadding="2" border="0">
<tr>
<td><img src="bild1/miljo/big_<%= RS("Bild") %>" alt="" height='400' border="0"></td>
<td><strong>Miljö:</strong><%= RS("Miljo-nr") %><%= RS("Hemmiljo") %><br><br>
<% Visaplattdetalj() %>
</td></tr>
</table>
<% Visaplattor() %>
</body>
</html>
<%
Sub Visaplattor
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visamil = "SELECT * FROM Plattor WHERE Artikelnr LIKE '" & RS("P1") & "' OR Artikelnr LIKE '" & RS("P2") & "' OR Artikelnr LIKE '" & RS("P3") & "' OR Artikelnr LIKE '" & RS("P4") & "' OR Artikelnr LIKE '" & RS("P5") & "' OR Artikelnr LIKE '" & RS("P6") & "' OR Artikelnr LIKE '" & RS("P7") & "' OR Artikelnr LIKE '" & RS("P8") & "'"
RecSet.Open Visamil, Connect %>
<table cellspacing="2" cellpadding="2" border="0">
<tr><%
response.write "Plattor som är använda i ovanstående bild:"
Do Until RecSet.EOF
Response.write "<td><a href='a_present.asp?platta="&RecSet("Id")&"'<img src='bild1/small_"&RecSet("Bild")&"' alt='' width='100' height='100' border='0'><br>"&RecSet("Namn")&"</a></td>"
RecSet.MoveNext
Loop
RecSet.Close
%></tr>
</table>
<% end sub %>
<% Sub Visaplattdetalj
'[B]Här behöver jag loopa fram namnet på plattorna[/B]
end sub
%>
<% RS.Close
Connect.Close %>
timediaMedlem sedan maj 2001451 inlägg
Jag tror jag har koll på loop, men hur knyter jag ihop P1 med U1, P2 med U2 o.s.v?