Får felmeddelandet
Error Type:
(0x80040E24)
skapatest_ok.asp, line 15
Rad 15 är RS.MoveLast
Jag vill mata in i en databas värdet på de kryssrutor som är förbockade (de värden som kommer i Request.Form + knappen "skapa", därav if-satsen)
Jag vill få fram ett testnummer som ska vara samma som det senast inmatade testnumret + 1.
---------------------------------------------------------------------------
Set RS = Server.CreateObject("ADODB.Recordset")
MySQL = "SELECT @@IDENTITY"
Set RS = MyConn.Execute(MySQL)
If RS.EOF OR RS.BOF then
testnr = 0
else
RS.MoveLast
testnr = RS(0)
end if
testnr = testnr + 1
for each field in request.form
if field <> "skapa" then
MySQL = ""
MySQL = "INSERT INTO tbltest (fldKodfrg, fldtestnr) VALUES('" & field & "', '" & testnr & "')"
Set RS = MyConn.Execute(MySQL)
end if
next
MyConn.close
---------------------------------------------------------------------
Några tips..? Börjar bli riktigt SLUT i huvudet...
Har du gjort en insert med samma connectionobjekt? Annars kommer inte värdet att stämma (då får antagligen ett nullvärde, och då är det inte konstigt om felmeddelandet kommer för att du försöker lägga till ett till null).
Om du vill ha det högsta värdet i en viss kolumn kan du ju alltid använda MAX i din select-fråga.
Får du verkligen ingen mer info i felmeddelandet? Den väsentliga informationen saknas i meddelandet.
Du behöver aldrig använda MoveLast när du ställer en SELECT-fråga som alltid returnerar en post.
Får inget felmeddelande längre, sidan visas som den ska, men inget matas in i databasen...
-----------------------------------------------------------------------
Set RS = Server.CreateObject("ADODB.Recordset")
MySQL = "SELECT @@IDENTITY"
Set RS = MyConn.Execute(MySQL)
If RS.EOF then
testnr = 0
else
testnr = RS(0)
end if
testnr = testnr + 1
for each field in request.form
if field <> "skapa" then
MySQL = ""
MySQL = "INSERT INTO tbltest (fldKodfrg, fldtestnr) VALUES('" & field & "', '" & testnr & "')"
Set RS = MyConn.Execute(MySQL)
Ja, jag använder samma connection-objekt. Ändrade till MAX och nu funkar det! (Tror jag... har inte tagit bort alla poster i databasen och försökt lägga in men...)
Om tabellen är tom och du använder MAX(), kommer du förmodligen också få en post med endast null i. Så istället för att kontrollera om recordsetet är EOF kan du använda IsNull() för att se om värdet i fältet är just null.