Avatar billede swaq Nybegynder
18. juni 2008 - 21:48 Der er 5 kommentarer

Opdatere data i relaterede tabeller gennem form

Har ikke lige kunnet finde et svar - selvom jeg mistænker andre må have haft samme problem.

Jeg har en relationel database, hvor jeg blandt andet har måtte lave to selvstændige tabeller (vedlæg og kommentarer), der hver har et ID-felt (primærnøgle) og et felt med data. Dette har jeg måtte gøre, da eksempelvis 'Vedlæg' er et såkaldt Multi Valued Field og det har givet udfordringer i anden sammenhæng.

Hovedtabellen har så to ID-felter der er relateret (en-til-mange) til vedlæg- og kommentartabellerne.

Min form benytter sig af en kompliceret outer join query, som blandt andet laver opslag i en tabel, som er to tabeller fra hovedtabellen. Jeg har måtte lave outer joins (left join) for at få alle poster med i formen - da det ikke er alle poster der eksempelvis har kommentarer knyttet til sig etc. Ved inner joins bliver disse ikke vist.

Så langt så godt - jeg får hentet det hele frem i min form og kan rette data i de felter, som findes i hovedtabellen.

Dog virker kommentar og vedlægsfeltet ikke. Når jeg forsøger at skrive i kommentarfeltet får jeg følgende fejl (vist i nederste venstre hjørne): "Cannot enter value into blank field on 'one' side of outer join". Vedlægsfeltet's lille papirklips virker heller ikke - er ikke aktiveret?
Avatar billede mugs Novice
18. juni 2008 - 21:52 #1
"Cannot enter value into blank field on 'one' side of outer join".

Skyldes sandsynligvis, at der skal oprettes en post i den relaterede tabel inden du kan skrive i kommentar- eller vedlægsfeltet.
Det tyder på, at der er grundlæggende fejl i databasekonstruktionen.
Avatar billede swaq Nybegynder
18. juni 2008 - 22:04 #2
Jeps, lige præcis.

Hvordan gør jeg det - kan jeg gøre det via vba, eksempelvis når man klikker i kommentarfeltet?
Jeg kan nemlig sagtens lave en standard form (gennem wizarden), som selv sørger for at få oprettet ID'et i kommentartabellen - så jeg tror nu nok strukturen er i orden. Problemet opstår fordi formens data er skaffet via et outer join.
Avatar billede mugs Novice
18. juni 2008 - 22:26 #3
I kommantarfeltets VedIndgang kan du indsætte en SQL der sender formularens felt1 over i Tabel1:

DoCmd.RunSQL "Insert Into [Tabel1] ( [Felt1]) VALUES(" & Me!felt1 & ")"
Avatar billede swaq Nybegynder
18. juni 2008 - 23:17 #4
Takker, kan dog ikke lige få det til at virke efter hensigten. Problemet er, at en kommentar eller et vedlæg kan bearbejdes ved en senere lejlighed - dermed opstår der fejl når proceduren endnu engang laver et insert.

Tror du har ret i at problemet skyldes struktur - nu jeg tænker over det, er der i virkeligheden en en-til-en relation mellem hovedtabellen og kommentartabellen - ligeså for vedlæg.
Jeg har lagt dem i selvstændige tabeller pga. en anden procedure (audit trial) som logger ændringer. Denne procedure kan ikke håndtere MEMO og ATTACHMENT - desværre...

Men jeg burde vel kunne droppe autonummereringen og bruge hovedtabellens id, som du foreslår. Problemet er blot, at jeg stadig får outer join fejlen når jeg forsøger at skrive i kommentarfeltet.

Any ideas?
Avatar billede mugs Novice
19. juni 2008 - 07:42 #5
Hvad er forskellen på autonummereringen og hovedtabellens ID? Normalt bruges et autonummer som ID og intet andet.
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