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

Ny post samt att ta bort en....


Wippika

Rekommendera Poster

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

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

Öööö vänta nu... du ska ta bort en och föra en ny? -1+1=0 =)

 

skriv bara över den du ska ta bort med den nya infon kanske.

 

Länk till kommentar
Dela på andra webbplatser

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

 

 

 

Länk till kommentar
Dela på andra webbplatser

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

 

 

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...