Hoppa till innehåll

Sida 1 av 1
  • Du kan inte starta en ny tråd
  • Du kan inte svara i tråden

Cascade to Null relationships

#1
Medlem är utloggad   Twyzz 

  • Nykomling
  • Pip
  • Grupp: Medlemmar
  • Inlägg: 1
  • Gick med: 2012-06-15

Skrivet 16 jun 2012, 00:24

Hey, sitter här mitt i natten och jobbar på en ms access databas till en C# applikation jag jobbar på, mitt problem jag skulle behöva lite hjälp med handlar om Cascade to Null relationer. Jag har nämligen en rad/tuple i tabellen Person där information om denna personen finns med bland annat ett attribut som heter InvitedBy som är en foreign key till en annan rad/tuple i tabellen Person,

Dvs ett reflexivt samband. Raden med ID 1 har InvitedBy till 2 och raden med ID 2 har InvitedBy till 3, när man tar bort raden med ID 2 så skall raden med ID 1 uppdateras och sätta InvitedBy till null. Raden med ID 3 ska inte ändras på något sätt. Dvs vill jag använda mig utav Cascade to Null, jag har kollat runt på google men de flesta sidor jag kollat på länkas jag till http://allenbrowne.com/ser-64.html - Jag har testat att använda mig utav detta utan något vidare resultat.

När jag använder mig av nedanstående modul för att sätta relationen så blir det en helt vanlig relation dvs att jag inte kan uppdatera eller ta bort raden., jag kan ingenting om den nedanstående modulen än det som kommentarerna berättar så har ingen direkt insikt i vad direkt händer under huven så att säga.

Någon som har ett fungerande sätt på att göra en Cascade to Null relation i MS access? Jag vill ju även om det går att om ID'et på raden med ID 1 ändras så ska även InvitedBy på raden med ID 2 ändras, dvs Cascade Update. Eller borde jag bara förenkla allt och göra en referens tabell med vanlig Cascade Update & Delete? Bara tråkigt att behöva använda sig utav en extra tabell för en 1-1 relation.

Kan ju även använda mig utav flera SQL-satser men vilket även det är en fullösning som man helst vill undvika.

Min Modul jag gjort från koden på allenbrowne sidan.
Public Const dbRelationCascadeNull As Long = &H2000
Public Function MakeRel()
	'Purpose: Create a Cascade-to-Null relation using DAO.
	Dim db As DAO.Database
	Dim rel As DAO.Relation
	Dim fld As DAO.Field

	Set db = CurrentDb()
	'Arguments for CreateRelation(): any unique name, primary table, related table, attributes.
	Set rel = db.CreateRelation("PersonMother", "Person", "Person", dbRelationCascadeNull)
	Set fld = rel.CreateField("SSN") 		'The field from the primary table.
	fld.ForeignName = "Mother"   			'Matching field from the related table.
	rel.Fields.Append fld                	'Add the field to the relation's Fields collection.
	db.Relations.Append rel              	'Add the relation to the database.


	'Report and clean up.
	Debug.Print rel.Attributes
	Set db = Nothing
End Function


Inlägget är redigerat av Twyzz: 16 jun 2012, 00:50.

0
Sida 1 av 1
  • Du kan inte starta en ny tråd
  • Du kan inte svara i tråden

1 besökare läser just nu den här tråden, varav 0 medlem(mar) och 1 gäst(er)
 
 
Senast obesvarade trådar
Prenumerera på nyheter

Missa inte våra nya
smarta nyhetsbrev

Läs mer om nyhetsbreven här!
Beställ direkt:


Extreme
PC för Alla-nätverket