Edit data in datasheetview based on query with linked tables

Status
Niet open voor verdere reacties.

christopheb

Nieuwe gebruiker
Lid geworden
30 jan 2009
Berichten
3
Hoi,

Ik heb een query met een gewone inner join.
Wanneer ik hiervan een form maak in datasheetview, kan ik de gegevens niet updaten in deze datasheetview.

't Is te zeggen, ik kan de gegevens van de linked table niet updaten.
Ik krijg altijd een 'Write Conflict' : "This record has been changed by another user...".
Nochtans zit er niemand anders op de database, dus dat kan het probleem niet zijn.

Ik vond al op het internet dat ik Timestamp kolom moet toevoegen aan elke tabel, maar dat heeft niet geholpen.

Een idee hoe ik dit kan oplossen?
(Access2003 + SQL Server 2005)

Bedankt,
Christophe
 
Zo te zien maak je gebruik van een Access Frontend, en een SQL server 2k5 Backend?
Kun je als je de tabel opent de gegevens wel muteren?
 
Hoi,

ja, gewoon binnen 1 tabel kan ik wel gegevens wijzigen.

Maar mijn view bevat twee tabellen die gelinkt zijn. Wanneer ik een datasheetview maak op basis van deze view, kan ik de gegevens niet wijzigen.

-> Eigenlijk link ik mijn subtabel drie keer via een left outer join (zie hieronder). Ik vermoed dat hij dan ook drie keer probeert de gegevens te saven en dat hij mss daarom de foutmelding geeft ivm 'another user'.
-> Kan het zijn dat het gewoon niet mogelijk is om gegevens uit een verschillende tabel te saven via datasheetview?

Bedankt,
Christophe

Code:
SELECT     TOP (100) PERCENT dbo.PRODUCT.P_ID, dbo.PRODUCT.P_CLIENT_CODE, dbo.PRODUCT.P_DESCRIPTION, dbo.PRODUCT.P_PS_ID, dbo.PRODUCT_PROPERTY.PPROP_VALUE AS Pages, o.PPROP_VALUE AS Size, oo.PPROP_VALUE AS Foldouts
FROM         dbo.PRODUCT LEFT OUTER JOIN
                      dbo.PRODUCT_PROPERTY ON dbo.PRODUCT.P_ID = dbo.PRODUCT_PROPERTY.PPROP_P_ID AND  
          dbo.PRODUCT_PROPERTY.PPROP_PRP_ID = 127 LEFT OUTER JOIN
                      dbo.PRODUCT_PROPERTY AS o ON dbo.PRODUCT.P_ID = o.PPROP_P_ID AND o.PPROP_PRP_ID = 198 LEFT OUTER JOIN
                      dbo.PRODUCT_PROPERTY AS oo ON dbo.PRODUCT.P_ID = oo.PPROP_P_ID AND oo.PPROP_PRP_ID = 119
 
Als je tabellen koppelt in een query of view, en je wilt gegevens kunnen wijzigen/toevoegen, dan moet je de gegevens halen uit de gekoppelde tabel, niet uit de hoofdtabel. Ik vermoed dat [PRODUCT] de hoofdtabel is, en [PRODUCT_PROPERTY] de gekoppelde tabel. In je query moet je dan het veld [PRODUCT_PROPERTY].[PPROP_P_ID] opnemen, niet [PRODUCT].[P_ID]. Dit laatste veld is je Sleutelveld, en mag niet worden gemuteerd. En daarom dus ook de view/query niet. Dit geldt uiteraard ook voor andere sleutelvelden die je in een query opneemt. Moraal: altijd het gerelateerde veld nemen, niet de sleutel.
 
Heel erg bedankt voor je reply!

Dit werkt inderdaad wanneer ik werk met 1 hoofdtabel (PRODUCTS) en 1x mijn gekoppelde tabel (PRODUCT_PROPERTY).

In mijn query link ik drie keer naar mijn gekoppelde tabel PRODUCT_PROPERTY.

Dan lukt het niet meer om iets aan te passen in mijn datasheetview en krijg ik weer dezelfde foutmelding.

Enig idee of dit te omzeilen valt?

Bedankt,
Christophe
 
Wil je met één query drie tabellen tegelijk bijwerken? Want dat kan inderdaad wel eens lastig worden.... Je kunt best koppelen met meer dan één tabel, zolang je dus maar geen sleutelvelden gebruikt uit de andere tabellen, en één tabel als bijwerktabel gebruikt.
Anders moet je denk ik de bijwerkacties splitsen met VBA in twee of meer bijwerkqueries.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan