SQL tabel

Status
Niet open voor verdere reacties.

test1000

Gebruiker
Lid geworden
7 jul 2017
Berichten
277
Hoi,

Een Access programma gemaakt met eerst lokale tabel.
Alles werkt perfect.
Twee formulieren nl Nieuw en Wijzig. Ik open het Nieuw formulier en sla de gegevens op. Via formulier Wijzig kan ik gegevens wijzigen en opslaan.
In deze tabel zitten gegevens.
Een veld ID = primaire sleutel en type Autonummering.
Deze tabel, met gegevens, geconverteerd naar een SQL tabel. Via Externe gegevens - ODBC database.
Dan via SQL veld ID ook primaire sleutel gemaakt. Want bij conversie wordt dit veld niet primaire key.
Ik open het formulier Wijzig en neem een record dat al bestond en kan wijzigen en opslaan.
Dan open ik het formulier Nieuw en vul de gegevens in en kan het formulier opslaan. (in de SQL tabel)
Dan via formulier Wijzig roep ik het nieuw ingegeven record op dat ik net in SQL tabel had aangemaakt en als ik dan het formulier wil opslaan krijg ik de melding :
"Terwijl u het record bewerkte, is deze gewijzigd door een andere gebruiker. Als u dit record opslaat, worden de wijzigingen van de andere gebruiker overschreden. En knoppen [Naar klembord kopiëren] en [Wijzigingen negeren].
Waarom krijg ik deze meldingen bij de nieuw aangemaakte records (dus rechtstreeks weggeschreven in de SQL tabel) en niet bij de al bestaande records (deze die eerst lokaal zijn aangemaakt) ?

Alvast bedankt voor jullie hulp.
 
Laatst bewerkt:
Twee formulieren nl Nieuw en Wijzig. Ik open het Nieuw formulier en sla de gegevens op. Via formulier Wijzig kan ik gegevens wijzigen en opslaan.
Ik snap nooit waarom mensen daar twee formulieren voor maken, als het met één formulier ook kan. Wellicht omdat men van dubbel werk houdt? :).

Maar goed, daar gaat je vraag niet over. De reden dat je de melding krijgt, is vermoedelijk omdat de connectie met dat record vermoedelijk nog bestaat. Ook al denk je van niet. De kans hierop is kleiner als je met één formulier voor invoer/mutaties werkt, maar ik kan zo niet zeggen of daar het probleem ligt. Kan ook zijn dat het record op de backend niet wordt vrijgegeven.
 
Extra info.
Het heeft iets met de primaire sleutel ID te maken.

When you work with linked SQL Server tables in Microsoft Access, using the dbSeeChanges option is crucial when your table contains an IDENTITY (auto-increment) column. This option ensures that Access can handle concurrency control correctly.
 
Lijkt mij niet; je voegt een nieuw record toe en dat krijgt automatisch een ID waarde, lijkt mij. De melding die je laat zien geeft aan hoe je een (ADO) recordset moet gebruiken (met dus de parameter dbSeeChanges in de ConnectionString) om het record opmeet juiste manier op te halen. Zoals ik al zei: ik vermoed een probleem met de connectie met de backend.

Aangezien wij niet kunnen zien hoe je e.e.a. hebt ingericht, is het voor mij in ieder enigszins gokken. Wellicht dat @NoellaG je gelijk op het goede spoor kan zetten.
 
De oplossing gevonden.

Blijkbaar heeft Access soms om te weten of een record is gewijzigd of niet.
Daarom een veld [RowVer] toevoegen. En nu lukt het wel.

Code:
ALTER TABLE dbo.labosimulatie
ADD RowVer ROWVERSION;
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan