[ASP] Access conversie naar MySQL problemen

Pagina: 1
Acties:

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Topicstarter
Ben vandaag bezig geweest de database van mijn site te converten naar MySQL (was namelijk eerst Access) en het grootste deel doet het gewoon zoals het moet.
(behalve dan een stuk sneller ) :p
Alleen er zijn toch enkele eigenaardigheden waarvan ik niet weet waar het aan ligt (zal wel weer iets basics zijn wat ik over het hoofd zie ofzo) :)

De problemen zijn het volgende:

Ik maak in drie verschillende paginas gebruik van bladwijzers, nu gaat het in een pagina goed terwijl het in de twee andere fout gaat en de melding :

De huidige recordset ondersteunt geen bladwijzers. Dit kan een beperking zijn van de voorziening of van het geselecteerde cursortype.

Dit terwijl het exact dezelfde code is! adobvs.inc is ook in al de drie paginas aanwezig dus hier kan het denk niet aan liggen.

De code die ik gebruik is de volgende:

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
page = TRIM( Request.QueryString("page") )
If page = "" Then page = 1

' HTML



'Connect to database
strConnection = "driver={MySQL};server=217.121.xxx.xx;uid=root;pwd=;database=db_name;option=NUM"
Set Con = Server.CreateObject("ADODB.Connection") 
Con.Open strConnection 

Set RS = Server.CreateObject( "ADODB.Recordset" )
RS.ActiveConnection = Con

RS.CursorType = adOpenStatic

RS.PageSize = 10      

sqlString = "SELECT ID, category, datum, member, title, description, times_rated,
rating FROM articles WHERE active=1 ORDER BY datum DESC"



RS.Open sqlString

RS.AbsolutePage = page     '(op deze regel gaat het fout volgens de melding)


While Not RS.EOF AND rowCount < RS.PageSize
rowCount = rowCount + 1

'HTML

RS.MoveNext
WEND


If RS.PageCount > 1 Then

FOR i = 1 to RS.PageCount
If i <> cINT( page ) Then

'HTML

NEXT

End If

RS.Close
Con.Close
Set Con = Nothing
Set RS = Nothing

[ Voor 42% gewijzigd door DeverauX op 22-12-2002 13:39 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Ik ken niet al die cursor typen van ms uit mijn hoef maar je kan ook het LIMIT statement gebruiken in je sql statement ipv van het aan de recordset over te laten

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

En als je het op deze manier probeert?

ASP.NET Visual Basic:
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
page = TRIM( Request.QueryString("page") )
If page = "" Then page = 1

' HTML



'Connect to database
strConnection = "driver={MySQL};server=217.121.xxx.xx;uid=root;pwd=;database=db_name;option=NUM"
Set Con = Server.CreateObject("ADODB.Connection") 
Con.Open strConnection 

Set RS = Server.CreateObject( "ADODB.Recordset" )
sqlString = "SELECT ID, category, datum, member, title, description, times_rated,
rating FROM articles WHERE active=1 ORDER BY datum DESC"
RS.Open sqlString, Con, 3, 1

RS.PageSize = 10      
RS.AbsolutePage = page     '(op deze regel gaat het fout volgens de melding)

While Not RS.EOF AND rowCount < RS.PageSize
  rowCount = rowCount + 1

  'HTML
  RS.MoveNext
WEND

If RS.PageCount > 1 Then
  FOR i = 1 to RS.PageCount
    If i <> cINT( page ) Then
      'HTML
  NEXT
End If

RS.Close
Set RS = Nothing

Con.Close
Set Con = Nothing

[ Voor 8% gewijzigd door robjanssen op 24-12-2002 09:09 ]


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Topicstarter
Ik heb al gevonden wat het is! Duurde wel ff maar ik moet na Con het volgende plaatsen:
Con.CursorLocation = 3

Het werkt nu wel, maar er is wel een ander probleem bij, krijg namelijk een error:

Runtimefout Microsoft VBScript (0x800A01CA)
Variabele maakt gebruik van een automatiseringstype dat niet in VBScript wordt ondersteund.

De gespecificeerde regel waar de fout zou moeten plaatsvinden is (vereenvoudigd):

Dim title
title =RS("title")

If Len(title) > 50 Then
WriteLine "<p>" & Left(title, 50) & "...</p>"

Else
WriteLine "<p>" & title & "</p>"
End If

De datatype is gewoon een Varchar dus ik snap niet waarom deze melding verschijnt!

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Vervang
code:
1
title=RS("title")

eens door
code:
1
title = RS.Fields("title").Value

Verwijderd

Response.WriteLine misschien?

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Topicstarter
Response.WriteLine? Nee WriteLine is hier gewoon een subroutine

Sub WriteLine(strData)
Response.Write strData & vbCrLf
End Sub

niets speciaals dus.

Ik weet al waar het aan lag, ik had de access database met odbc import geconverteerd naar MySQL en deze had voor alle primaire sleutels ( autonum) het datatype int (unsigned!) gebruikt.
Blijkbaar kan VBScript hier niet mee overweg. Maar ja probleem in ieder geval opgelost.

thnx voor de replies.

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones

Pagina: 1