Opzet database - help!

Status
Niet open voor verdere reacties.

Linni

Gebruiker
Lid geworden
22 jun 2011
Berichten
19
Ik ben bezig om een database op te zetten. Ik wil dat de basis stevig staat, maar het lukt me nog niet echt. Het zit als volgt in elkaar:

- ik heb een tabel die als template dient. De veldeigenschappen en links met andere tabellen moeten behouden blijven.
- er is een tabel met gegevens. Die worden aangeleverd met Excel. Soms moeten deze vervangen worden.
- medewerkers moeten gegevens controleren en aanvullen. Dus heb ik ook een filter per medewerker nodig.

Kun iemand mij hiermee helpen?
Groet, Linda
 
Hallo Linda,

Allereerst uiteraard welkom op het forum! Om je vraag goed in te kunnen schatten, heb ik wat meer inzicht nodig, vrees ik.

ik heb een tabel die als template dient. De veldeigenschappen en links met andere tabellen moeten behouden blijven.

Wat bedoel je hier mee? Een tabel is in beginsel geen template; een tabel kun je wel kopiëren, maar dat kun je met elke tabel doen. Daarvoor hoef je niet een tabel 'apart' te houden. Ik krijg de indruk dat je op regelmatige basis gegevens uit Excel krijgt aangeleverd. En deze wil je dan in een tabel zetten. Maar ook niet altijd; soms wil je gegevens vervangen? En wil je ze in het andere geval toevoegen aan een bestaande tabel, of wil je steeds een nieuwe tabel (laten) maken?

Voor je gebruikers maak je formulieren; heb je één tabel, dan is 1 tabel uiteraard voldoende, maar heb je er meer, dan zul je waarschijnlijk ook meer tabellen nodig hebben. En hoe zit het met de links met andere tabellen? Waar staan die? En hoe wil je die koppelen aan de nieuwe tabellen (als je die nodig hebt tenminste?)
 
Wat super dat je me wilt helpen hierbij!!!

Ik zal wat specifieker zijn met de werkwijze. Er is een stroom van gegevens die gecontroleerd en aangevuld moeten worden. Ik heb daarvoor een lijst in excel van 25.000 records. Deze tabel heb ik geimporteerd en wil deze aanvullen met extra gegevens die aan deze tabel moeten worden toegevoegd. Als een record gecheckt is, dan moet deze uit de tabel worden gehaald en worden bewaard.
Ik wilde de database zo opzetten dat er een doorstroom van gegevens kan zijn. Dus als er een volgende lijst met 25.000 records komt, dat ik deze kan vervangen.
ik zoek een oplossing om deze exceltabel makkelijk te kunnen vervangen, zonder dat relaties opnieuw gelegd moeten worden.
 
Zoals je het nu zegt, krijg ik de indruk dat je de brongegevens in Excel wil opslaan. Je kunt in Access wel een Excel tabel bewerken, en je kunt records toevoegen, maar verwijderen is een ander verhaal; daarvoor moet je (als je dat in Access wilt doen) met een VBA procedure Excel openen, het record opzoeken, verwijderen, en Excel sluiten.

Anders wordt het (en daar zou ik voor kiezen) als je besluit om je gegevens te beheren in Access, want daar is een database tenslotte voor. In dat geval heb je een import vanuit Excel nodig, die je eenvoudig kunt automatiseren, waarna je in Access de gegevens controleert en muteert, waarna je vervolgens de bijgewerkte records overhevelt naar je hoofdtabel. Je hoeft de gegevens dan dus niet te koppelen.
 
Je tweede suggestie is inderdaad makkelijker. Ik ga er meteen mee aan de slag.

Nu heb ik nog een ander probleem: ik moet een aantal records toewijzen aan een bepaalde medewerker. In de geimporteerde tabel hb ik al een veld gtoegevoegd met medewerker ID.
Ik wil bijv. de eerste 20 records toewijzen aan Freek, daarna 10 records aan Wil, etc. Is er een toepassing waarmee de werkverdeler dit mbv een formulier kan doen? Dat hij het aantal records en de naam invoert en dat in de tabel wordt doorgevoerd?
Daar bovenop zal de betreffende medewerker alleen zijn eigen werk moeten kunnen inzien en dus zal ik een filter moeten maken per werknemer. Is dit handig met een switchboard?

Thanx!
 
Er zijn op het forum verschillende draadjes m.b.t. inlog formulieren, en records selecteren op basis van gebruikers, zelfs draadjes die nu lopen. Kijk eens of je daar iets tussen vindt dat je kunt gebruiken!

Records toewijzen aan bepaalde personen kun je met een Bijwerkquery doen, mits je daar een bepaalde systematiek voor kunt bedenken. Als er 2500 records zijn, en 5 medewerkers, en het maakt niet uit wie wat doet, kun je bijvoorbeeld 500 records toewijzen aan persoon1, 500 aan persoon2 etc. Wil je het handmatig, dan kun je een doorlpend formulier maken waarbij je bijvoorbeeld m.b.v. een keuzelijst een persoon toewijst. Al is dat veel meer werk.
Het is op zich niet moeilijk om met één formulier te werken, waarop je een standaard filtering hebt op basis van een gebruiker. Zelf loop ik met een stevige boog om het ingebouwde Switchboard heen, omdat dat gebruik maakt van een redelijk ingewikkelde oplossing, die je niet zomaar kunt aanpassen. Beter is het om zelf een startformulier te maken.
 
Ik heb me suf gezocht naar de relevante threads, maar ik heb nog geen zoekfunctie gevonden. ?!
Ik ben dan ook nog niet helemaal thuis op deze site.

Hoe maak ik bijvoorbeeld het filter vanuit het startscherm? Ik heb een hokje met de naam van de medewerker en dan een button naar het formulier waar de medewerker alleen zijn eigen portie te zien krijgt. In welke deel vindt de filtering plaats? Bij het aanklikken? Of pas in het werkformulier?
Als er al een draadje over loopt, kun je me daarnaar verwijzen?
 
In dit draadje (met een verwarrende naam, zal ik niet ontkennen :) ) heb ik op de laatste pagina een voorbeeldje gepost met een invulscherm. Als je de db met de <Shift> toets ingedrukt opent, kun je bij de tabellen, anders moet je inloggen. De inlognaam is gelijk aan het wachtwoord overigens, dus heel ingewikkeld is het niet...

In het voorbeeld worden gegevens getoond op basis van de ingelogde persoon. Dus een beetje het idee dat jij wilt, alleen hier toegepast op schermonderdelen. Wat jij wil is eigenlijk simpeler.
 
button inactief maken

Beste OctaFish,

Het begint al aardig z'n vorm te krijgen zoals ik het in m'n hoofd had. Dank voor je hulp nog.

Nu zit ik met de volgende kwestie: Medewerkers moeten soms wel een button zien en gebruiken en bij andere voorwaarden niet. Het laten zien, dan wel niet laten zien van button kun je zeker alleen mbv VBA code. Daar is geen andere oplossing voor?
Zou je daar verder mee kunnen helpen?
 
Daar is denk ik inderdaad geen andere oplossing voor. Maar dat geeft natuurlijk niet; vba is bij uitstek geschikt om dit soort vragen op te lossen. Net zoals je met een mes beter snijdt als met een vork :) Pak het juiste gereedschap voor de juiste klus!

In dit geval, waarin je soms wel en soms niet iets wilt laten zien/gebruiken, zul je ergens vast moeten leggen wie wat mag doen. Doorgaans doe je dat door een veld met een toegangsgroep toe te voegen. Dus medewerkers met kwalificatie A (of 1, als je getallen wilt gebruiken) mogen een formulier wel openen met een knop, de mensen met B of 2 niet, en de mensen met C of 3 mogen niet alleen openen, maar ook records toevoegen bijvoorbeeld. Zo'n rechtengroep kun je in een specifieke tabel maken, waarbij je dan per medewerker kan aangeven wat hij wel of niet mag doen/zien. Of, zoals in mijn voorbeeld, in de Medewerkerstabel als het rechtenniveau voor de hele database geldt.
Op de formulieren kun je dan op basis van de rechten de gewenste acties uitvoeren.
 
Buttons inactief maken met VBA code

Zou iemand mij als beginnende access-gebruiker kunnen helpen? Dit is wat ik uiteindelijk wil bereiken: http://www.access-programmers.co.uk/forums/showthread.php?t=16083Ik heb een formulier, genaamd 'M&C zaken' waarop ik die buttons heb die ik actief/inactief wil maken, aan de hand van het formulier 'Keuzelijst'. In de keuzelijst heb ik aangegeven met checkboxes welke button actief of inactief moet zijn. De buttons op het formulier M&C zaken heb ik tags gegeven met naam: 'NORMAL'.
Hoe moet ik de code nu veranderen?
En waar moet ik dat implementeren bij de standaardcode voor het klikken op een button die doorverwijst naar een nieuw formulier?

In groen de code zoals die nu is:

Private Sub Command94_Click()
On Error GoTo Err_Command94_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "ABC"

stLinkCriteria = "[ID ABC]=" & Me![ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Command94_Click:
Exit Sub

Err_Command94_Click:
MsgBox Err.Description
Resume Exit_Command94_Click

End Sub

En dit is de code voor het actief/iactief maken van de buttons. Hoe krijg ik die in het bovenstaande geimplementeerd?

Dim MyControl As Control

If Me.chkTest.Value = True Then
For Each MyControl In Form.Controls
If MyControl.Properties("Tag") Like "[Name of your tag here]" Then
MyControl.Visible = True
End If
Next
Else
For Each MyControl In Form.Controls
If MyControl.Properties("Tag") Like "[Name of your tag here]" Then
MyControl.Visible = False
End If
Next
Endif
 
Je laat stukken code zien die weinig met elkaar te maken hebben; de groene code (terzijde: zet je vba code in de CODE tag (Knop #) dan is hij een stuk leesbaarder) opent een formulier, en verder niks. Je zegt dat je checkboxen gebruikt die je aan- of uitzet op basis van een keuzelijst. Waarom gebruik je dezelfde gebeurtenis niet om gelijk de knoppen zichtbaar of onzichtbaar te maken? De blauwe code (zie eerdere opmerking...) is zo ook niet bruikbaar, want daar moet je een Functie van maken die je aanroept (bijvoorbeeld via die keuzelijst). Maar zonder voorbeeldje is het lastig meedenken...
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan