selectie beschikbare items

Status
Niet open voor verdere reacties.
Geen probleem,

Alvast bedankt voor de moeite :thumb:

Groet Jules
 
Ik heb een aangepaste versie van je db gemaakt, met twee queries die respectievelijk de gebruikers zonder items laten zien, of alle vrije items. Bij de laatste query kun je nog een categorie filteren door een waarde in te vullen. Laat je het dialoogvenster leeg, dan zie je alle records.
Je zult ook zien dat er een tabel is bijgekomen, om de gebruikers aan de items te koppelen. Dit doe je dus niet meer in de tabel Gebruikers. Kijk maar eens of dit een basis is om op voort te borduren.
 

Bijlagen

Deze lijkt inderdaad wel iets anders dan het idee wat ik dus had

Maar het werkt wel SUPER

Hoe kan ik een gebruiker en item loskoppelen zonder de gegevens van de gebruiker te verliezen, want daarna moet ik toch met een formulier een nieuwe gebruiker aanmaken en in het formulier koppelen aan een beschikbaar item
 
Ik snap niet helemaal wat je bedoelt: een gebruiker is gekoppeld aan een item, of hij is dat niet. In het laatste geval verwijder je het record uit de koppeltabel. Er zijn wel een paar methoden om geschiedenis van gebruikers vast te leggen, of in ieder geval een status bij te houden. De makkelijkste: een Ja/Nee veld toevoegen aan de koppeltabel. Aangevinkt, dan is de koppeling actief, uitgevinkt: niet meer actief. In verdere formulieren kun je dan filteren op de status van dat vak. Alternatief: een begin- en einddatum toevoegen aan de tabel. Als je een koppeling maakt, voeg je een begindatum toe, als hij eindigt, een einddatum. Komt er een nieuwe koppeling, weer een record maken met een begindatum. Nadeel: je krijgt voor dezelfde gebruiker-item combinaties meer records. Maar in queries kun je makkelijk op de meest recente filteren, zodat je simpel de actieve kunt filteren (laatste begindatum+einddatum leeg), het laatste afgesloten record (laatste begindatum+einddatum niet leeg) en de historie-records (begindatum < laatste begindatum).
Mijn versie zou zijn: Historietabel maken, en op het moment dat er een nieuw record voor een bepaalde combinatie nodig is, het oude record naar de Historie kopieëren, het record in de koppeltabel aanpassen en de nieuwe datum in Begindatum, en Einddatum leegmaken. Op die manier houd je altijd voor elke combinatie één record, en kun je toch de historie terughalen/teruglezen mocht dat nodig zijn.
 
Als ik dan een kolom uitschrijfdatum aanmaak kan kan ik dan met query zorgen dat de de gebruikers met een uitschrijfdatum voor vandaag naar de historie worden weggeschreven en wil ik de gebruiker weer actief maken de uitschrijfdatum verwijderen en komt terug in de tabel gebruikers

hiermee houdt ik dan gelijk ook bij wanneer een gebruiker weer is weggegaan (kan handig zijn)
 
Laatst bewerkt:
Zoiets ja, ik zou het wel doen vanaf een formulier, zodat je alle acties netjes kunt laten uitvoeren.
 
Michel,

ik heb nog een vraag over de db die je hebt opgezet

Hoe komt de koppeling tussen gebruiker en item tot stand ? :confused:
als ik de tabel gebruikers nu door neem heb ik meer gebruiker-item koppelingen

Het invullen van een item ID in de tabel gebruikers is niet genoeg ? :o
 
Om met de laatste vraag te beginnen: nee, dat is niet genoeg. In tegendeel zelfs... Het komt ook een beetje door luiheid, want ik had de tabel nog voor je kunnen opschonen. Wat is het geval? Op het moment dat je besluit om een koppeltabel toe te voegen, wil je uiteraard de bestaande koppelingen één-op-één overzetten. Die had je in de tabel Gebruikers. Dus je maakt dan een kopie van die tabel.

Omdat je die tabel moet koppelen aan de tabellen Gebruikers en Items, moet je in de nieuwe tabel het autonummerveld (voor de GebruikerID) omzetten naar een Numeriek veld, anders kun je een gebruiker niet koppelen (twee autonummervelden kun je zelden goed koppelen)
De combinatie GebruikerID+ItemID zou een sleutel kunnen zijn, of anders een nieuw Autonummerveld. De tabellen kun je nu aan elkaar koppelen. In weze bestaat de koppeling uit twee velden (GebruikerID+ItemID) dus alle overige velden kunnen er uit. Hetzelfde geldt voor de tabel Gebruikers; omdat het ItemID nu in een andere tabel wordt opgeslagen, kun je dat verwijderen uit de tabel Gebruikers. Een heel verhaal, maar hopelijk is de theorie nu wat duidelijker.
 
Michel,

Sorry maar kan het nog niet volgen :confused:

Ik had de hoop dat ik een tabel gebruikers kon vullen middels een formulier waarin ik dan ook het item nummer kan invullen waardoor er een koppeling met de tabel items plaatsvind

Daarmee heb ik dan een lijst met items waarin ik kan zien wie welk item gebruikt en een tabel met gebruikers waarin ik kan zien welk(e) item(s) deze in gebruik heeft op zeker moment moet de gebruiker worden losgekoppeld van een item. Hiermee komt dus het item weer vrij en kan de gebruiker in een historie tabel worden gezet.
 
Zodra je één-op-veel relaties gaat gebruiken (één gebruiker met meerdere items, of één item dat aan meerdere gebruikers is gekoppeld) moet je ook je formulieren structuur aanpassen. Voor je gebruikers maak je dan een enkelvoudig hoofdformulier, idem voor de Items. Voor de koppeltabel maak je een doorlopend formulier. Dit doorlopende formulier kun je dan als subformulier op de hoofdformulieren fGebruikers en fItems zetten. Als het goed is, zal Access ze automatisch aan elkaar koppelen. Als je dan het hoofdformulier opent, zie je per gebruiker de gekozen items, en idem voor het formulier fItems. Daar zie je dus per Item welke gebruikers zijn gebruikt.

Voor het archiveren/activeren heb je weer handelingen nodig die je het beste in VBA kunt maken, op knoppen die je op je Subformulier of Hoofdformulier kunt zetten. De werking in die gevallen is net iets anders, dus daar mag je nog even over nadenken...
De volgende stap is in ieder geval om twee hoofdformulieren te maken, en daar het subformulier aan te koppelen.
 
één gebruiker met meerdere items kan bij mij wel voorkomen,
maar één item dat aan meerdere gebruikers is gekoppeld komt niet voor

Ik zal eens gaan puzzelen met de formulieren
Je zegt de koppeling maakt Access zelf moet ik dan nog op speciale zaken letten ?
 
Nee, behalve dat de tabellen via Relaties aan elkaar zijn gekoppeld (met Referentiële integriteitscontrole). Bij het toevoegen van een subformulier aan het hoofdformulier ziet Access dan welke velden aan elkaar moeten worden gekoppeld, en zal dat zelf instellen. Je kunt het overigens, als het niet lukt, ook handmatig doen op het tabblad <Gegevens> van de formuliereigenschappen van het subformulier.
 
Als ik dan een formulier aanmaak in de vorm van een 'gesplitst formulier' kan ik dan ook kiezen wat ik in de onderste helft te zein krijg, dus bijvoorbeeld ook de gebrukers-items tabel
 
Kun je proberen; zelf maak ik mijn formulieren liefst zo simpel mogelijk, dus op basis van een tabel, of een (simpele) query, en sleep ik het doorlopende (vaak sub)formulier naar het ontwerpscherm van het hoofdformulier. De Access wizard koppelt ze dan netjes aan elkaar, en ik heb twee fraaie formulieren waar ik verder weinig aan hoef te doen.
Ik vertrouw, kortom, de ingebouwde wizards wat dat betreft niet zo. Een Microsof produkt koop je niet voor z'n fraaie lay-out modellen ;) Althans niet bij Access...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan