Controleren of record te verwijderen is.

Status
Niet open voor verdere reacties.

neilvv

Gebruiker
Lid geworden
27 mei 2015
Berichten
47
Graag zou ik willen weten hoe ik kan controleren of een record kan verwijderd worden omdat deze (nog) niet gelinkt is in de database aan een andere tabel. Wat wil ik bereiken:
Een gebruiker opend een product en als deze nog niet/nooit in een order is gebruikt is kan deze via een custom ribbon knop te verwijderd worden ( knop enabled = true )
indien product wel al is gebruikt (dus gelinkt) is deze niet te verwijderen (knop enabled = false)

Ik wil dus voorkomen dat er wanneer het record niet verwijderd kan worden een foutmelding ontstaat.

en zoek zo iets:

Case "btnDeleteRecord_Products"
if <current record not linked> then
enabled = true
else
enabled = false
end if
...............

Bedankt alvast
 
Als je de relaties in je tabellen goed hebt gelegd, kán je geen records (producten) weggooien omdat er de Integriteit van de db dan niet meer klopt. Daar zorgt Access al voor. Ik heb daar nog nooit (en dan heb ik het over járen ontwerpen) een aparte knop voor nodig gehad. En mijn gebruikers ook niet :). Maar je kunt uiteraard met een recordset controleren of het ID voorkomt in de gerelateerde tabel, en op basis daarvan de actie doorzetten of niet.
 
Beste octafish,

Ik vrees dat ik de vraag niet goed heb geformuleerd.:(
Ik heb het woordje "linked" gebruikt maar bedoel eigenlijk "Used".

Wat eigenlijk m'n vraag is hoe kan ik controleren of (in mijn geval) een product ergens in de database "gebruikt" is? Dit kan (tot nu toe) in 5 verschillende tabellen zijn.
Indien dit product is gebruikt mag de gebruiker niet de mogelijkheid krijgen om het te verwijderen, dit om error 3200 "The record cannot be deleted or changed because table 'Products' includes related records" te voorkomen.
Indien het product niet gebruikt is kan het wel verwijderd worden.

Hoe moet ik deze "vraag/controle" vertalen naar VBA.

Ik hoop dat ik nu wat duidelijker ben?
 
Je formulering was, ondanks dat je het verkeerde woord gebruikte ('linked' i.p.v. 'gebruikt' (waarom zou je het Engelse woord 'used' gebruiken in dit geval?) toch duidelijk, en mijn antwoord was daar dus ook op gebaseerd. Maar je geeft nu aan dat je van die 'fout'melding af wil, en dat is een heel ander verhaal. De melding is natuurlijk geen foutmelding maar een volkomen terechte opmerking dat je nu eenmaal geen records mag verwijderen als er nog gekoppelde records zijn. Persoonlijk zou ik die melding dus gewoon gebruiken. Een knop tijdelijk 'uitschakelen' is voor een gebruiker veel verwarrender, want doet-ie het niet omdat de knop kapot is, of omdat je iets verkeerds doet?

Wat mij in je vraag een beetje verbaasde, is dat je een knop in de menubalk wilt aanpassen. Dat impliceert min of meer dat je die knop daar hebt staan omdat gebruikers geen andere manier hebben om records te verwijderen, en dat duidt er dan weer op dat je de gebruikers rechtstreeks in een tabel laat werken. Dat zou ik dus nooit doen; sterker nog: ik doe dat nooit. In mijn databases komt geen enkele gebruiker ook maar in de buurt van een query of tabel; alle communicatie gaat via formulieren en rapporten. Al was het maar omdat een gebruiker veel te veel kan slopen in een tabel. Die zijn nauwelijks te beveiligen op verkeerd gebruik. Afgezien daarvan: je kunt bitter weinig automatiseren in een tabel, en op een formulier kun je de gebruiker (en het gebruikersgedrag) op alle mogelijke manieren sturen en corrigeren.

Ik zou dus op het formulier een verwijderknop maken, die dan eerst controleert met een recordset of er een gekoppeld record is (of meer; desnoods in meerdere tabellen) en dan de vraag geeft (bij "Nee") of het record verwijderd moet worden of niet. En dus óók een boodschap dat er gerelateerde records in het geval die er wél zijn. Zo hou je de gebruiker geïnformeerd, en je systeem op orde.
 
Ok je antwoord is duidelijk, alleen vind ik het persoonlijk prettiger dat wanneer iets niet mogelijk is de optie (knop) ook niet te gebruiken is, zodat een evt "foutmelding" niet kan voorkomen. Ik snap het nut ook van die "foutmeldingen" en wil hem ook niet weghalen.
En de knop waar ik het over heb staat bij mij in het ribbon dus de gebruiker werkt niet dus niet rechtstreeks in een tabel (die optie is uitgeschakeld!) 1.jpg

(En wat betreft dat engels, ja mijn office staat in het engels......:shocked:)

Bedankt voor je uitleg en ga kijken om het te voor elkaar krijgen om de controle uit te voeren via een recordset.
 
En de knop waar ik het over heb staat bij mij in het ribbon dus de gebruiker werkt niet dus niet rechtstreeks in een tabel (die optie is uitgeschakeld!)
Daar ging ik ook van uit in mijn antwoord :). Alleen noem ik dat ding dus nooit 'ribbon' of 'lint' want dat vind ik onzinbegrippen; voor mij is het gewoon een knoppenbalk of menubalk. Maar ook al hebben we het dus toch steeds over hetzelfde, ondanks de spraakgebruiken: ik zou altijd knoppen maken/gebruiken op het formulier, want die zijn 120 keer makkelijker te maken/programmeren dan knoppen in de menu's. Waarom zou je het zo ingewikkeld maken voor jezelf of de gebruiker? Die werkt dan immers toch al via een formulier en heeft daar dus alles wat hij/zij nodig heeft onder handbereik.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan