Hej!
Jag har strulat till det ganska rejält här, men jag hoppas att någon kan hjälpa mig!
Koden ska kontrollera dubbletter i databasen när man ska lägga in en ny post...
<%
strNamn = Request.Form("NAMN")
strNamn2 = Request.Form("NAMN2")
Set minConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("databas.mdb")
minConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
' Kolla om det finns en dubblett.
SQL1 = "Select * From TABELL Where NAMN='" & strNamn & "' & " & " NAMN2 ='" & strNamn2 & "'"
rs.Open SQL1, minConn, 1, 2
If rs.EOF Then
' Ingen dubblett hittad...lägg till i databasen.
SQL2 = "Select * From TABELL Where 1=2"
' Rad 30 nedan
rs.Open SQL2, minConn, 1, 2
rs.AddNew
rs("NAMN") = strNamn
rs("NAMN2") = strNamn2
rs.Update
rs.Close
Response.Write "<b>Namnet inlagt i databasen.</b>"
Else
%>
Namnet "<%= strNamn %> <%= strNamn2 %>" finns redan i databasen.
<a href="javascript:history.back(-1)">Tillbaka till lägg-till-formuläret.</a>
<% End If %>
Här är felmeddelandet:
ADODB.Recordset fel '800a0e79'
Åtgärden som programmet begärt är inte tillåten om objektet är öppet.
/set/add2.asp, rad 30
Som sagt...har trasslat till det...
=)
/Henrik
CatZMedlem sedan jan. 20022 440 inlägg Måste man inte göra 2 olika recordsets dvs rs1 och rs2 ihop med SQL1,2 ?
@ndersMedlem sedan juni 200032 969 inlägg Förkortning (och förbättring) av din kod:
<%
strNamn = Request.Form("NAMN")
strNamn2 = Request.Form("NAMN2")
Set minConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("databas.mdb")
minConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
' Kolla om det finns en dubblett.
SQL1 = "Select * From TABELL Where NAMN='" & strNamn & "' & " & " NAMN2 ='" & strNamn2 & "'"
rs.Open SQL1, minConn, 1, 2
If rs.EOF Then
' Ingen dubblett hittad...lägg till i databasen.
[b]SQL2 = "INSERT INTO TABELL (NAMN, NAMN2) VALUES ('" & strNamn & "', '" & strNamn2 & "')"[/b]
minConn.Execute SQL2,,128
Response.Write "<b>Namnet inlagt i databasen.</b>"
Else
%>
Namnet "<%= strNamn %> <%= strNamn2 %>" finns redan i databasen.
<a href="java script:history.back(-1)">Tillbaka till lägg-till-formuläret.</a>
<% End If %>
Om du ska återanvända ett recordset på det sättet du försökte göra, så måste du stänga det först, med rs.close.
Mvh,
pontaMedlem sedan juli 200237 inlägg Prova med det här... Du kan inte öppna ett redan öppet recordset, det gör du på rad 30...
<%
strNamn = Request.Form("NAMN")
strNamn2 = Request.Form("NAMN2")
Set minConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
MdbFilePath = Server.MapPath("databas.mdb")
minConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
' Kolla om det finns en dubblett.
SQL1 = "Select * From TABELL Where NAMN='" & strNamn & "' AND NAMN2 ='" & strNamn2 & "'"
rs.Open SQL1, minConn, 1, 2
If rs.EOF Then
' Ingen dubblett hittad...lägg till i databasen.
SQL2 = "INSERT INTO TABELL(NAMN, NAMN2) VALUES('" & strNamn & "','" & strNamn2 & "')"
minConn.Execute SQL2,,128
Response.Write "<b>Namnet inlagt i databasen.</b>"
Else
%>
Namnet "<%= strNamn %> <%= strNamn2 %>" finns redan i databasen.
<a href="java script:history.back(-1)">Tillbaka till lägg-till-formuläret.</a>
<%
End If
rs.Close%>
Ok!
Tack för hjälpen, ska testa så fort jag kan!
/Henrik