Avatar billede oasen Nybegynder
18. februar 2003 - 23:17 Der er 17 kommentarer og
2 løsninger

RecordCount og MySQL

Jeg kan ikke få RecordCount til at returnere andet end -1.
Har prøvet med flere forskellige cursortyper, men den nedenfor skulle da være god nok...?

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.CursorType = adOpenStatic
rs.Open "Select blablabla", Conn
Response.Write rs.RecordCount

Kan det iøvrigt være rigtigt, der ikke kan bruges Limit, når recordsættet åbnes som vist ovenfor?
Avatar billede medions Nybegynder
18. februar 2003 - 23:21 #1
Det kan du ikke i MySQL! Der er du nødt til at skrive det i regn SQL! og ja, du er nødt til at bruge Limit, TOP er kun en funktion for MS!

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT COUNT(*) FROM blablabla"
Set rs = conn.Execute(strSQL)

Response.Write(rs(0))

//>Rune
Avatar billede oasen Nybegynder
19. februar 2003 - 00:25 #2
Jeg ved godt, at der skal bruges Limit til MySQL, men problemet er, at den melder fejl, hvis jeg tilføjer Limit til SQL'en:

rs.Open "Select blablabla From blabla Limit 5, 15", Conn
Avatar billede eagleeye Praktikant
21. februar 2003 - 12:05 #3
Hvilken fejl får du ? Prøv at tilføje ;

rs.Open "Select blablabla From blabla Limit 5, 15;", Conn
Avatar billede oasen Nybegynder
24. februar 2003 - 04:19 #4
At ODBC ikke understøtter den procedure (noget i den stil).
Avatar billede medions Nybegynder
24. februar 2003 - 07:21 #5
strSQL = "SELECT * FROM tblTabel LIMIT 5, 15"
Set objRs = objConn.Execute(strSQL)

//>Rune
Avatar billede eagleeye Praktikant
24. februar 2003 - 17:12 #6
ODBC driveren er ligeglad med SQL syntaxen så vidt jeg ved.

Hvilken fejl får du?
Avatar billede medions Nybegynder
24. februar 2003 - 20:44 #7
eagleeye> Nope, ikke hos MySQL!

//>Rune
Avatar billede oasen Nybegynder
24. februar 2003 - 22:58 #8
Næ, nu gav den ikke fejl, hvis jeg bruger andre cursor'er. Mystisk - det gjorde den før.
Men jeg er så nødt til at køre både en forespørgsel, der henter data og en der tæller antallet af poster fundet. Som jeg forstår dit svar, Rune..?
Avatar billede eagleeye Praktikant
24. februar 2003 - 23:07 #9
Jeg har svært ved at tror ODBC har problemmer med SQL syntax. Det er jo netop hele fidusen med ODBC at lave et ens interface uafhængigt af database. Jeg tror mere det er recordsetet som har forkerte parametre i stil med cursor type.

Hvad hvis du prøver denne:

Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "Select blablabla From blabla Limit 5, 15;", Conn, 1
Response.Write rs.RecordCount
Avatar billede medions Nybegynder
25. februar 2003 - 00:09 #10
eagleeye> Jeg har prøvet utallige ting, men det eneste der virker er at skrive:

strSQL = "SQL STATEMENT"
Set objRs = objConn.Execute(strSQL)

Set objRs = objConn.Execute("SQL STATEMENT")
Virker heller ikke!

//>Rune
Avatar billede oasen Nybegynder
25. februar 2003 - 09:09 #11
Set objRs = objConn.Execute("SQL STATEMENT")

- virker da fint!?

eagleeye ---> Jeg får ingen fejl, men recordcount returnerer -1.
Avatar billede eagleeye Praktikant
25. februar 2003 - 17:10 #12
Fant lige noget kode som jeg har brugt med Access hvor jeg bruger RecordCount så prøv med:

rs.Open "Select blablabla From blabla Limit 5, 15;",  Conn, 3, 1
Response.Write rs.RecordCount
Avatar billede medions Nybegynder
25. februar 2003 - 22:27 #13
oasen> På de versioner af MySQL jeg har prøvet det med har det ikke virket... Men fair nok, det kan være de har rette "fejlen"...

//>Rune
Avatar billede oasen Nybegynder
26. februar 2003 - 07:49 #14
eagleeye ---> Jeg har selv prøvet med Access. Der er der ingen problemer. Men MySQL siger konstant -1 (også med din sidste sæting)...
medions ---> Det skal jeg ikke kunne sige, men i hvertfald virker det fint på 3.23.53
Avatar billede eagleeye Praktikant
26. februar 2003 - 22:01 #15
hm Ok der er åbenbart noget som ikke er ens fra database til database, så skal du ud i at lave to SQL sætninger.. Først Count og så Den som hendter. Kan mySQL håndtere at udføre flere SQL sætnigner i samme kald som eksvis MSSQL kan??

SQL = "select count(id) from tabel;select id from tabel"
rs.Open SQL, Conn

'Føste udskrive antallet:
Response.write "Antal = " & rs(0)

'Så udskrive data i et loop, føste kaldes rs.NextRecordset for at flytte til den anden SQL
rs.NextRecordset

do while not rs.EOF
  response.write rs("id")
  rs.MoveNext
loop
Avatar billede oasen Nybegynder
26. februar 2003 - 23:47 #16
Flere sætninger? Prøv at vis et eksempel, hvis du gider, så kan jeg sige det.
Avatar billede eagleeye Praktikant
27. februar 2003 - 19:52 #17
Det har vist i sidste kommentar. SQL er lig en som tæller records den næste hendter alle ID fra samme tabel. SQL sætningerne skal adskilles med ;
Avatar billede oasen Nybegynder
05. marts 2003 - 11:30 #18
Nå, sådan... Nej, det kan jeg ikke få til at fungere. Skidt pyt - jeg takker for hjælpen :)
Avatar billede medions Nybegynder
05. marts 2003 - 21:11 #19
Anytime ;o)
Thx 4 Poinz

//>Rune
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