Hej! Vet inte om det funkar i Access, men i SQL kan man skriva följande: Nej det fungerar tyvärr inte för Access, men här följer något som fungerar. Vet inte exakt hur man gör det i access men principen är att du lägger till ett beräknat fält som innehåller rnd och sen sorterar på detta. Efter en massa knep och knåp fick jag ihop en kod som fungerar. Den tar fram 4 unika poster via slump och den är kanske inte den bästa rent programeringstekniskt (går säkert att göra bättre och jag är nybörjare) men den fungerar. strSQL = "SELECT TOP 2 ArtNo, katID, item, price, bildnamn, thumbnail, Descr, Lager, Antal FROM Produkter ORDER BY RND(ArtNo) ASC;" Så har jag i en SQL sats jag använder. Den fungerar för mig, använder den i en del shopar jag har.Problem: Fixar inte en kod i ASP som tar fram fyra unika poster via slump funkti
Jag har en tabell i Access som innehåller en massa poster. Från denna tabellen vill jag slumpa fram 4 unika rs men jag har efter 3 timmar gett upp - får helt enkelt inte till det. Om någon vänlig själ kan skriva en kod som funkar i en ASP sida med en loop så hade det varit kanon.
Jag har följande rs
IID = Unikt ID (räknare)
QID = Antal poster i tabellen (berättar att det finns exempelvis 142 recordset)
TXT = Värdet jag vill använda när jag skriver ut recordset
Jag hade tänkt mig något sånt här:
SQL = "Select Top 4 from TABELL ....(sen vet jag inte hur koden ska se ut)"
rs.Open SQL, MinCon
While NOT rs.EOF
'kod för att skriva ut recordset
rs.MoveNext
Wend
rs.Close
Igen tack för ett verkligen bra forum (sajt) - har lärt mig mycket här - men detta blev för svårt...
Trevlig helg! /KristianSv: Problem: Fixar inte en kod i ASP som tar fram fyra unika poster via slump fu
Select Top 4 * from TABELL order by NEWID()
Sv:Problem: Fixar inte en kod i ASP som tar fram fyra unika poster via slump fu
Jag visar koden som jag har byggt upp den med en del subbar.
<code>
sql="SELECT id, slumpBild FROM t_slumpBild ORDER BY id" 'SQL
CALL MakeRecordSet(RS,sql,connection) 'Jag har en sub för att kunna kalla upp på vilken sida som helst.
CALL GenereaSlump("Bild",RS)' sen har jag gjort en subb för denna med
'SUBBAR OBS i detta fal så har jag skickat med agrumentet Bild, då slumpar den bram ur mina bilder.
'När man skickar med Text, så slumpar den fram text. Det går lätt att ändra så att du får enbart 'ID om du vill
Sub MakeRecordSet(rec,sql,con)
Set rec = Server.CreateObject("ADODB.Recordset")
rec.open sql,con,3,1,1
End Sub
SUB GenereaSlump(wath,rec)
Dim arrData ' Array to Store Data
Dim arrSequencer ' Array to Hold Random Sequence
Dim iArrayLooper ' Integer for Looping
Dim iArraySize ' Size of Data Array
Dim strVariabel,i
arrData = RS.GetRows
RS.close
Set RS = Nothing
iArraySize = CLng((Ubound(arrData, 2) - LBound(arrData, 2))) '+ 1
Randomize
i = CInt(Int((iArraySize * Rnd()) + 1))
strVariabel = arrData(1, i)
if wath = "Bild" then
response.write "<img src=""Bild/slumpBild/" & strVariabel & """ border=""0"" ALLT=""SAW-Bild"" height=""100"">"
elseif wath = "Text" then
response.write strVariabel
end if
END SUB
</code>
Jag hoppas att detta kan hjälpa dig.
[REDIGERAT]
Jag kom på det nu att här får du bara fram en post.Sv: Problem: Fixar inte en kod i ASP som tar fram fyra unika poster via slump fu
ungefär:
SELECT TOP 4 field1, RND() As RandomField
FROM tabell
ORDER BY RandomFieldFIXAT: en kod i ASP som tar fram fyra unika poster via slump
Förklaring:
TABELL1 innehåller bara en post som anger antalet poster i TABELL2
TABELL2 har ett ID fält som är räknare...
<%
Dim PiQ, RnR(3), SnR(3)
SQL = "SELECT * from TABELL1"
rs.open SQL, MinCon
PiQ = rs("ANTAL")
rs.Close
Randomize
RnR(0) = Int(((([PiQ]+1)*Rnd())+1)-1)
WHILE RnR(0) = 0
Randomize
RnR(0) = Int(((([PiQ]+1)*Rnd())+1)-1)
WEND
Randomize
RnR(1) = Int(((([PiQ]+1)*Rnd())+1)-1)
WHILE RnR(1) = RnR(0) OR RnR(1) = 0
Randomize
RnR(1) = Int(((([PiQ]+1)*Rnd())+1)-1)
WEND
Randomize
RnR(2) = Int(((([PiQ]+1)*Rnd())+1)-1)
WHILE RnR(2) = RnR(1) OR RnR(2) = RnR(0) OR RnR(2) = 0
Randomize
RnR(2) = Int(((([PiQ]+1)*Rnd())+1)-1)
WEND
Randomize
RnR(3) = Int(((([PiQ]+1)*Rnd())+1)-1)
WHILE RnR(3) = RnR(0) OR RnR(3) = RnR(1) OR RnR(3) = RnR(2) OR RnR(3) = 0
Randomize
RnR(3) = Int(((([PiQ]+1)*Rnd())+1)-1)
WEND
'Sen öppnar jag databasen varje gång jag vill ha fram uppgifterna som ska användas
SQL = "SELECT * from TABELL1 WHERE ID = " & RnR(0) & ""
rs.open SQL, MinCon
RnR(0) = rs("TEXT")
SnR(0) = rs("FILNAMN_PÅ_BILD")
rs.Close
SQL = "SELECT * from TABELL1 WHERE ID = " & RnR(1) & ""
rs.open SQL, MinCon
RnR(1) = rs("TEXT")
SnR(1) = rs("FILNAMN_PÅ_BILD")
rs.Close
SQL = "SELECT * from TABELL1 WHERE ID = " & RnR(2) & ""
rs.open SQL, MinCon
RnR(1) = rs("TEXT")
SnR(1) = rs("FILNAMN_PÅ_BILD")
rs.Close
SQL = "SELECT * from TABELL1 WHERE ID = " & RnR(3) & ""
rs.open SQL, MinCon
RnR(1) = rs("TEXT")
SnR(1) = rs("FILNAMN_PÅ_BILD")
rs.Close
%>
______________________________
Sen är det bara att använda variablerna... Exempel:
<tr>
<td>
<%=SnR(0)%>">
<img src="<%=RnR(0)%>">
</td>
<td>
<%=SnR(1)%>">
<img src="<%=RnR(2)%>">
</td>
</tr>
och så vidare... :-)Sv: Problem: Fixar inte en kod i ASP som tar fram fyra unika poster via slump fu