Microsoft VBScript runtime error '800a000d' if satserna vara bara att sätt fnuttar på = "0". Det kan ju hjälpa om man får ett felmedelande och ser koden i sit samhang. Du blandar antagligen strängar och tal på ett felaktigt sätt. Kan tänka mig att du har "" runt ett tal som du skickar in i variablerna antal eller pageSize. Det som är mysko är att det har funkat på alla andra hotell utom det jag kör på nu! lite skumt. här är koden. Testa följande. får deta felet då när jag la in koden Jag skulle skrivit det stycket så här: Det är det magiska "värdet" Empty som spökar. Skall titta på det när bakfyllan e borta. Tack så jätte mycket för allt hjälp du rockar. Nu har jag testat, det so strular är att sidor = (antal-1) / pageSize + 1 där blire type mismatch! Är du säker på att <code>antal = Conn.Execute("SELECT Count(*) FROM nyhet").Fields(0)</code> inte blir 0 då? Const pageSize = 10 Vad jag kan se så måste du ha angett fel värdetyp i databasen. Nu funkar det, tack så jätte mycket för all hjälp från er!! Felet är vilken typ värdet kommer som från databasen. Text eller ett tal. Du har antagligen sparat det som text i databasen och därför kommer det ut som "1" istället för 1. CInt() gör om det till en integer, dvs ett tal, igen. Eftersom det inte är en sparad kolumn, resultatet av en Count(*) finner jag detta mycket besynerligt att Access skulle retunera en annan datatyp än en undertyp tal för varianten. <b>Det förklarar saken.</b>Fel på webbhotellet.
Type mismatch
/news.asp, line 8
Får jag på varan sida, särkilt där jag använder plus tecken.
Men oxå i olika if satser. Jag har precis köpt ett paket på crystone.
Nån som har en anning? Sv: Fel på webbhotellet.
men den här koden strular. nån som har nån idé?
sidor = (antal-1)/pageSize + 1Sv:Fel på webbhotellet.
Felt kan ju ligga ovanför och yttrar sig först på den aktuella raden.Sv:Fel på webbhotellet.
ThomasSv: Fel på webbhotellet.
Sv:Fel på webbhotellet.
<%If Request.QueryString("newsID") = "" Then
pageSize = Nyheter
sida = request.querystring("sida")
if sida = "" then sida = 1
antal = Conn.Execute("SELECT Count(*) FROM nyhet").Fields(0)
sidor = (antal-1)/pageSize + 1
SQL = "SELECT rubrik,datum,nyhet FROM nyhet Order By newsID desc limit " & (sida-1)*pageSize & "," & pageSize
Set RecSet = Conn.Execute(SQL)
If antal = 0 Then%> Sv: Fel på webbhotellet.
Har försökt lägga till lite kod för att säkerställa att koden fungerar bra i de fall jag just nu kan komma på. Eventuellt ordnar detta också ditt problem.
Notera att det enda jag gjort är att lägga till cint(), cstr() och isnumeric() funktionerna. Dessa säkerställer att du arbetar med rätt datatyper.
Om det fortfarande blir fel måste du kontrollera vad variablerna innehåller, så att de bara innehåller tal när de bara ska ha det etc...
<code>
<%
If Request.QueryString("newsID") = "" Then
pageSize = Nyheter
sida = request.querystring("sida")
if not isnumeric(sida) then sida = 1
antal = Conn.Execute("SELECT Count(*) FROM nyhet").Fields(0)
sidor = (cint(antal) - 1)/cint(pageSize) + 1
SQL = "SELECT rubrik,datum,nyhet FROM nyhet Order By newsID desc limit " & cstr((cint(sida) - 1) * cint(pageSize)) & "," & pageSize
Set RecSet = Conn.Execute(SQL)
If cint(antal) = 0 Then
%>
</code>Sv:Fel på webbhotellet.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.1.10a-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1,1' at line 1
/news.asp, line 13 Sv: Fel på webbhotellet.
<%
Const pageSize = 10 'Eller vad du nu angivit
If Request.QueryString("newsID") = "" Then
Set rs = Conn.Execute("SELECT Count(*) NumberOfRecords FROM nyhet")
antal = rs.Fields(0)
rs.Close
sida = CStr(Request.Querystring("sida"))
If IsNumeric(sida) Then
sida = CLng(sida)
If sida < 1 Then
sida = 1
ElseIf sida > antal Then
sida = antal
End If
Else
sida = 1
End If
sidor = (antal-1) / pageSize + 1
SQL = "SELECT rubrik, datum, nyhet" + vbCrLf + _
"FROM nyhet" + vbCrLf + _
"ORDER BY newsID DESC" + vbCrLf + _
"LIMIT " & (sida-1) * pageSize & ", " & pageSize
Set RecSet = Conn.Execute(SQL)
If RecSet.EOF Then
'Kod som visar att det saknas nyheter...
Else
'Kod som presenterar sidans nyheter...
End If
RecSet.Close
%>
Jag tycker det är fult/farligt att d inte stänger de recordset du skapar.
Bara för du kör Execute betyder det inte att du slipper stänga det.
Sv: Fel på webbhotellet.
Om du jämför empty som tal är det 0.
Om du jämför empty som är det en tom sträng.
På så sät tror koden att du befiner dig på sida 0 för att du inte angivit ett sidnummer. 0-1=-1.
I limit funktionen är det inte tillåtet att börja från ett negativt värde. Därav syntax fel.Sv:Fel på webbhotellet.
Sv: Fel på webbhotellet.
som förrut, men ger ja "johan" värdet 20 t.ex och sen skriver sidor = (johan-1) / pageSize + 1
så funkar det. Någon anning? =)Sv:Fel på webbhotellet.
ThomasSv: Fel på webbhotellet.
väl ? jag har inte så bra koll.
Men när jag pillar så är det "antal" som strular och ja fattar inte varför.Sv:Fel på webbhotellet.
Ändra:<code>antal = rs.Fields(0)</code> till <code>antal = CInt(rs.Fields(0))</code>
ThomasSv: Fel på webbhotellet.
Lätt värt att supporta sidan här.
En fråga bara kan du förklara snabbt vad skillnaden blev när jag ändrade, den läser la samma ändå?Sv:Fel på webbhotellet.
Så egentligen borde du fixa felet istället för symptomen, alltså ändra till rätt datatyp i databasen.
ThomasSv: Fel på webbhotellet.
Sv:Fel på webbhotellet.
Borde inte MySQL också presentera tal som just tal?
Thomas