Hej! Har en kod som från början var tänkt fungera med accessdatabas men använder nu en mysqldatabas. Så jag har ändrat lite. Jag tror att det är här som du får fel: Det är meningslöst att testa för BOF. Ta bort dom testerna. Jaha... Då är det din move som hamnar utanför recordsetetDagens text funktion med MySQL-databas
Koden skall ta ut ett slumpat id från en databas och sedan lägga in det i en annan tabell tillsammans med dagensdatum om det inte finns något i den nya tabellen med dagensdatum.
Fungerade fint med accessdatabasen men med mysql så får jag följande meddelande:
<code>
ADODB.Field fel '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record.
/sidan/dagens.asp, rad 247
</code>
Det som står på rad 247 (ganska långt ner i koden nedan)är:
<code>
intPointerID = ProfileRS("id")
</code>
Koden för "dagens"-funktionen är:
<code>
<%
Dim objConn
Dim dtmSQLDate
Dim strSQL
Dim rs
Dim intPointerID
Dim ProfileRS
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "databasen"
dtmSQLDate = Month(Date) &"/"& Day(Date) &"/"& Year(Date) & " 00:00:00"
strSQL = "SELECT tipid FROM dagensmedlem WHERE (date ="& CDate(dtmSQLDate) &");"
Set rs = objConn.Execute(strSQL)
If NOT (rs.BOF AND rs.EOF) Then
intPointerID = rs("tipid")
strSQL = "SELECT id, fnamn FROM medlemmar WHERE (id = "& intPointerID &");"
Set ProfileRS = objConn.Execute(strSQL)
If NOT (ProfileRS.BOF AND ProfileRS.EOF) Then
Response.Write("<p><font face=""verdana"" size=""2"">Dagens profil: <strong>"& ProfileRS("fnamn") &"</strong></font></p>")
End If
ProfileRS.Close
Set ProfileRS = Nothing
Else
strSQL = "SELECT id, fnamn FROM medlemmar"
Set ProfileRS = Server.CreateObject("ADODB.RecordSet")
ProfileRS.Open strSQL, objConn, 1
If NOT (ProfileRS.BOF AND ProfileRS.EOF) Then
intRecordCount = ProfileRS.RecordCount
Randomize
ProfileRS.Move Int((intRecordCount) * RND)
intPointerID = ProfileRS("id")
Response.Write("<p><font face=""verdana"" size=""2"">Dagens profil: <strong>"& ProfileRS("fnamn") &"</strong></font></p>")
strSQL = "INSERT INTO dagensmedlem (date, tipid) VALUES ("& CDate(dtmSQLDate) &", "& intPointerID &");"
objConn.Execute(strSQL)
End If
ProfileRS.Close
Set ProfileRS = Nothing
End If
rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>
</code>Sv: Dagens text funktion med MySQL-databas
<code>
Set rs = objConn.Execute(strSQL)
If NOT (rs.BOF AND rs.EOF) Then
</kode>
Bör nog vra:
<code>
Set rs = objConn.Execute(strSQL)
If NOT (rs.BOF AND NOT rs.EOF) Then
</code>Sv: Dagens text funktion med MySQL-databas
If NOT rs.EOF Then
'respektive
If NOT ProfileRS.EOF Then Sv: Dagens text funktion med MySQL-databas
Har ändrat nu men får samma felmeddelande.
Koden ser nu ut så här:
<%
Dim objConn
Dim dtmSQLDate
Dim strSQL
Dim rs
Dim intPointerID
Dim ProfileRS
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "databasen"
dtmSQLDate = Month(Date) &"/"& Day(Date) &"/"& Year(Date) & " 00:00:00"
strSQL = "SELECT tipid FROM dagensmedlem WHERE (date ="& CDate(dtmSQLDate) &");"
Set rs = objConn.Execute(strSQL)
If NOT rs.EOF Then
intPointerID = rs("tipid")
strSQL = "SELECT id, fnamn FROM medlemmar WHERE (id = "& intPointerID &");"
Set ProfileRS = objConn.Execute(strSQL)
If NOT ProfileRS.EOF Then
Response.Write("<p><font face=""verdana"" size=""2"">Dagens profil: <strong>"& ProfileRS("fnamn") &"</strong></font></p>")
End If
ProfileRS.Close
Set ProfileRS = Nothing
Else
strSQL = "SELECT id, fnamn FROM medlemmar"
Set ProfileRS = Server.CreateObject("ADODB.RecordSet")
ProfileRS.Open strSQL, objConn, 1
If NOT ProfileRS.EOF Then
intRecordCount = ProfileRS.RecordCount
Randomize
ProfileRS.Move Int((intRecordCount) * RND)
intPointerID = ProfileRS("id")
Response.Write("<p><font face=""verdana"" size=""2"">Dagens profil: <strong>"& ProfileRS("fnamn") &"</strong></font></p>")
strSQL = "INSERT INTO dagensmedlem (date, tipid) VALUES ("& CDate(dtmSQLDate) &", "& intPointerID &");"
objConn.Execute(strSQL)
End If
ProfileRS.Close
Set ProfileRS = Nothing
End If
rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%> Sv: Dagens text funktion med MySQL-databas
Du kan testa och lägga in testutskrifter för att se vad som händer
intRecordCount = ProfileRS.RecordCount
response.write "Debug:Antal Poster= & intRecordCount & "<br>"
Randomize
Dim steps
steps = Int((intRecordCount) * RND)
response.write "Debug:Steg= & steps & "<br>"
ProfileRS.Move steps