webForumDet fria alternativet

ASP-problem med Relationsanknytning.(Lång)

ASP

3 svar · 214 visningar · startad av Wolf

Medlem sedan jan. 200112 inlägg
Frågan#1

Håller på att knåpa ihop ett Intranet med olika behörighets nivåer. Har därför skapat access-databas med flertalet tabeller. Intressanta i detta problem är Tabellerna BEHORIGHET och MEDLEM där det råder en till många relation. Inga problem så här långt tror jag. Men jag får föjlande felmeddelande.

   Error Type:
   Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
   \[Microsoft\]\[ODBC Microsoft Access Driver\] You cannot add or change a record because a related record is required in table 'BEHORIGHET'.
   /Project/Chili/Medlemsuppgift.asp, line 32

Koden ser ut som följer i relaterat område:
set conn=server.createobject("adodb.connection")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("Chili.mdb")

sql="select Anvandarnamn from MEDLEM where Anvandarnamn='"&AnvNamn&"';"

Set recordset = conn.execute(sql)
if recordset.EOF then
	sql1="insert into MEDLEM(FNamn,ENamn,Alder,Anvandarnamn,Losen,Epost,Kon,RegDatum) values('"&FNamn&"','"&ENamn&"','"&Alder&"','"&AnvNamn&"','"&RegLosen&"','"&Epost&"','"&Kon&"','"&RegDatum&"');"
	sql2="insert into BEHORIGHET(Behorighet) values('"&Behorighet&"');"
	conn.execute(sql1)

---
Hoppas att någon orkar kolla på problemet för jag har totalt fastnat.
conn.execute(sql2)
conn.close

------------------
/Wolf

Medlem sedan sep. 2000215 inlägg
#2

Att hjälpa dig med ett sånt här problem är ganska svårt, eftersom det med största sannorlikhet har att göra med hur du skapat dina relationer i databasen.

Vad felmeddelandet säger är att du inte uppfyller den referensintegritet som din relation kräver.

Jag misstänker att rad 32 är den raden som skapar en ny användare och om du skapar en ny användare så vill du säkert länka den nya posten till någon post i "behörighetstabellen".

Jag tror alltså att du har en relation med referensintegritet mellan "medlemstabellen" och "behörighetstabellen". Det betyder i sådanafall att du måste ange ett "behörighetsvärde"(som är länkat till behörighetstabellen) när du skapar en ny användare. Om du inte gör det så säger felmeddelandet att det saknas en relaterad post i tabellen "behörighet". Alltså precis ett sådant felmeddelande som du får nu.

Prova alltså att ange en behörighetsnivå i medlemstabellen när du skapar en ny användare.
(förutsatt att dina tabeller ser ut som jag tror)

/Andreas

------------------
"Life's a bitch who sucks... then you marry one who doesn't"

Medlem sedan jan. 200112 inlägg
#3

Tack, du antog rätt. Jag har en främmande nyckel i MEDLEM-tabellen som är densamma som nyckel i BEHORIGHET-tabellen.
Det är tänkt att medlemmar automatiskt ska tilldelas behörighet 1, men jag har antagligen inte skrivit SQL frågan på rätt sätt. Har nu två sql satser, en för Medlem och en för Behorighet.

Tack

------------------
/Wolf

Medlem sedan jan. 200112 inlägg
#4

Problemet var så enkelt som att Tabellen Behorighet var tom, det fanns således ingen behörighet att referrera till. Ibland är tunga problem lätta att lösa med lite eftertanke. Synd att eftertanken ofta är sen bara. :)

Hade kunnat skriva in som i koden ovan också, men jag exekverade sql satserna i fel ordning, plus att jag då fått massor av poster som sa samma sak, behörighet 1. =Inte optimalt.

------------------
/Wolf

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)