GimboMedlem sedan dec. 20001 630 inlägg Hejsan!
Har en databas med tabellerna ordrar och kortnummer som relation i databasen. När jag försöker radera en post där kunden har anget sitt kortnummer så får jag detta felmeddelande:
Microsoft JET Database Engine error '80004005'
The record cannot be deleted or changed because table 'kortnummer' includes related records.
så här ser koden för att radera en post ut:
<%
'0===================================================================================0
' Ta bort order
'0===================================================================================0
'on error resume next
Set Database = Server.CreateObject( "Adodb.Connection" )
Database.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("databasen.mdb")
Database.ConnectionString = "Data Source='" &MdbFilePath& "'"
Database.open
SQL = "DELETE FROM ordrar WHERE idOrder ="& Request.Querystring("idOrder")
Database.Execute(SQL)
Response.write "grönt"
set Database = nothing
'0===================================================================================0
%>
trexterMedlem sedan mars 20021 424 inlägg Själva koden verkar det inte vara något direkt fel på.
Vilka relationer har du i databasen?
Det kan vara så att du kan inte kan ta bort relaterade poster eftersom det inte bli "jämvikt" då. Om du tar bort en post i ena tabellen måste du kanske ta bort i den andra också...
Men, hur som heslt, show your relations!
:)
GimboMedlem sedan dec. 20001 630 inlägg japp det verkar vara så, men hur gör jag för att ta bort en post i den ena tabellen, och samtidigt ska inlägget som är knutet till den relationen oxå tas bort?
alltså när jag vill ta bort en order så har jag kortnummer som relation till idNumret på ordern
trexterMedlem sedan mars 20021 424 inlägg Principen är som sådan att du kollar id-numret i raden som du nyss tagit bort med hjälp av @@identity.
Sedan kör du en SQL mot den andra tabellen (den relaterade) och använder @@identity till att ta bort raden med samma id som i den andra tabellen.
Det du ska göra är alltså att söka på wF efter @@identity. Stöter du på några problem är det bara att fråga.
:)
LarsGMedlem sedan dec. 200012 465 inlägg @@identity har ingen relevans i detta sammanhang.
Antingen gör man två delete, först i detaljtabellen och sedan i huvudtabellen eller så kan man (beroende på dbms) definera sina foreign keys så att en delete i huvudtabellen även innebär en delete i detaljtabellen.
GimboMedlem sedan dec. 20001 630 inlägg kan någon hjälpa till med kod??
LarsGMedlem sedan dec. 200012 465 inlägg För vadå? Att definiera en cascading delete i Access eller för att göra två deletefrågor?
GimboMedlem sedan dec. 20001 630 inlägg att då jag raderar en post från exempelvis produkter så skall allt som har relation med den produkten raderas, jag vet inte om det är just d som kallas cascading, men det e vad jag behöver hjälp med
LarsGMedlem sedan dec. 200012 465 inlägg Om du vill ha cascading delete så skall det gå att sätta med hjälp av någon checkbox som finns där man definierar relationer i Access. Jag kan hjälpa inte mer än så.
Engine^Medlem sedan dec. 20002 861 inlägg Cascading delete: Visa properties för den aktuella relationen, bocka för 'enforce referential integrity' och sedan 'cascade delete related records'.