Avatar billede Slettet bruger
18. november 2004 - 13:33 Der er 8 kommentarer og
1 løsning

Ændre på relationerne i min database

Hej

Jeg har en MS Access database som er blevet brugt hyppigt og fyldt med data... siden da har jeg opdateret mit java program og jeg er kommet frem til at jeg bliver nødt til at ændre på nogle af relationerne i min database.

Problemet er nu at der er en del mennesker der har deres egen database så jeg bliver nødt til at ændre på relationerne via SQL sætninger via mit java program. Kan det overhovedet lade sig gøre i MS Access og er det den smarteste måde eller har i nogle alternative måder at gøre det på?

På forhånd, tak.
18. november 2004 - 13:47 #1
Jeg har dette eksempel, som dog er lavet i VBA og derfor skal omskrives lidt. Men her skiftes en relation:

Public Function SkiftRelation()
    Dim cn As ADODB.Connection
    Dim SQLStr As String
    Set cn = New ADODB.Connection
    cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    cn.ConnectionString = ""
    cn.Open C:\Dokumenter\DinDatabase.mdb", "Brugernavn", "adgangskode"
    SQLStr = "ALTER TABLE DinTabel " & _
        "ADD CONSTRAINT Dintabel_DinAndenTabel " & _
        "FOREIGN KEY (ID) REFERENCES " & _
        "DinAndenTabel(ID) " & _
        "ON UPDATE CASCADE " & _
        "ON DELETE CASCADE"

    cn.Execute SQLStr
End Function
Avatar billede Slettet bruger
18. november 2004 - 14:58 #2
Når jeg bruger denne her:

ALTER TABLE Bedoemmelse ADD CONSTRAINT Spiller_Bedoemmelse
FOREIGN KEY (spillerId)
REFERENCES Spiller(id)

Så virker det fint, men så snart jeg skriver:

ALTER TABLE Bedoemmelse ADD CONSTRAINT Spiller_Bedoemmelse
FOREIGN KEY (spillerId)
REFERENCES Spiller(id)
ON UPDATE CASCADE
ON DELETE CASCADE

Så virker det ikke, hvad er det jeg gør forkert?
Avatar billede Slettet bruger
18. november 2004 - 14:59 #3
Jeg får følgende fejl ved andvendelse af andet eksempel: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in CONSTRAINT clause.
18. november 2004 - 15:28 #4
Jeg ved ikke om det gør nogen forskel, men eg synes, at der mangler et mellemrum:

ALTER TABLE Bedoemmelse ADD CONSTRAINT Spiller_Bedoemmelse
FOREIGN KEY (spillerId)
REFERENCES Spiller (id)
ON UPDATE CASCADE
ON DELETE CASCADE

Men så burde den første jo også have fejlet.

Jeg kan ellers ikke lige gennemskue hvad fejlen er :o(
Avatar billede Slettet bruger
18. november 2004 - 16:10 #5
Det giver ingen mening, jeg har søgt på google men der er ingen der har det samme problem. Kan det have noget at gøre med min ms access database?

Sådan ser min database ud:
www.lancelot.dk/pic1.jpg

Når jeg så bruger:
ALTER TABLE Bedoemmelse ADD CONSTRAINT Spiller_Bedoemmelse
FOREIGN KEY (spillerId)
REFERENCES Spiller (id)

Ser den sådan her ud:
www.lancelot.dk/pic2.jpg

Hvordan sætter jeg så CASCADE UPDATE og CASCADE DELETE på?
18. november 2004 - 16:34 #6
ja, det ser jo rigtigt ud....og jeg ved også, at jeg selv kan få det til at virke :o(

Har du prøvet med bare en af dem?
Avatar billede Slettet bruger
18. november 2004 - 17:08 #7
Ja, jeg har prøvet enkeltvis men stadig samme fejl. Der er ikke nogen mulighed for at sætte UPDATE og DELETE på en i seperat sql sætning vel?
Avatar billede Slettet bruger
18. november 2004 - 19:15 #8
Efter at have kigget lidt på msdn har jeg fundet ud af at sun.jdbc.odbc.JdbcOdbcDriver ikke understøtter cascade... tak for hjælpen thomas :)
18. november 2004 - 19:20 #9
okay!! Surt!
Ja, som sagt havde jeg også kun prøvet det via VBA og ADODB.

tak for point alligevel :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester