[ASP] dubbele waarden probleem.

Pagina: 1
Acties:

  • Denga
  • Registratie: September 2000
  • Laatst online: 21-05 01:25

Denga

The riding never stops....

Topicstarter
Heb een scriptje gemaakt die 2 waardes uit een DB haalt en dan controleert op dubbele waardes en mocht dat zo zijn een nieuwe waarde zoekt net zolang tot ze ongelijk zijn:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<%
  Response.Buffer=True

  const adOpenStatic = 3
  const adLockOptimistic = 3

  Set dbcon = Server.CreateObject("ADODB.Connection")
    dbcon.open Session("connectiondb")

  sql = "select * from sponsors"
  Set banner1 = Server.CreateObject("ADODB.Recordset")
  Set banner2 = Server.CreateObject("ADODB.Recordset")
  banner1.CursorType = adOpenStatic
  banner1.LockType = adLockOptimistic
  banner1.Open sql, dbcon
  banner2.CursorType = adOpenStatic
  banner2.LockType = adLockOptimistic
  banner2.Open sql, dbcon

  Randomize Timer
  banner1.Move Int(RND * CInt(banner1.RecordCount))
  banner2.Move Int(RND * CInt(banner2.RecordCount))
  
  if (banner2("ID") = banner1("ID")) then
    banner2.Move Int(RND * CInt(banner2.RecordCount))
        do until (banner2("ID") <> banner1("ID"))
    loop
  end if

  banner1("bekeken") = banner1("bekeken") + 1
  banner1.Update
  banner2("bekeken") = banner2("bekeken") + 1
  banner2.Update

%>
<table border="2">
<tr>
<td>
<%
  ImageString1 = "[img]/holwierde/images/ads/"[/img]"
  ResponseString1 = "<a href=""test2.asp?URL=http://" & banner1("url")
  ResponseString1 = ResponseString1 & "&ID=" & banner1("ID") & """target=""top"">" & ImageString1 & "</a>"
  Response.Write ResponseString1
%>
</td>
</tr>
<tr>
<td>
<%
  ImageString2 = "[img]/holwierde/images/ads/"[/img]"
  ResponseString2 = "<a href=""test2.asp?URL=http://" & banner2("url")
  ResponseString2 = ResponseString2 & "&ID=" & banner2("ID") & """target=""top"">" & ImageString2 & "</a>"
  Response.Write ResponseString2
%>
</td>
</tr>
</table>
<%
    Response.End
  banner1.Close
  banner2.Close
  dbcon.Close
  Set banner1=Nothing
  Set banner2=Nothing
  Set dbcon=Nothing
%>


Nu krijg ik regelmatig tijdens het testen server timeouts, foutmeldingen (error '80020009' line 26) maar heb dus weten te isoleren waar het probleem zit en dat is:

code:
1
2
3
4
5
if (banner2("ID") = banner1("ID")) then
    banner2.Move Int(RND * CInt(banner2.RecordCount))
        do until (banner2("ID") <> banner1("ID"))
    loop
  end if


Maar kan absoluut niet ontdekken waar de fout zit of wat er fout is... :?

Never eat yellow snow...


  • pistole
  • Registratie: Juli 2000
  • Nu online

pistole

Frutter

Ik zou het toch echt als volgt doen:
-open een recordset
-selecteer daaruit "random" je banner_id

-open een tweede recordset met "where banner_id<>" de hierboven geselecteerde banner_id
-selecteer uit de tweede recordset "random" je banner id.

Lijkt me een stuk efficiënter?

Ik frut, dus ik epibreer


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:01

gorgi_19

Kruimeltjes zijn weer op :9

Gooi die output eens op je scherm, ik gok een endless loop.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 21-05 22:25
banner2.MoveNext is een stuk handiger en (afhankelijk van de datamodel) waarschijnlijk al voldoende om dubbelle waarden te voorkomen.

Het is natuurlijk het beste om
code:
1
banner2.Open sql, dbcon
te vervangen door
code:
1
banner2.Open sql & " WHERE ID <> " & banner1("ID")) , dbcon
. Uiteraard moet je dan eerst
code:
1
banner1.Move Int(RND * CInt(banner1.RecordCount))
uitvoeren.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:01

gorgi_19

Kruimeltjes zijn weer op :9

Zit je trouwens nu gewoon het AdRotator component na te bouwen? :?

[ Voor 3% gewijzigd door gorgi_19 op 01-02-2004 21:00 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo