Aan een opdrachtbon (order) een gewijzigd record hangen

Status
Niet open voor verdere reacties.

MarjanSpinner

Gebruiker
Lid geworden
29 okt 2018
Berichten
29
Bekijk bijlage NvE helmij voorbeeld.zip

Beste vrijwilligers van HelpMij,

Voor een vrijwilligersproject ben ik begonnen met een database om hulpvragen van klanten te registreren en te koppelen aan een vrijwilliger. De vrijwilliger ontvangt de opdrachtbon per email. Als de vrijwilliger de opdracht niet kan uitvoeren, komt de opdracht terug en moet er een nieuwe koppeling gemaakt worden.
Ik heb weinig ervaring met Acces dus ik heb al veel rondgesnuffeld hier op HelpMij. Op basis van de items hier heb ik een allereerste basis voor mijn database gemaakt. Het zou fijn zijn als iemand daar ook een kritische blik op zou kunnen werpen.
Ik heb het bestand mee gestuurd. Ik kreeg geen optie om het bestand op te slaan in 2003 (sorry Octafish).

Alvast hartelijk dank.

Marjan
 
Ik zal er een blik op werpen. En 2003 heb ik al een tijdje niet meer op de laptop staan :). Ik ben ondertussen namelijk wel gewend aan de nieuwe interface. Hoe slecht ik ‘m ook nog steeds vind :D.
 
Ik zou om te beginnen de tabel met vrijwilligers loskoppelen van de tabel met klanten. Niet alle velden zijn namelijk van toepassing op beide 'soorten' personen. Ik snap overigens wel waarom je ze in één tabel wilt zetten, want ik heb regelmatig beweerd dat je 'objecten' die identiek zijn, bij elkaar zet in een tabel. En het menstype 'klant' heeft nu eenmaal dezelfde eigenschappen als het menstype 'medewerker'. Maar toch zit er verschil tussen, al was het maar een functioneel verschil. En ik denk ook dat bepaalde velden in je tabel bedoeld zijn voor klanten, en niet voor medewerkers ([zwarte lijst] bijvoorbeeld). En wat als een persoon zowel klant als medewerker is? Hoe geef je dat aan? Nee, ik zou daar twee aparte tabellen voor maken. Je moet dus, als je tabellen maakt, weliswaar in gelijkwaarde objecten denken, maar die gelijkwaardigheid moet ook (en vooral) in de betekenis van het object liggen. Wat is het object precies in de database? En dan is een klant iets heel anders als een medewerker.

Ik heb wat aanpassingen gemaakt met zoals ik het dus zou opzetten.
 

Bijlagen

  • NvE helmij voorbeeld.zip
    90,8 KB · Weergaven: 32
Goed geraden! Ik ga morgen een kijkje nemen. Bedankt alvast voor de snelle reactie.

Marjan
 
Goedemorgen Octafish,

Bedankt voor de aanpassingen. Ik neem aan dat ik vanuit deze basis verder kan bouwen. Blijft de vraag hoe ik een gewijzigde opdrachtbon onder een de eerste kan hangen open? Heb je daar een voorbeeld van?
Bedankt maar weer.

Marjan
 
Je huidige opzet is enigszins eendimensionaal: alles in één tabel. Wil je de historie bewaren, dan moet je de opdrachten tabel uitsplitsen in de opdracht zelf (tblOpdracht) en de verschillende acties (tblOpdracht_Acties). Daarin leg je dan de historie vast.
 
Ik heb de tabel gesplitst. Een query gemaakt op basis van beide tabellen. Wizard formulier geeft dan een hoofd- en subformulier. Lijkt me logisch omdat onder OpdrachtID meerdere records kunnen hangen. Is dit de juiste weg?
Nu is een subformulier wel handig voor het overzicht, maar ik vind het niet zo prettig werken met invoeren. Kan het ook anders?
 
1: Ja, dit is de juiste weg :).
2. Doorlopende formulieren kun je prima zodanig opmaken dat ze wél handig en fraai zijn.
Het is ook veruit de makkelijkste en handigste manier om te werken met gekoppelde tabellen, en elke beginnende gebruiker kan ze maken en gebruiken. Elke andere oplossing vraagt structurele kennis van Access en (vooral) programmeren. En dat botst dan een beetje met deze opmerking:
Ik heb weinig ervaring met Acces
 
Hoi Octafish,

Oké dan ga ik op deze voet verder en zal ik proberen iets handigs en fraais te maken van doorlopende subformulier.
Bedankt voor de tips. Ik zal dit topic afsluiten.

Marjan
 
Beste Octafish,

Ik heb een poging gewaagd om de db minder statisch te maken. Ik vraag me echter af of ik wel echt op de goed weg zit. Oftewel ik heb behoefte aan een kritische blik.
Ik hoop dat je tijd en zin hebt om een kijkje te nemen.

Bekijk bijlage NvE helpmij voorbeeld2.zip

Alvast hartelijk dank.

Marjan
 
Zal er vanavond een blik op werpen! Db’s horen niet statisch te zijn, in de zin dat de data leidend moet zijn voor het gebruik. Ben dus benieuwd wat je precies bedoeld met ‘statisch’ :).
 
Ik snap geloof ik wat je bedoeld met 'statisch'. Je hebt het formulier frmOpdrachten gebaseerd op een query met teveel tabellen, waardoor je een slecht formulier hebt om opdrachten in te voeren en te muteren. Als je op basis van de tabel [tblOpdrachten] met de knop <Formulier> (tabblad <Maken>) een nieuw formulier maakt, krijg je meer de opzet zoals ik 'm zou doen: een hoofdformulier met de Opdrachtgegevens, en een subformulier voor de verschillende opdrachten. En daarmee voeg je dus per opdracht meerdere records toe. De layout die je met die knop krijgt is niet geweldig, maar dat kan je wel naar eigen inzichten opknappen. In het voorbeeldje vind je die constructie onder het formulier fOpdrachten.
 

Bijlagen

  • NvE helpmij voorbeeld2.zip
    136,2 KB · Weergaven: 36
Hoi Octafish,

Zo was ik ook begonnen, maar om het voor mijn collega vrijwilligers duidelijker te maken heb ik een query gemaakt. Maar ik raakte inderdaad het overzicht een beetje kwijt door die wirwar aan tabellen en relaties.
Ik ga kijken wat ik kan doen om de gebruiker duidelijk te laten zien waar die mee bezig is bijvoorbeeld door gebruik te maken van keuzelijsten zoals bij Opdracht voor klant en dan met cboColumn wat extra info op het formulier zetten.
Alleen idjes gaat de gebruiker duizelen. Ook een uitdaging om de verschillende acties als invoeren en muteren in een formulier te verwerken.

Bedankt maar weer.

Marjan
 
Alleen idjes gaat de gebruiker duizelen.
Maar dat is Logitech; ID velden zijn doorgaans getallen, en dat zegt niemand wat. Een goed ontworpen database slaat de juiste gegevens op (op de juiste manier) en heeft formulieren waarin de gebruiker alleen met tekst hoeft te werken, dus keuzelijsten om waarden te kiezen uit de stamtabellen, eventueel aangevuld met tekstvelden die extra velden uit de keuzelijst halen en velden voor eventuele formules.
Daarnaast heb je, in jouw geval, subformulieren nodig voor de gekoppelde gegevens, maar ook daar kun je prima doorlopende formulieren voor ontwerpen die er mooi uitzien voor de gebruiker. Of eventueel een pop-up formulier als je het nog wat fraaier wil maken. Alleen zit je dan met de data-integriteit, want alles moet natuurlijk wel correct worden weggeschreven. Maar dat is tegelijk ook het leuke van Access: er kan ontzettend veel :).
 
Logitech.:). Ik ben me ervan bewust dat ik nog maar heel weinig weet. Mijn collega's waren al wel onder de indruk en denken dat ik een wonderkind ben. Haha. Maar ik weet dat er achter de schermen nog wel wat te sleutelen valt voor een goede basis. Maar gelukkig zijn er de vrijwilligers van Helpmij die mij gaande weg veel leren. :thumb:

Fijne avond, Marjan
 
Op opdrachtbon keuze zelf uitvoeren of uitbesteden

Beste Octafish,

Een opdracht wordt meestal door één van onze vrijwilligers gedaan, maar soms wordt ie uitbesteed. Ik heb hiervoor 2 knoppen op het subformulier gemaakt.
Als je nog zin hebt, zou je dan een kijkje willen nemen of dit een goede oplossing is?

Bedankt maar weer.

Marjan

Bekijk bijlage NvE helpmij voorbeeld3.zip
 
Zin is nooit het probleem :). Maar ik kijk er wel even naar als ik tijd heb.
 
Ik zie een ontwerpfout(je) dat ik zou veranderen, als ik jou was. En dat is: het gebruik van twee aparte velden voor het onderscheid tussen Vrijwilliger en Externe. In essentie heb je per actie maar één uitvoerder. Daarom moet je die uitvoerder in één veld opslaan en niet in twee. Twee velden die identieke informatie bevatten gebruik je maar heel sporadisch, bijvoorbeeld bij klantgegevens om twee telefoonnummers op te slaan. Maar zodra een klant twee of meer filialen (en dus ook adressen) heeft, ga je in dat klantrecord niet voor elk adres alle velden herhalen, maar gebruik je een gekoppelde tabel.
Je wilt te allen tijde kunnen rapporteren op wie welke actie gedaan heeft, en dat kan alleen correct, snel en foutloos als je de uitvoerder in één veld houdt. Dat betekent dat je in de keuzelijst dus beide hulpverleners moet opnemen. Eigenlijk ben je dan ook al gelijk klaar, en kunnen je knoppen ook weg, want nu kun je ook nooit verkeerd kiezen. Er is immers maar één keuzelijst waar je dan maar één waarde kunt selecteren.

Ik kan me nog voorstellen dat je de keuzelijst wilt beperken tot ofwel de vrijwilligers, ofwel de externe organisaties en dát kan je dan met de knoppen regelen. Die knoppen passen dan het filter op de keuzelijst aan. Jouw oplossing werkt wel, maar verdiend dus geen schoonheidsprijs :).

De code van je knoppen/keuzelijsten kan ook strakker. Sterker nog: die onder de keuzelijsten kan volgens mij helemaal weg.

Code:
Private Sub cmdZelfUitvoeren_Click()
    With Me.cboExterneOrganisatie
        .Value = Null
        .Enabled = False
        .Locked = True
    End With
    With Me.cboVrijwilliger
        .Enabled = True
        .Locked = False
        .SetFocus
        .Dropdown
    End With
End Sub

Code:
Private Sub cmdUitbesteden_Click()
    With Me.cboVrijwilliger
        .Value = Null
        .Enabled = False
        .Locked = True
    End With
    With Me.cboExterneOrganisatie
        .Enabled = True
        .Locked = False
        .SetFocus
        .Dropdown
    End With
End Sub
 
Je was nog laat bezig. Bedankt.
Ik snap het principe dat je voor de uitvoering 1 veld gebruikt, maar hoe leg je dan de relaties met tblVrijwilliger en tblExterneOrganisatie om het juiste emailadres te krijgen voor de vervolgactie.
Ik heb een aantal dingen geprobeerd maar helaas zonder resultaat.

Marjan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan