Ik heb een view gemaakt die twee tabellen cross joint. Nu is deze niet updatable, echter wel als je er een INSTEAD OF trigger op maakt. (Zie bv. hier)
Nu zit hier een trigger op, de inhoud hiervan is het probleem (nog) niet:
VIEW_METADATA zorgt ervoor dat access (front-end ADP) zijn updates niet direct op de tabellen uitvoert maar op de view. Als ik in EM alle rows bekijk kan ik inderdaad wijzigingen doorvoeren en de nieuwe gegevens staan ook in tmpTabel.
In access kan ik echter geen wijzigingen doorvoeren ("This recordset is not updatable"). Wat doe ik hier fout? Properties van de View in Access zijn niet opvraagbaar, als ik in access de design view open zie ik niets, waarschijnlijk omdat deze de CASE niet ondersteunt (EM ook: The Query Designer does not support the CASE SQL construct). Als de case vervang door iets dergelijks als 1 AS k werkt het helaas ook niet.
Wat ik uiteindelijk wil bereiken is dat ik per buId een overzicht krijg van de beschikbare leerjaren, en dat access een vinkje weergeeft of deze combinatie aanwezig is in de tabel b_uren_klassen, en dat deze uit- en aangevinkt kan worden.
Wat moet ik nou doen om mijn recordset in access toch updatable te maken?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| CREATE VIEW dbo.EditKlassen WITH VIEW_METADATA AS SELECT bu.Id AS buId, lj.leerjaar, CASE WHEN EXISTS (SELECT 1 FROM b_uren_klassen buk WHERE (buk.klas = lj.leerjaar AND buk.buId = bu.Id)) THEN 1 ELSE 0 END AS k FROM dbo.leerjaren lj CROSS JOIN dbo.b_uren bu |
Nu zit hier een trigger op, de inhoud hiervan is het probleem (nog) niet:
code:
1
2
3
4
5
6
7
| CREATE TRIGGER klasupdate ON dbo.EditKlassen INSTEAD OF UPDATE AS /* debugging */ IF EXISTS(SELECT * FROM tmpTabel) INSERT INTO tmpTabel SELECT * FROM inserted ELSE SELECT * INTO tmpTabel FROM inserted |
VIEW_METADATA zorgt ervoor dat access (front-end ADP) zijn updates niet direct op de tabellen uitvoert maar op de view. Als ik in EM alle rows bekijk kan ik inderdaad wijzigingen doorvoeren en de nieuwe gegevens staan ook in tmpTabel.
In access kan ik echter geen wijzigingen doorvoeren ("This recordset is not updatable"). Wat doe ik hier fout? Properties van de View in Access zijn niet opvraagbaar, als ik in access de design view open zie ik niets, waarschijnlijk omdat deze de CASE niet ondersteunt (EM ook: The Query Designer does not support the CASE SQL construct). Als de case vervang door iets dergelijks als 1 AS k werkt het helaas ook niet.
Wat ik uiteindelijk wil bereiken is dat ik per buId een overzicht krijg van de beschikbare leerjaren, en dat access een vinkje weergeeft of deze combinatie aanwezig is in de tabel b_uren_klassen, en dat deze uit- en aangevinkt kan worden.
Wat moet ik nou doen om mijn recordset in access toch updatable te maken?
* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans