Avatar billede kiddoe Nybegynder
30. juli 2006 - 20:43 Der er 6 kommentarer og
2 løsninger

randomize i function

Halløj, Jeg sidder og arbejder med denne randomize der ligger i en function - når jeg indsætter Show() 10 gange på en side viser siden mellem 0 og 10 udtræk (access) - hvordan kan det være? - den skulle jo gerne vise 10 hvergang :)

Function Show()
    Randomize
    RandNum = Int(Rnd * Ialt) + 1
    Record.MoveFirst
    For i = 1 to RandNum - 1
    Record.MoveNext
    next
    tekst = record("tekst")
response.write tekst
End Function
Avatar billede madeindk Nybegynder
30. juli 2006 - 20:59 #1
Funktionen skal kun indsættes en gang.

Altså

<%
Function Show()
    Randomize
    RandNum = Int(Rnd * Ialt) + 1
    Record.MoveFirst
    For i = 1 to RandNum - 1
%>

Omkring din db forbindelse hvor den skal vises...

<%
Record.MoveNext
next
tekst = record("tekst")
%>
Avatar billede kiddoe Nybegynder
30. juli 2006 - 21:26 #2
Det kan jeg ik' få til at virke - den skulle gerne bygge en tabel - kan jeg få dig til at vise mig det - her er koden...


<%
  Function Show()
    Randomize
    RandNum = Int(Rnd * Ialt) + 1
    Record.MoveFirst
    For i = 1 to RandNum - 1
    Record.MoveNext
    next
    desc = record("description")
    if len(desc)>100 then
    desc = left(desc,100)
    hea = record("headline")
    if len(hea)>25 then
    hea = left(hea,25)
    response.write "<td width=""33%"" valign=""top"" bgcolor=""" & scolor & """>"
    response.write "<font face=""arial"" size=""2""><b><a href=""shopinfo.asp?catid="&record("idcategory")&"&shopid="&record("id")&""
    response.write """>"
    response.write "" & hea & ""
    response.write "</a></b></font><br><font face=""arial,verdana"" size=""-1"">" & desc & ""
    response.write "</font></td>"
    end if
    end if
    end function
%>



<%
dim i,results,record,sgl,rs
dim cellString
  Set Rs = Server.CreateObject("ADODB.Connection")
  DBPath = "DBQ=" & server.mappath("/db/db.mdb")
  Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
  Sql = "Select count(*) as Found from Banner where hosttype = 1"
  Set Record =  Rs.Execute(Sql)
  Ialt = Record("found")
  response.write "Records: " & ialt
  Sql = "Select * from Banner where hosttype = 1"
  Set Record =  Rs.Execute(Sql)
  if record.eof then
  response.write("Ingen records.")
  else
  Response.write "<table bgcolor=""ffcc00"" bordercolor=""FFFF00"""
  Response.write "border=""1"" width=""100%"" cellpadding=""4"" cellspacing=""1""><tr>"
  count=0
  ci = 1
  do while not record.eof
  If iswitch = TRUE then
  scolor = gsColorTWOfront
  iswitch = False
  Else
  scolor = gsColorONEfront
  iswitch = TRUE
  End If
  count=count+1
  if count<=12 then
'**************************** indsætter function her
  cellstring = show()
  if not ci mod 3 = 0 then
  response.write(cellString)
  else
  response.write (cellstring)
  Response.write "</tr><tr>"
  end if       
  ci = ci + 1
  end if
  record.movenext
  loop
  Response.write "</table>"
  end if
%>
Avatar billede kiddoe Nybegynder
30. juli 2006 - 21:33 #3
Avatar billede nielle Nybegynder
30. juli 2006 - 22:33 #4
Randomize bør ikke være inde i funktionen. Hvis den er det, bliver den kaldt en gang hver gang funktionens kaldes. Randomize bør derimod kun kaldes *en* eneste gang totalt hvis den skal virke efter hensigten.
Avatar billede kiddoe Nybegynder
30. juli 2006 - 23:00 #5
hmm :( - okay - lægger i ikke et svar begge to så kan i dele...
Avatar billede madeindk Nybegynder
30. juli 2006 - 23:38 #6
Svar :-)
Avatar billede nielle Nybegynder
31. juli 2006 - 09:30 #7
Jeg vil anbefale disse to artikler af arne_v om tilfældige tal:

http://www.eksperten.dk/artikler/680
http://www.eksperten.dk/artikler/686

De beskriver nogle af de mest almindelige fælder som folk falder i mht. at bruge tilfældige tal i programmer.

... og et svar :^)
Avatar billede kiddoe Nybegynder
31. juli 2006 - 23:49 #8
Jeg takker - min løsning ser sådan ud..

<%
Function Show()
    response.write "<td width=""33%"" valign=""top"" bgcolor=""" & scolor & """>"
    response.write " --- indhold ---- "
    response.write "</td>"

End Function
%>

<%
OpenDb
inDB = rs.RecordCount
  Response.write "<div class=""cmenu""><table bgcolor=""ffcc00""
  bordercolor=""FFFF00"""
  Response.write "border=""0"" width=""100%"" cellpadding=""4""
  cellspacing=""1""><tr>"
If inDB > 12 then
  Randomize timer
  newId = Int (rnd*inDB)
  strIndex = "," & newid & ","
  indexFound = 1
  count=0
  ci = 1
Do while indexFound <12
Do
  Newid = Int (rnd*inDB)
  Loop while inStr(strIndex,"," & newid & ",") > 0
  strIndex = strIndex & newid & ","
  indexFound = indexFound + 1
  Loop
  strIndex = mid (strIndex,2,len(strIndex)-2)
  myArr=split(strIndex,",",-1)
  For i = Lbound(myArr) to Ubound(myArr)
  rs.move myArr(i),1
  desc = rs("description")
  hea = rs("headline")
  if len(desc) > 120 then
  strDesc = left(desc, 120) & "..."
  else
  strDesc = desc
  end if
  if len(hea)>30 then
  strHea = left(hea,30) & "..."
  else
  strHea = hea
  end if
  If iswitch = TRUE then
  scolor = gsColorTWOfront
  iswitch = False
  Else
  scolor = gsColorONEfront
  iswitch = TRUE
  End If
count=count+1
  if count<=9 then
  cellstring = show()
if not ci mod 3 = 0 then
  response.write(cellString)
  else
  response.write (cellstring)
  response.write "</tr>"
end if       
ci = ci + 1
end if
next
end if
Response.write "</table></div>"
CloseDb
%>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester