Just nu i M3-nätverket
Gå till innehåll

Skriva till databasen


TheMaraja

Rekommendera Poster

Hejsan håller på med ett projekt i skolan. Först ska man hämta ett värde från databasen och skriva ner i en variabel, sedan ska man använda sig av den variabeln när man skrier till databasen. Jag får det inte att fungera, man kan inte öppna recordset två gånger...snälla någon som har en lösning...här är en bit av koden...

 

Tack //Mary - Päry

 

 

set objConnection = server.CreateObject("ADODB.Connection")'här instansierar vi ett connection objekt.

set objRecordset = server.CreateObject("ADODB.Recordset")

 

objConnection.Open strConnect 'strConnect hämtar vi från include filen dataconnection.asp

 

strSQL = " "

strSQL = strSQL & "SELECT MAX(id) AS max_id FROM message;"

 

 

objRecordset.Open strSQL, objConnection 'adOpenDynamic, adLockUnspecified, adCmdText 'cursor type...betyder att den läser uppifrån o ner

 

intMessageId = objRecordset("max_id")

intMessageId = intMessageId + 1

'response.write intMessageId

 

 

strSQLInsert = " "

strSQLInsert = strSQLInsert & "INSERT INTO message(id, to_email, from_email, subject, message) VALUES('"& intMessageId & "','"& strTo & "','" & strFrom & "','" & strSubject & "','" & strtext & "');"

 

objRecordset.Open strSQLInsert, objConnection 'adOpenDynamic, adLockUnspecified, adCmdText

Länk till kommentar
Dela på andra webbplatser

1. Du stänger inte recordsetet innan du öppnar det igen.

2. Du behöver inte skapa ett recordset för en INSERT, du får ju inte ut några data (förutom hur många poster som påverkas). Gör istället en enkel

objConnection.execute(strSQLInsert)

 

/Niklas

 

Länk till kommentar
Dela på andra webbplatser

Det där är ingen bra metod. Lägg till en räknare/identity för tabellen istället. Då skapas ett nytt unikt värde vid insert.

 

 

Om du gör en insert så behövs det inget recordset.

 

strSQLInsert = " "

strSQLInsert = strSQLInsert & "INSERT INTO message(id, to_email, from_email, subject, message) VALUES('"& intMessageId & "','"& strTo & "','" & strFrom & "','" & strSubject & "','" & strtext & "');"

 

objConnection.execute strSQLInsert,,128 ' adExecuteNoRecord

 

 

Länk till kommentar
Dela på andra webbplatser

Koden blir alltså:

 

set objConnection = server.CreateObject("ADODB.Connection")

set objRecordset = server.CreateObject("ADODB.Recordset")

 

objConnection.Open strConnect

strSQL = ""

strSQL = strSQL & "SELECT MAX(id) AS max_id FROM message;"

 

 

objRecordset.Open strSQL, objConnection 'adOpenDynamic, adLockUnspecified, adCmdText

 

intMessageId = objRecordset("max_id")

intMessageId = intMessageId + 1

 

objRecordset.Close

 

strSQLInsert = ""

strSQLInsert = strSQLInsert & "INSERT INTO message(id, to_email, from_email, subject, message) VALUES('"& intMessageId & "','"& strTo & "','" & strFrom & "','" & strSubject & "','" & strtext & "');"

 

objConnection.Execute(strSQLInsert)

 

objConnection.Close

 

[inlägget ändrat 2002-10-24 13:44:17 av Fribbe]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...