webForumDet fria alternativet
Logga in / Bli medlem

Radera post (Relationstabell)

Databaser & SQL

11 svar · 387 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Trådstart#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
%>
Medlem sedan mars 20021 889 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!

:)

Medlem sedan dec. 20001 626 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

Medlem sedan mars 20021 889 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.

:)

Medlem sedan mars 20021 889 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?

:)

Medlem sedan dec. 200012 464 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.

Medlem sedan dec. 200012 464 inlägg
#7

Flyttas från ASP

Medlem sedan dec. 20001 626 inlägg
#8

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

Medlem sedan dec. 200012 464 inlägg
#9

För vadå? Att definiera en cascading delete i Access eller för att göra två deletefrågor?

Medlem sedan dec. 20001 626 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

Medlem sedan dec. 200012 464 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å.

Medlem sedan dec. 20003 887 inlägg
#12

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

258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)