Probleem met 2 waardes uit 1 tabel gebruiken

Status
Niet open voor verdere reacties.

Wermebekker

Gebruiker
Lid geworden
10 apr 2011
Berichten
6
Hallo allemaal,

Ik heb een database waarin ik 1 hoofdtabel heb, welke samengesteld is uit een deel import en een deel wat we nog moeten invoeren.
Middels een import haal ik een deel van de gegevens binnen uit een Excel bestand.
De overige gegevens voeren wij in middels selectietabellen of keuzelijsten.
De unieke waarde per record is "mutatienummer" welke geïmporteerd word.
Bij het verwerken van gegevens, openen we een formulier (zijn meerdere formulieren per categorie verdeeld).
Als ik bij categorie x bezig ben en een collega met een ander record bij categorie y, we willen beide het veld "goed" invoeren, dan krijgt de 2e persoon die dit wil proberen een foutmelding en kan het "goed" niet invoeren.
Dan moet ik uit mijn formulier, dan kan hij zijn formulier opnieuw openen en doet hij het wel.
Hoe kan ik dit oplossen?

Alvast bedankt,
Gr Kevin.
 
Bij het verwerken van gegevens, openen we een formulier (zijn meerdere formulieren per categorie verdeeld).
Ik snap je constructie niet; als je in één tabel werkt (of één query) dan zou één formulier toch moeten volstaan? Categorieën kun je toch gewoon in dat formulier filteren? Maar afgezien daarvan: dat zou het probleem niet eens mogen zijn, want een formulier (mits goed gebouwd) is niet veel meer dan een 'doorgeefluik' aan de onderliggende tabel. Alles wat je in het formulier doet, doe je dus feitelijk gelijk in de tabel. En daarom maakt het ook niet uit of je met één formulier werkt, of met meerdere. Je werkt toch op dezelfde tabel namelijk.
En daar komt het tweede vraagteken op het voorhoofd:

Als ik bij categorie x bezig ben en een collega met een ander record bij categorie y...
Dát zou namelijk al helemaal geen probleem mogen zijn. Mits je uiteraard de tabelinstellingen goed hebt ingesteld. Je kunt (in de Opties, bij CLientinstellingen) aangeven in het blokje Geavanceerd hoe de standaardvergrendeling moet zijn ingesteld. Daar kun je kiezen uit de opties <Geen vergrendelingen> (nooit kiezen), <Alle records> (nooit doen) en <Bewerkte record> (je raadt het: altijd doen :) ). Ik vermoed dus dat die wel eens op <Alle records> zou kunnen staan. Want die instelling levert dus het door jou geconstateerde probleem op.
 
Sow dat is een snelle reactie.
Wat wij doen is wij halen een 100 records ongeveer uit Excel over naar de db. Wij hebben in de tabel incidentcodes staan. Per formulier(categorie) word een range van de records weergegeven die in de categorie vallen aan de hand van de incidentcodes (vooraf ingesteld). Echter komen sommige invoervelden bij meerdere categorieen terug. Hier ontstaat dan het beschreven probleem. Ik had de optie van recordvergrendeling automatisch aangevinkt op Geen vergrendelingen en onderaan was nog de optie aangevinkt van Databases openen met recordvergrendeling. Dit heb ik dus gewijzigd naar Bewerkte records en de onderste optie uitgevinkt.
Zou hiermee dan mijn probleem opgelost moeten zijn?
 
Sow dat is een snelle reactie.
Dat valt wel mee; er zit minstens een uur tussen :).
Maar ik zou zeggen: probeer het uit! Overigens helpt je extra uitleg (mij) niet; ik snap nog steeds niet waarom je een probleem hebt en meerdere formulieren gebruikt. Dat je meerdere invoervelden met meerdere categorieën gebruikt lijkt mij niet meer dan logisch, als de db goed is genormaliseerd tenminste. Maar dat mag dus niks uitmaken, want je werkt altijd maar in één record tegelijkertijd. En je gaf zelf aan dat het probleem al aanwezig is als meerdere personen in verschillende records werken. En dat zou dus niet mogen.
Ik stel mijn db's altijd zo in:

Standaardmodus voor openen: <Gedeeld>
Standaardrecordvergrendeling: <Bewerkte record>
Databases openen met recordvergrendeling: aangevinkt

En dan heb je nooit problemen, behalve natuurlijk als twee personen met hetzelfde record aan de slag gaan.
 
Opnieuw proberen

Ik zal nog eens proberen de structuur van de database uit te leggen.
Ik heb 1 hoofdtabel met de records.
Er zijn meerdere tabellen met waarden die op de formulieren ingevuld worden.
Op ieder formulier staan de zelfde invoervelden (de geïmporteerde gegevens zijn vergrendeld zodat deze niet gewijzigd kunnen worden en de lege velden waar wij zelf de waarden invullen).
Bij het openen van een formulier word gefilterd op categorie, dit om op deze manier het werk te verdelen.
Het probleem is dus, ik ben op mijn formulier bezig invullen, een collega is op zijn formulier bezig met invullen en dan krijgt hij of ik deze melding: "Vergrendeld. Bijwerken is onmogelijk".
Wij werken beide in een andere record.
Ik heb de instellingen in acces al aangepast zoals je zei.
De velden die wij op het formulier invullen verschillen met eigenschappen, sommige zijn met meerdere keuzes, sommige is maar 1 keuze mogelijk uit de lijst.
Ik snap echt niet waarom deze melding komt, want we werken niet in hetzelfde record en ook niet op hetzelfde formulier.
 
Ik heb 1 hoofdtabel met de records. Er zijn meerdere tabellen met waarden die op de formulieren ingevuld worden.
...
Ik snap echt niet waarom deze melding komt, want we werken niet in hetzelfde record en ook niet op hetzelfde formulier.
Formulieren an sich zijn niets; tenzij het een niet-afhankelijk formulier betreft, is een formulier gekoppeld aan een bron, en dat is dan altijd een tabel. En daar raak je mij dus even kwijt, want je hebt het in de eerste zin over één tabel in de database, en in de volgende over 'meerdere tabellen met formulieren'. Wat is het nu? Ik kan er een slag naar slaan, en er van uit gaan dat je inderdaad maar één tabel invult (de datatabel dus) en dat de andere tabellen stamtabellen zijn (werknemers, klanten, producten etc) die je gebruikt in de datatabel. Maar dan zou je daar dan geen formulieren voor hoeven hebben.

Maar goed, als je dus in één tabel daadwerkelijk werkt, en de rest als stamtabel werkt om m.b.v. keuzelijsten de datatabel te vullen, dan heb je dus het probleem dat je met meerdere formulieren (en dus personen) in dezelfde tabel zit te muteren. Dat zou goed moeten kunnen gaan, als de db op de juiste manier is geconfigureerd. Je kunt nog eens proberen om de recordvergrendeling op database- en record niveau uit te zetten, kijken of dat helpt.
Daarnaast zijn deze instellingen werkplek-afhankelijk, dus alle gebruikers moeten dezelfde instellingen gebruiken. Als er maar één gebruiker is die de db voor zichzelf 'claimt' met recordvergrendeling = <Alle records>, dan is de rest al kansloos.

Helpt ook dát niet, dan kun je nog overwegen om met niet-gekoppelde FE's te werken. Je haalt dan per gebruiker steeds één record op met een Recordset, verbreekt vervolgens de verbinding met de BE tabel, en na het muteren zet je de mutaties weer terug. Dat gaat allemaal razendsnel, dus de kans dat gebruikers elkaar dan nog voor de voeten lopen is minimaal.
 
Goed geïnterpreteerd

Hallo Octafish,

Je had het helemaal bij het juiste eind met de opbouw van mijn database.
Heb je toevallig ook nog een site of hier een vraag waar ik snel naartoe kan om jouw oplossing te proberen?
Alvast bedankt !
 
Wat bedoel je met dat laatste?
 
Helpt ook dát niet, dan kun je nog overwegen om met niet-gekoppelde FE's te werken. Je haalt dan per gebruiker steeds één record op met een Recordset, verbreekt vervolgens de verbinding met de BE tabel, en na het muteren zet je de mutaties weer terug. Dat gaat allemaal razendsnel, dus de kans dat gebruikers elkaar dan nog voor de voeten lopen is minimaal.

Om deze oplossing te kunnen proberen, de optie met het aanpassen van de instellingen werkte namelijk niet :(.
 
Oh dat :). Gelukkig heb ik dat helemaal uitgewerkt in de Access cursus die in de Handleidingen sectie staat. Kijk maar eens of je er uit komt. Als ik mij goed herinner, behandel ik het niet-afhankelijke formulier in deel 2.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan