Keuzelijst agenda

Status
Niet open voor verdere reacties.

jvandervliet

Gebruiker
Lid geworden
23 mrt 2006
Berichten
234
Beste mensen,

Voor een pedicure moet ik een hele simpele database maken.

Het heeft de volgende functies:

Agenda en anamnese formulier (wat gelijk een klantenbestand is)

Nu heb ik in het anamnese formulier een keuzelijst waar een clienten staan die bijvoorbeeld vandaag komen. Dit is gelukt.
Alleen wil ik een client aanklikken en dan moet de gegevens van die client te voorschijn komen. Hoe doe ik dat?

Agenda is een apart tabel.
 
Ik snap je niet helemaal, maar toch maar een poging :). Je hebt dus een klantenformulier (Anamnese?) waar een (als het goed is) niet-afhankelijke keuzelijst op staat waarin je de klanten van een bepaalde dag ziet. Die keuzelijst geef je een <Bij klikken> actie waarmee je het betreffende KlantID opzoekt in je tabel, en het record activeert. Of is dat niet wat je wilt?
 
Dat klopt ja.

Even ter verduidelijking:

De klant staat in de agenda voor bijvoorbeeld morgen. De pedicure heeft de klant al ingevoerd met alle gegevens in het anamnese formulier. Als ze de de formulier opstart. Ziet ze in de formulier voettekst de keuzelijst staan met de klanten voor die dag. Ze hoeft alleen de klant die in de keuzelijst aan te klikken die er in staat is en de formulier laat al de gegevens zien.
 
Laatst bewerkt:
Het gaat dus, neem ik aan, om het formulier dat op de tabel [Agenda] ligt, en waarmee de agenda gevuld wordt met de gegevens van de klant? Dat is op zich vrij simpel te regelen. Je hebt de keuzelijst al gemaakt zeg je, dus je ziet al de op die dag vastgelegde namen staan in de keuzelijst. Als je in die keuzelijst ook de gewenste naamgegevens hebt opgenomen (ze hoeven niet zichtbaar te zijn) kun je ze simpel opvragen in de Besturingselementbron van een tekstvak. Stel dat je in kolom 1 van de keuzelijst het KlantID hebt, in kolom 2 de voornaam, kolom 3 de achternaam, en kolom 4 het adres. Dan krijg je bij de tekstvakken Voornaam, Achternaam en Adres de volgende formules:
1. =lstKlant.Column(1) (voornaam)
2. =lstKlant.Column(2) (achternaam)
3. =lstKlant.Column(3) (adres)

En zo bouw je het formulier verder op. Elke keer als je een klant aanklikt, zie je dan de bijbehorende naamgegevens.
 
Het zit zo: De klant gegevens staan NIET in de [agenda], het staat allemaal in het anamnese tabel. Het enigste wat er in de agenda staat is de naam van de klant.
De keuzelijst onderaan het formulier laat zien welke klanten op die dag komen. Wat ik wil is dat ik die naam aanklik en dat er in de formulier de gegevens van die klant tevoorschijn komt.
 
Je hebt een tabel [Clienten] met één client er in (CliëntId, Naam etc), en een tabel Agenda waarin je de naam van de client opslaat. Die tabellen zijn niet aan elkaar gekoppeld, en in de tabel [Anamnese-voetonderzoek-behandelplan] laat je dezelfde gegevens terugkomen als in de tabel [Clienten]. Lijkt mij niet handig. Daarnaast heb je in [Anamnese-voetonderzoek-behandelplan] alle 'producten' staan; lijkt mij ook niet handig. Ik zou daar een aparte tabel voor gebruiken, dus een tabel voor de Clientgegevens (die heb je al), en een tabel voor het behandelplan voor die client. Waarin je dus aangeeft wat de details zijn van de behandeling. Daar horen géén persoonsgegevens in thuis, zoals je nu hebt.
Van je huidige opzet snap ik dus niet zo veel; daar moet ik even rustig naar kijken in de pauze.
 
In principe kan de client tabel er uit.

De bedoeling van de opzet is dat je maximaal 1 formulier per client hebt. de tabel cliënten heb ik inmiddels verwijderd. Vandaar dat behandelplan en gegevens op 1 formulier gezet moet worden.
 
De bedoeling van de opzet is dat je maximaal 1 formulier per client hebt.
Dat mag nooit de opzet zijn; de opzet is een werkbare oplossing! Dat kan overigens wel op één formulier, maar zeker niet met één tabel. Daarvoor heb je toch echt aparte tabellen nodig. En dus vermoedelijk een hoofdformulier + subformulier.
 
Dus 2 tabellen. 1 met client adresgegevens en 1 met behandelplan.

Hoe moet ik dan met de agenda doen?
 
Een behandelplan bevat behandeldata, en daar komt je agenda om de hoek kijken. Je Klantgegevens koppel je met een één-op-veel relatie aan het behandelplan (elke client kan tenslotte meerdere keren komen voor een behandeling/behandelplan) en een behandelplan bestaat uit sessies op meerdere dagen, dus een een één-op-veel tussen behandelplan en Agenda. Nu ontbreekt in Agenda die koppel mogelijkheid omdat je daar geen koppelveld hebt.
 
Lees de voorlaatste zin nog eens ;).
 
Je tabel Agenda is niet te koppelen aan de tabel Clienten omdat je in Agenda een naam opslaat; een koppeling kan je alleen maken op basis van een sleutelveld en in Clienten is dat ClientID. Ik zou dus in Agenda een ander veld maken (numeriek) zodat je wél kunt koppelen. Voor het moment kun je de query zo aanpassen:
Code:
SELECT DISTINCT Clienten.CliëntId, Clienten.Naam, Clienten.Telefoonnummer, Agenda.Datum FROM Clienten INNER JOIN Agenda ON Clienten.Naam = Agenda.Cliënt WHERE (((Agenda.Datum)=Date()));
 
k zou dus in Agenda een ander veld maken (numeriek) zodat je wél kunt koppelen. Voor het moment kun je de query zo aanpassen:

Dus Naam agenda veranderen in een Nummeriek veld?
 
Ik zie geen veld [Naam] in de tabel Agenda, wel een veld [Cliënt]. En daar staat dus tekst (de naam namelijk) van de client in. Ik zou eerst en veld [ClientID] toevoegen, zodat je de ClientID kunt vullen met een bijwerkquery. Je koppelt dan de naamvelden aan elkaar en vult het veld Agenda.ClientID vanuit het veld [Client].ClientID. Als alle agenda-items een clientID hebben, kan het veld [Cliënt] weg.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan