Avatar billede simtex Nybegynder
18. februar 2002 - 21:12 Der er 5 kommentarer og
1 løsning

Problmer med random udtræk....

Jeg bruger følgende kode, og har prøvet alt hvad jeg lige kan forestille mig, men det virker ikke:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("db/comment.mdb")

Randomize Timer

strSQL = "SELECT * FROM comment WHERE vis = -1 ("&_
    "SELECT * FROM comment WHERE ID = ("&_
    "SELECT Min(ID) FROM comment WHERE ID >= (" &_
    "SELECT Round(CDbl(" & Replace(Rnd(),",",".") &_
    "*Max(ID))) FROM comment)))"


set rs = Conn.execute(strSQL)
    %>

Hvad gør jeg galt den kommer med følgende fejl-meddelse:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Invalid use of '.', '!', or '()'. in query expression 'vis = -1 (SELECT * FROM comment WHERE ID = (SELECT Min(ID) FROM comment WHERE ID >= (SELECT Round(CDbl(0.8421747*Max(ID))) FROM comment)))'.

/Håber på hjælp...
Avatar billede stigc Nybegynder
18. februar 2002 - 21:22 #1
hvad er du du prøver på ? :) Så kan det jo være vi kan hjælpe....
Avatar billede simtex Nybegynder
18. februar 2002 - 21:25 #2
ok problemet består i at jeg vil udtrække en tilfældig post, fra min tabel [comment] det virker også godt nok, så længe jeg undlader FROM comment WHERE vis = -1 ("&_  og så en af parenteserne tilslut. Men når jeg føjer det til går det i kage, og jeg har brug for linjen fordi jeg har en ja/nej værdi i min tabel som også skal valideres, hvis den ikke er med tager den jo alt fra databasen som random og det vil jeg ikke have....

Håber i forstår hvad jeg mener....jeg troede egentlig det var et nemt spørgsmål :D
Avatar billede stigc Nybegynder
18. februar 2002 - 21:40 #3
har ud prøvet:

strSQL = "SELECT * FROM comment WHERE vis = -1 AND ID = ("&_
  "SELECT Min(ID) FROM comment WHERE ID >= (" &_
    "SELECT Round(CDbl(" & Replace(Rnd(),",",".") &_
    "*Max(ID))) FROM comment))"


din brug af random kan jeg ikke lige gennemskue....
Avatar billede simtex Nybegynder
18. februar 2002 - 21:56 #4
Argghhh, jeg tror du er inde på noget af det rigtige men det virker stadig ikke...så jeg opgiver sq bare og laver det på en anden måde :(
Avatar billede coltau Juniormester
18. februar 2002 - 23:05 #5
Denne her kode kan vælge en tilfældig record. Du skal blot ændre SQL-sætningen til kun at omfatte de records du ønsker at der må vælges i mellem.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("db/comment.mdb")
set RS = Server.CreateObject("ADODB.Recordset")
RS.CursorLocation = 3 ' adUseClient
RS.CursorType = 3 ' adOpenStatic
RS.Open "select * from comment where vis=-1", Conn, , , &H0001 ' adCmdText

if not RS.EOF then
  randomize
  P = int(RS.RecordCount * rnd)
  RS.Move(P)
  response.write("Valgt:" & RS("id"))
else
  response.write("der er ikke noget at vælge i mellem. !")
end if
%>

SQL-sætningen mangler kun dit Ja/nej-felt.
Avatar billede simtex Nybegynder
19. februar 2002 - 20:53 #6
Kanon det var jo lige det jeg skulle bruge, selv om jeg havde fået det lavet på en anden måde...fordi da jeg kom til at tænke nærmere over det kunne det jeg hvade tænkt mig jo selt ikke lade sig gøre på den måde.

Men mange tak for svaret, det vil jeg bruge i stedet så kan jeg spare noget DB plads :D
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