Just nu i M3-nätverket
Jump to content

Ny post samt att ta bort en....


Wippika

Recommended Posts

HUr skriver jag denna kod på bästa sätt om jag samtidigt först vill ta bort den sista posten i en access databas samt lägga till en ny ????

 

måste man först köra en sql för att ta bort och sedan köra close på recordset och sedan exekvera en ny sql sats som lägger till???

 

//Mvh

Link to comment
Share on other sites

Magnus Ahlkvist

Du ska inte använda något recordset om du ska ta bort eller lägga till en post.

 

conn.execute "delete from tabellen where fältet=värdet"
conn.execute "insert into tabellen (fält1,fält2,..,fältN) VALUES(värde1,värde2,..,värdeN)

 

Men ja, du måste köra två execute för att kunna göra dessa två saker. Hade använt SQL Server istället för Access hade du kunnat göra:

 

conn.execute "DELETE FROM tabellen WHERE fältet=värdet; INSERT INTO tabellen (fält1,fält2,..,fältN) VALUES (värde1,värde2,..,värdeN)

 

Men det går som sagt inte i Access att köra flera statements i samma batch.

 

--

En röst talade till mig och sade:

”Le och var glad, ty det kunde vara värre”.

Så jag log, och jag var glad.

Och det blev värre.

 

Link to comment
Share on other sites

Hej!

 

Nedanstående bör funka förutsatt att användaren har skrivrättighet till access databasen, e g IUSR_DatornsNamn om du kör på en webbsida med anonym åtkomst:

 

sql = "select pkey, field1, field2 from table" ' order by pkey
set rs = server.createobject("ADODB.Recordset")
rs.Open conn, sql, adOpenDynamic, adLockOptimistic

rs.MoveLast
rs.Delete
rs.MoveLast ' kan hoppas över

rs.AddNew
rs.Fields("field1").value = "whatever"
rs.Fields("field2").value = "whatever"

rs.Update
rs.Close
Set rs = Nothing

 

Mvh

 

Jimmy

 

 

 

Link to comment
Share on other sites

Varför inte recordset? Det var den sista posten som "evilaid1" ville ta bort. Med den angivna "delete" satsen, måste man känna till värdet på posten som skall tas bort. Om sql sats skall användas funkar t ex nedanstående (endast testat i SQL):

DELETE FROM tabellnamn
WHERE (pkey IN
     (SELECT MAX(pkey)
      FROM tabellnamn))

 

Mvh

 

Jimmy

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...