[Access] Invulmogelijkheden beperken op basis van record

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MrAngry
  • Registratie: December 2001
  • Laatst online: 17:25
Ik ben een access database aan het maken en er is iets waar ik niet helemaal uitkom. We hebben hier een aantal lokaties, die ruimtenummers hebben. En die ruimtenummers bevatten allemaal kasten (even simpel gezegd).

Nou wil ik dat als iemand een "product" toewijst aan een lokatie en een kast, dat hij alleen de kasten te zien krijgt die in een geselcteerde lokatie staan en niet alle kasten. Ik heb een tabel kasten en een tabel lokaties die een many to many relatie hebben in een tabel voorraad (waar ook producten een many relatie op hebben).

Ik heb het gevoel dat ik ergens een logische denkstap mis. Hoe kan ik het zo maken dat als iemand lokatie A selecteer dat ie alleen kast 1tm4 kan selecteren en op lokatie b alleen kast 5tm8? (en ik wil het dus ook zo hebben dat een kast met producten van lokatie kan veranderen)

Er is maar één goed systeem en dat is een geluidsysteem - Sef


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
"Ik heb een tabel kasten en een tabel lokaties die een many to many relatie hebben in een tabel voorraad"

Dat snap ik niet. Een kast kan zich toch nooit in meerdere lokaties bevinden? - als ik je verhaal goed begrijp tenminste.

Ik zou zeggen dat een kast altijd maar in 1 lokatie tegelijk kan zijn. En 1 lokatie kan wel meerdere kasten hebben. 1-op-veel dus.

Acties:
  • 0 Henk 'm!

  • MrAngry
  • Registratie: December 2001
  • Laatst online: 17:25
Je hebt gelijk. Maar als ik kasten-->lokaties-->Voorraad maak als tabellen dan kan ik toch niet heel makkelijk invullen in welke kasten op welke lokaties een bepaald product ligt?

Stel je de volgende situatie voor.
Er zijn meerdere ruimtes, met meerdere vriezers, met meerdere lades en in die lades ook nog bakken. Nou heb ik product x die over meerdere bakken in meerdere lades in meerdere vriezers in meerdere ruimtes kan liggen.
Hoe giet ik dat in tabellen? Ik begin de weg een beetje kwijt te raken :)

Er is maar één goed systeem en dat is een geluidsysteem - Sef


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Het valt mee :)

- van een product hou je voorraad bij, laten we dat 'voorraad-items' noemen.
- voorraad-items zitten altijd in een 'bak'
- een bak zit in een lade, een lade zit in een vriezer, een vriezer staat in een ruimte - maar dat boeit verder eigenlijk niet echt.
- de tabel voorraad-items bestaat dus vooral uit product-id en bak-id (en wellicht wat metagegevens, datum, gebruiker, etc)


Wat je vooral nodig hebt is een goede interface wanneer een gebruiker voorraad gaat beheren.

> Selecteer Ruimte
(update lijstje beschikbare vriezers)

> Selecteer Vriezer
(update lijstje lades)

> Selecteer Lade
(update lijstje bakken)

> Selecteer Bak << en alleen die waarde sla je op bij het voorraad-item

Dat kan je waarschijnlijk het beste doen met keuzelijsten

edit: als het om weinig records gaat, dan zijn listboxen ook een optie; het voordeel daarvan is dat je als gebruiker meteen de keuzemogelijkheden ziet, terwijl je bij keuzelijsten die eerst nog moet openklappen. Of een mooie treeview, dat kan natuurlijk ook. Het hangt er vanaf over wat voor aantallen het gaat.

edit2: en uiteraard heb je wat admin-schermen nodig die je de mogelijkheid bieden om een vriezer van ruimte A naar B te verplaatsen, etc. Voor de voorraad-items maakt dat verder niet uit, door de relatiestructuur verhuist dat allemaal mee.

[ Voor 25% gewijzigd door Marko_J op 01-10-2010 14:31 ]


Acties:
  • 0 Henk 'm!

  • MrAngry
  • Registratie: December 2001
  • Laatst online: 17:25
Je hebt het erg inzichtelijk gemaakt, hartelijk dank daarvoor! Als je het eenmaal snapt dan is het verdacht weinig werk, dus ik heb het al geimplementeerd. Nu die interface nog, maar daar ga ik in het weekend eens rustig over nadenken ;)

Er is maar één goed systeem en dat is een geluidsysteem - Sef


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
No problem :) Dagelijkse kost voor me

De interface zal wat VBA vergen; steeds als er een waarde gekozen wordt, moeten de lijsten eronder vernieuwd worden. Daarvoor is de functie requery.

Acties:
  • 0 Henk 'm!

  • MrAngry
  • Registratie: December 2001
  • Laatst online: 17:25
Aanvullend vraagje. Ik ben nu met de form bezig.
Ik heb een subform waar de voorraad en lokatie van een bepaald product op staat.
Daar staan comboboxen op die aan elkaar gelinked zijn en netjes requeryen met VBA (zoals hierboven beantwoord). Dus als ik een bepaald product selecteer (op de mainform) dan zie ik op het subform netjes in m'n eerste combobox een afdeling verschijnen en in m'n tweede de kast waar die ligt. Het probleem is alleen dat als ik een voorraad record toevoeg hij een nieuwe entry maakt in m'n tabel met kasten (met afdeling en kast en een nieuwe primary key). Dat komt door de control sources die ingesteld staan bij de comboboxen. Maar zonder die control sources blijven de boxen weer leeg en zie ik geen weergave van welke voorraad op welke lokatie ligt.

Hoe kan ik het nou zo maken dat die controlboxen bij het switchen van het product in de mainform de goede waarde weergeven aan de hand van de lokatie foreign key in m'n voorraad tabel (meerdere boxen dus voor die ene waarde) en dat ook alleen die foreign key veranderd aan de hand van wat ik selecteer in m'n boxen (en niet de waarde in de onderliggende tabellen waar kasten en afdelingen ed aan elkaar geknoopt zijn).

Of maak ik ergens een denkfout?

Er is maar één goed systeem en dat is een geluidsysteem - Sef


Acties:
  • 0 Henk 'm!

Verwijderd

Marko_J schreef op vrijdag 01 oktober 2010 @ 14:45:
No problem :) Dagelijkse kost voor me

De interface zal wat VBA vergen; steeds als er een waarde gekozen wordt, moeten de lijsten eronder vernieuwd worden. Daarvoor is de functie requery.
requery kan ervoor zorgen dat je formulier in een loop komt te zitten, je kunt misschien beter recalc gebruiken...

Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
@m_perk:
- recalc gebruik je om een veld met formules opnieuw te berekenen, bijvoorbeeld een totaalbedrag
- requery gebruik je om nieuwe/andere gegevens op te halen uit queries
Ik bedoelde in mijn voorbeeld wel degelijk requery. Dat commando moet dan wel losgelaten worden op specifieke elementen, anders requery je inderdaad volledige formulieren en dat hoeft niet per se.

@MrAngry;
Ik snap niet wat je bedoelt.. Kan je een voorbeeld online zetten?
Pagina: 1