Avatar billede KLS Novice
11. december 2002 - 16:58 Der er 7 kommentarer og
1 løsning

!HASTER! - problem med SQL forespørgsel i ASP

Min asp kode ser sådanne ud :

id2 = Request.querystring("id2")

set rshot = Server.CreateObject("ADODB.Connection")
rshot.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:\inetpub\wwwroot\db.mdb"
hot = "SELECT count(*) as Found1 FROM (hot INNER JOIN vote ON hot.Ejerid = vote.Ejerid) where hot.ejerid<>"&id2&" and vote_id<>"&id2
Set hot1 =  Rshot.Execute(hot)
Ialt = hot1("found1")
hot2 = "SELECT * FROM (hot INNER JOIN vote ON hot.Ejerid = vote.Ejerid) where hot.ejerid<>"&id2&" and vote_id<>"&id2
Set hot1 =  Rshot.Execute(hot2)

  Randomize
  RandNum = Int(Rnd * Ialt) + 1
  hot1.MoveFirst
    For i = 1 to RandNum - 1
        hot1.MoveNext
    next

Jeg får så en fejl ved :
ADODB.Recordset error '800a0bcd'
Unknown runtime error

hot1.moveFirst

Det som den skal er
at vælge alle de poster hvor vote_id og ejer id er forskellig fra id2, og her efter skal den vise en post som den finder via Randomize sætningen.

Dette skal bruges til at stemme om forskellige farver på mapper til et kontor hvor hver ansat kan komme med deres forslag, og hvor andre så kan stemme på den.

Men den vil ikke hente en random fra databasen.

Nogle der har en løsning på dette ?
Avatar billede KLS Novice
11. december 2002 - 17:01 #1
Det skal lige siges at databasen har 2 tabeller :
hot indeholder filnavn(link til det billede der skal vises) ejerid(id på den der har oprettet billedet) beskrivelse (beskrivelse af billedet med mappen) billedestr (som er størrelsen på billedet i bytes)

vote indholder Ejerid (id på den ejer man har stemt på) vote_id (ens eget id) og vote (et tal fra 1 til 5)
Avatar billede loss Nybegynder
11. december 2002 - 17:03 #2
hvis du bruger mysql!

var det ikke bedre at først finde det antal der skulle køres random på, med en count(), og så sætte en variabel = random..

og dernæst vælge fra DB med de samme kriterier som i counten, og så bruger limit variablen, 1
Avatar billede KLS Novice
11. december 2002 - 17:09 #3
loss > Se lige her
hot = "SELECT count(*) as Found1 FROM (hot INNER JOIN vote ON hot.Ejerid = vote.Ejerid) where hot.ejerid<>"&id2&" and vote_id<>"&id2
Set hot1 =  Rshot.Execute(hot)
Ialt = hot1("found1")
hot2 = "SELECT * FROM (hot INNER JOIN vote ON hot.Ejerid = vote.Ejerid) where hot.ejerid<>"&id2&" and vote_id<>"&id2
Set hot1 =  Rshot.Execute(hot2)

Er det ikke det du mener ??

og det med at den kun tager en er jo ikke noget problem.
for det er bare at lade være med at smide den i en While sætning
Avatar billede loss Nybegynder
11. december 2002 - 18:04 #4
det jeg tænkte var...

hot = "SELECT count(*) as Found1 FROM (hot INNER JOIN vote ON hot.Ejerid = vote.Ejerid) where hot.ejerid<>"&id2&" and vote_id<>"&id2
Set hot1 =  Rshot.Execute(hot)
Ialt = hot1("found1")

RandNum = Int(Rnd * Ialt) + 1

hot2 = "SELECT * FROM (hot INNER JOIN vote ON hot.Ejerid = vote.Ejerid) where hot.ejerid<>"&id2&" and vote_id<>"&id2&"limit " & RandNum  & ",1"
Set hot1 =  Rshot.Execute(hot2)
Avatar billede loss Nybegynder
11. december 2002 - 18:05 #5
så skulle den gerne via LIMIT funktionen i sql, spring til den rekord der er = RandNum  i det valgte record sæt
Avatar billede KLS Novice
11. december 2002 - 18:32 #6
Andre der har ideer ?
Avatar billede KLS Novice
11. december 2002 - 18:55 #7
Jeg bruger en access database, men det burde sku da kunne lade sig gøre
Avatar billede KLS Novice
11. december 2002 - 19:52 #8
Det var min fejl
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