webForumDet fria alternativet

Radera post (Relationstabell)

11 svar · 387 visningar · startad av Gimbo

GimboMedlem sedan dec. 20001 630 inlägg
#1

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
#2

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
#3

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
#4

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.

:)

trexterMedlem sedan mars 20021 424 inlägg
#5

trexter skrev:

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.

Förresten, du ska ju ta bort och inte skapa en rad. Men identity borde fungera i alla fall. Någon som vet hur?

:)

LarsGMedlem sedan dec. 200012 465 inlägg
#6

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

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Flyttas från ASP

GimboMedlem sedan dec. 20001 630 inlägg
#8

kan någon hjälpa till med kod??

LarsGMedlem sedan dec. 200012 465 inlägg
#9

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
#10

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
#11

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
#12

Cascading delete: Visa properties för den aktuella relationen, bocka för 'enforce referential integrity' och sedan 'cascade delete related records'.

129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)