[MSSQL ACCESS]Insert in view

Pagina: 1
Acties:

  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Goedemorgen,

Ik heb een database in SQL Server met daarvoor een access data project voor de userinterface.
Mijn probleem is dat ik een nieuw record aan een view wil toevoegen. Met de enterprise manager kan ik wel een nieuwe regel aan de view toevoegen maar vanuit access lukt dat niet :?

Iemand enig idee waarom de Enterprise manager het wel kan en access niet.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
Access zelf kent geen views, misschien dat het daar wat mee te maken heeft.

Je kan eens proberen om een INSTEAD OF INSERT trigger te maken op die view in Sql Server.
In die trigger ga je dan code schrijven die het record dat je in die 'view' probeert te inserten, in de achterliggende table insert. (Iets dat normaal gezien eigenlijk 'impliciet' gebeurt).

https://fgheysels.github.io/


  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Dat heb ik ook geprobeerd. Voor zover ik na kan gaan wordt de trigger niet aangeroepen. Het lijkt wel alsof access zelf probeerd om de tabellen die onder de view hangen te updaten

  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 27-04 16:49
Access ziet de views als read-only tabel en kan verder niet updaten hierop. Is volgens mij het gevolg van het feit dat er geen primary key zit op een view en ODBC heeft primary keys nodig om te kunnen updaten. SQL Server kent de pk's van de originele tabellen wel en kan dus aan de achterkant wel de juiste update statements uitvoeren. Moet er in de losse tabellen natuurlijk niet verlichte velden zijn die niet in de view voorkomen.

Ik raad je aan om views te gebruiken waar ze voor zijn bedoeld: Kijken, kijken, niet editten. Met name met managementinformatie kun je dit soort zaken goed gebruiken.

Voor het updaten van je view raad ik je aan een stored procedure te maken die alle inserts afhandelt op basis van de nodige parameters en daarna je view te refreshen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
Je kan natuurlijk 'indexed views' of hoe heten die dingen nu ook alweer maken in Sql Server.
Dan geef je die view een (clustered) index, en misschien kan je er ook wel een PK op leggen.

Echter, er zijn heel wat restricties verbonden wil je van je view een 'indexed' view maken. Check de books online voor meer info.

https://fgheysels.github.io/


  • camiels
  • Registratie: Januari 2001
  • Laatst online: 07-01 17:15
Vanuit toekomstig beheer oogpunt zou ik er ook voor kiezen om je updates niet via een view maar via een stored procedure te laten verlopen.

  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
Het nieuwe record moet wel via en form ingevoerd worden waar de view de recordsource van het form is.

Als ik in de view de PK opneem van alle tabellen die in de view gebruikt worden dan wordt de view wel updateable en kan ik ook nieuwe records invoegen. Het probleem is dan dat aan alle tabbelen een nieuw record toegevoegd wordt wat niet de bedoeling is.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
Huh?
Wat wil je dan ?
Een record toevoegen aan een 'view', zonder dat je die aan de tabellen toevoegt?
Een View is wat het zegt: een 'view' op de tabellen. Als je iets aanpast aan een 'view', pas je het eigenlijk aan aan de onderliggende tabellen.

https://fgheysels.github.io/


  • mr_taipan
  • Registratie: Februari 2002
  • Laatst online: 03-12-2024
de view betstaat auit 3 tabellen. A B C

in tabel A staan 2 veldeN, codeb en codec in de tabellen B en C staat wat die codes betekenen. Als er een record aan de view toegevoegd word dan wil ik dat alleen tabel A een nieuwe regel krijgt en Tabel B en C niet.

Alle tabellen hebben een PK id met identity

  • Boss
  • Registratie: September 1999
  • Laatst online: 09:33

Boss

+1 Overgewaardeerd

Klinkt alsof er ergens iets raars in je ontwerp zit. Is die view wel nodig? KAn je niet makkelijker een query hangen aan het formulier met daarin de 'hoofd' tabel gelinkt met die 2 sub tabellen?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:00
mr_taipan schreef op dinsdag 21 december 2004 @ 16:43:
de view betstaat auit 3 tabellen. A B C

in tabel A staan 2 veldeN, codeb en codec in de tabellen B en C staat wat die codes betekenen. Als er een record aan de view toegevoegd word dan wil ik dat alleen tabel A een nieuwe regel krijgt en Tabel B en C niet.

Alle tabellen hebben een PK id met identity
Maak een instead of insert trigger op die view.

https://fgheysels.github.io/


  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 27-04 16:49
Je ontwerp aan de voorkant van Access is een beetje brak volgens mij. Zoals je het nu vertelt, moeten er dus code toegevoegd kunnen worden, zonder dat daar betekenissen aan hangen. Lijkt met toch niet wenselijk.

Ook de CodeB en CodeC tabellen-onderscheid snap ik niet. Volgens mij kun je ook gewoon twee kolommen maken in tabel A. Of heeft 1 code meerdere betekenissen? Dan nog kan het in 1 tabel overigens, als je je primary key maar op twee (of drie) kolommen zet.

  • Wilfred
  • Registratie: Januari 2000
  • Laatst online: 22-08-2022
Misschien kan je het in VB code oplossen met een transactie. Je kijkt eerst in de view... Als er een update komt zoek je naar de PK in de tabel en update of voegt een record toe.

Sign of my Time

Pagina: 1