Avatar billede T101 Novice
16. marts 2003 - 00:58 Der er 8 kommentarer og
1 løsning

Muligt problem med TOP 1

Jeg har fundet en poll på nettet, som jeg uden problemer kørte med en Access db på min egen PWS. Nu har jeg så uploadet den til serveren og omdannet den til MySQL men den kommer med denne fejl:

ADODB.Recordset.1 error '80004005'

SQLState: 42000
Native Error Code: 1064
[TCX][MyODBC]You have an error in your SQL syntax near '1 * from Poll order by PollID Desc ' at line 1

poll.asp, line 14

Dette er SQl linien:

Query = "Select Top 1 * from Poll order by PollID Desc"

Jeg har prøvet at fjerne TOP 1 delen, og derefter ser den ud til at køre, selvfølelig med en ny fejl da der jo er en grund til at det står der.

Nogen der kan hjælpe med det?

Jeg kan godt smide mere af koden op hvis det skal være.
Avatar billede eagleeye Praktikant
16. marts 2003 - 01:00 #1
Når det er mySQL kan du ikke bruger TOP så skal du bruge LIMIT:

Query = "Select * from Poll order by PollID Desc LIMIT 1"
Avatar billede eagleeye Praktikant
16. marts 2003 - 01:01 #2
Man kan angive to ting til LIMIT
Avatar billede eagleeye Praktikant
16. marts 2003 - 01:02 #3
doh..
Man kan angive to ting til LIMIT både en start og en længde:

eks hendter fra record nr 10 og de næste 100 frem.:
.. LIMIT 10,100
Avatar billede T101 Novice
16. marts 2003 - 01:13 #4
Det ser ud til at have fixet det probæem, jeg får dog en anden fejl nu:

error '800a0cc1'

ADO Could not find the object in the collection corresponding to the name or ordinal reference requested by the collection.

poll.asp, line 27

Sig til hvis der skal enten mere kode eller flere point på bordet :-)
Avatar billede eagleeye Praktikant
16. marts 2003 - 01:15 #5
Det betyder som regel man prøver at udskrive fra en kolonne i et recordset som ikke findes i databasen...:

Response.write rs("kolonnenavn_findes_ikke")
Avatar billede T101 Novice
16. marts 2003 - 01:25 #6
Jeg har lige checket efter, at alt er stavet rigtigt. Koden ser sådan ud:

<%
If Request.Form("Submit").Count > 0 then
If Request.Form("PollOption") <> "" then
  If (Request.Cookies("ReadyPoll")) <> rst("PollName") or Cookiess = "No" then
    Response.Cookies("ReadyPoll") = rst("PollName")
--------------------------------------------------------------------------   
rst("PollOption" & CInt(Request.Form("PollOption")) & "Rank") = rst("PollOption" & CInt(Request.Form("PollOption")) & "Rank") + 1
--------------------------------------------------------------------------
rst("Total") = rst("Total") + 1
rst.Update
Msg = "Your vote was counted."
Else
Msg = "You have voted before!"
End If
Else
Msg = "Your vote was not counted!"
end if
end if
If Request.Form("Submit").Count > 0 or Request.QueryString("p") = "Results" then
%>

Det er stykket mellem linierne der er linie 27 og altså der problemet ligger.

db'en har felterne PollOption(1-8) og PollOptionRank(1-8)

Den har selvfølelig også andre som PollName og Total men dem ser der ikke ud til at være problemer med ... endnu altså :-)
Avatar billede T101 Novice
16. marts 2003 - 01:30 #7
Hmm underligt .. Nu står der at fejlen er på linie 63, selvom jeg ikke har ændret noget ... Fejlen er dog stadig den samme ...
Avatar billede eagleeye Praktikant
16. marts 2003 - 01:34 #8
Prøv evt at udskrive dette for at tjekke om navnet passser:

response.write "PollOption" & CInt(Request.Form("PollOption")) & "Rank"
Avatar billede T101 Novice
16. marts 2003 - 01:50 #9
Udskriver dette:

PollOption1Rank
eller
PollOption2Rank

Alt efter hvad man stemmer.

Det med at den angav fejl linien som linie 63 var forresten fordi jeg havde glemt at slå cookien fra, så jeg kun kunne stemme 1 gang :-)
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