sub of function is niet gedefineerd

Status
Niet open voor verdere reacties.

ronnie123

Gebruiker
Lid geworden
21 nov 2007
Berichten
628
beste forum leden
wat gaat er fout als ik bij deze regel de fout melding krijg

Code:
If IsEven(rcdtoernooi.RecordCount) = False Or Not rcdtoernooi.EOF Then

doe het bestandje erbij, de code zit onder knop 1
grt ronnie
 

Bijlagen

Nou de foutboodschap letterlijk nemen.
Een functie (iseven) is niet gedefinieerd!
Jan
 
Die functie zit wel in de db; alleen waarschijnlijk op een ander formulier. Ik kan dat zo uit het hoofd niet zeggen op welk formulier hij wel zit, want ik heb hier geen 2007, maar als de functies IsEven en IsOneven (want die is er ook) worden veplaatst naar een eigen module, dan zou het wel moeten werken.
 
hallo michel
is dat een belangerijke regel want als ik hem weg haal wordt de tabel wel gevuld maar alleen met poule's van 4 spelers en niet met 3 spelers.
of heeft dit een andere oorzaak?
grt ronnie
 
Ik weet niet of hij belangrijk is; ik weet niet wat je er precies mee doet... ik zal eens kijken of hij bij mij wel werkt. Op welk formulier gebruik je 'm?
 
michel ik gebruik hem op het formulier toernooi aan maken,ben nu bezig om de db opnieuw op te zetten en heb de code achter de knop gekopieerd naar de nieuwe db en nu krijg ik dit probleem of weet jij een betere manier voor die code ( toernooi verwijderen had je ook al meters ingekort ):thumb:
grt ronnie
 
Je kunt code niet zomaar verplaatsen naar een andere db; ik zou zeggen: als je functies maakt, zet ze in ieder geval in een algmene module, dan werken ze overal in de db.
 
Ik zou eigenlijk willen aanraden om eerst een goede structuur te maken, en dan te gaan automatiseren met functies e.d.
 
hallo Michel
ik begrijp je denk niet goed wat betreft de structuur,heb in de db nu 2 tabellen om alle gegevens in op te slaan.
1 spelers (met alle persoonlijke gegevens).
2 wedstrijden (waar alle wedstrijden in komen te staan en waar ik via een formulier de uitslagen kan invullen.
en je had het nog over een tabel toernooi, maar ik denk dat ik die niet nodig heb het gaat om 1 toernooi die 1x per jaar gespeeld wordt.
denk ik zo in de goede richting?
hoor het graag van je.
groetjes ronnie
ps zal het bestandje bijvoegen Bekijk bijlage Database1.rar
 
Zal er vanavond naar proberen te kijken; ik zit nog wel met de deadline voor de cursus, dus die gaat wel voor :)
 
Ja, en ik snap nog steeds de opzet niet helemaal; waarom heb je nog steeds drie identieke tabellen (schema 3 personen;schema 3 personen nieuw;schema 4 personen nieuw)? Dat zou nog steeds in één tabel moeten... Met een extra kolom erbij als je onderscheid wilt kunnen maken. Maar ik snap ook niet wat er in staat. Verder heb je in de tabel Spelers nog steeds toernooigegevens staan. Zelfs als je maar één keer per jaar mag meedoen aan een toernooi, zou ik die gegevens splitsen. Ze hebben namelijk niks met elkaar te maken: NAW gegevens staan los van Toernooi en wedstrijdgegevens. Maak daar dus aparte tabellen van.
 
hallo Michel
het verhaal van de tabellen is als volgt
we spelen in poules van 3 of 4 personen.
elke speler speelt 12 setjes
in een poule van 4 personen speelt nr 1 4x tegen nr 2 en 4x tegen nr 3 en 4x tegen nr. 4 in de volgorde als in tabel schema.
voor een poule van 3 personen moet nr 1 6x tegen nr. 2 en 6x tegen nr. 3 om aan zijn 12 setjes te komen, volgens het schema tabel schema 3 personen.
en als er in een poule van 3 personen een speler met N (nieuwe speler) in de kolom opm. (opmerking) zit moet het schema 3 personen nieuw gebruikt worden, dit geld ook voor een poule van 4 personen schema 4 personen nieuw
de volgorde van spelen is voor een poule met een nieuwe speler anders ingedeeld
hoop dat ik een beetje duidelijk ben en dat je me verder kan helpen.
ik zal de andere tabel splitsen.
grt ronnie
 
Dat helpt een beetje, maar dat neemt niet weg dat alles nog steeds in één tabel kan (en moet). Met een extra veld erbij om aan te geven om wat voor soort poule het gaat. Overigens snap ik niet wat de aanduiding N doet; en ook die kwalificatie zou ik onder brengen in een eigen veld, bijvoorbeeld een Ja/Nee veld. Door een N in een memoveld te zetten, kun je daar verder niks meer mee namelijk. Het is ook bijzonder lastig om überhaupt iets te programmeren of te ontwikkelen als onderscheidende gegevens, zoals: is het een nieuwe speler of niet? in een tekstveld wordt 'verborgen'.
 
Wordt weer vanavond!
 
We komen langzaam in de buurt, maar ik snap een aantal dingen nog steeds niet. Om te beginnen: wat wil je nu eigenlijk vastleggen? Ik snap dat je per jaar één toernooi hebt. Elk toernooi bestaat voor elke speler uit 12 westrijden; daarbij zijn de spelers ingedeeld in poules van of 4 personen. Afhankelijk van het aantal personen in een poule speelt een speler 4x of 6x tegen dezelfde speler. Tot zover is het duidelijk genoeg. Maar nu sta je eigenlijk al voor de eerste keus: wil je de resultaten van alle toernooien door de jaren heen opslaan, of wil je alleen de resultaten zien van het lopende toernooi? Zoals je het in eerste instantie had opgezet, kun je alleen het laatste toernooi opslaan. Je kunt dus niet terugzien wie het toernooi in 2005 heeft gewonnen bijvoorbeeld.
En hoe zit dat met nieuwe spelers? je zegt eerder dat die in een andere indeling spelen?
de volgorde van spelen is voor een poule met een nieuwe speler anders ingedeeld
Dat zou dus in moeten houden dat een nieuwe speler niet in een poule met 3 spelers kan, want dan heb je maar twee tegenstanders: stel dat je ze eerst wilt laten wennen door ze met een 'makkelijke' wedstrijd te laten beginnen. Dan is na 1 van de 12 wedstrijden het voordeel dat je als nieuwe speler hebt al weg; de tweede wedstrijd moeten ze al vol aan de bak tegen een betere speler... En dat blijft zo de overige 10 wedstrijden! Persoonlijk zou ik dat onderscheid dus niet eens maken... Iedereen die meedoet, is gelijk! Hooguit zou je een aparte poule kunnen maken voor de nieuwe spelers, maar dat zegt verder natuurlijk ook niks over het niveau waarop ze spelen. Kortom: ik zou het scheiden helemaal overboord gooien, en mij puur concentreren op het maken van een goede pouleindeling (met 3 of 4 spelers).

Hoe zou ik het doen? Als volgt:
In een tabel Toernooi leg je dus de hoofgegevens vast van elk toernooi, zoals het jaar, en een ToernooiID. Je kunt aan die tabel ook nog extra tabellen toevoegen, zoals de prijzen bijvoorbeeld. Wie de hoofdscheidsrechter is, etc. Kortom: alle relevante gegeven die sec op het toernooi slaan, en die elk jaar dus kunnen veranderen, zet je in die tabel.
Op basis van de tabel Toernooi ga je dan de tabel Poules vullen. In die tabel leg je vast welke speler in welke poule zit. Je krijgt dus in ieder geval de velden ToernooiID en PouleNummer en SpelerID; een speler zit niet elk toernooi in dezelfde poule neem ik aan, dus die combinatie is elke keer anders. De combinatie ToernooiID, PouleID en SpelerID is uniek, dus dat zou een potentiële sleutel kunnen zijn. Immers: een speler kan per toernooi maar één keer in een poule worden ingedeeld. Daarbij laat je ook nog de mogelijkheid open dat een speler in twee poules kan zitten, zodat hij een dubbel toernooi kan spelen. Mocht je dat willen tenminste...
Elk record in Poules krijgt ook een uniek nummer, want op basis van dat nummer ga je de wedstrijden vastleggen.

Dat vastleggen van de wedstrijden zou ik via een VBA procedure doen. Normaal gesproken begin je een tabel met een leeg record, en voeg je steeds nieuwe records toe als daar noodzaak toe is. Bijvoorbeeld de tabel Toernooi; als je die tabel hebt aangemaakt, ga je niet gelijk 200 records aanmaken onder het motto: dan heb ik alvast de toernooien klaar! Elk jaar maak je een nieuw record voor het volgende toernooi. Voor de poules geldt hetzelfde: de pouleindeling zal je met de hand doen, omdat je zelf wilt bepalen welke speler in welke poule komt. Daarbij kun je op een formulier heel goed functionaliteit gebruiken waarmee je spelers kunt verplaatsen naar een (andere) poule; maar het principe is waarschijnlijk toch dat je de tabel dynamisch gaat vullen.

Voor de wedstrijden ligt dat dus een beetje anders: zodra de pouleindeling klaar is, weet je welke wedstrijden er gespeeld gaan worden: elke speler in in poule speelt immers 12 wedstrijden. Dus de tabel Wedstrijden ga je op zijn minst vullen met: [PouleID], [Speler1_ID], [Speler2_ID], [Ronde]. Daarbij is de hoogte van [Ronde] afhankelijk van het aantal spelers in een poule: 4 of 6. In die tabel sla je ook de resultaten op: ik zou zeggen: [Caramboles_Speler1] en [Caramboles_Speler2], [HoogsteSerie_Speler1] en [HoogsteSerie_Speler2] en [Aantal Beurten] (je hebt nu BeurtenA en BeurtenB, maar het zal toch niet zo zijn dat spelerA in één wedstrijd 21 beurten krijgt, en spelerB 33?). Volgens mij weet je dan alles. Al heb jij de volgende velden in je tabel staan: CarambolesA, MoyenneA, PuntenA, BeurtenA, HSA en GemaaktecarA. En dat dan herhaald voor spelerB.
Als leek vraag ik mij af wat het verschil is tussen CarambolesA en GemaaktecarA. En waarom je het Moyenne ook opslaat. Dat is, neem ik aan, toch een berekening op basis van Beurten en Caramboles? Of heb ik al die jaren niet op zitten letten bij Studio Sport? (niet dat ze veel biljarten uitzenden ;) )

Maar om bij de les te blijven: zodra de pouleindeling bekend is, kun je dus de tabel wedstrijden vullen met de basisgegevens: elke speler speelt in elke ronde één keer tegen elkaar, dus elke ronde bestaat uit 2 of 3 wedstrijden. Die wedstrijden worden op een specifieke datum/tijd gespeeld, dus dat veld heb je uiteraard ook in de tabel Wedstrijden opgenomen. Wat je dus doet met de procedure, is de tabel Wedstrijden vullen met alle van te voren bekende gegevens: het veld Ronde, Speler_1, en Speler_2. In een formulier kun je dan de datums invullen van de wedstrijd, en de resultaten.

De uiteindelijke ranglijsten, standen, moyennes van spelers etc zijn allemaal berekeningen, en daarvoor gebruik je dus queries. En de resultaten daarvan kun je uiteraard ook weer in een formulier laten zien. Of desnoods met rapporten, waarin je mooie groeperingen (bijvoorbeeld de stand per poule) kunt laten zien.

Is dit wat je zoekt, of zit ik er nu helemaal naast?
 
Hallo Michel
De vraag wat wil ik vastleggen, zover was ik nog niet met mijn db maar dat wil ik wel nu heb ik nog alles via raporten uitgeprint.

Wat betreft de nieuwe speler, dit is een verhaal apart.
In dit toernooi mag je je opgeven met een complete poule ( ik speel zelf ook mee met 3 zwagers van me) nu is een van hen een nieuwe speler ( speler 1) die nog geen driebanden moyenne heeft, dan wordt hem aan de hand van libre moyenne of ander richtlijnen hem het moyenne en daaraan gebonden aantal caraboles door de organisatie toegewezen.
Als hij 3 setjes heeft gespeeld wordt dit aangepast.
Als hij volgens het normale schema speeld en we hebben hem telaag ingedeeld zodat hij alles gewonnen heeft, is alleen speler 2 de ... , of te hoog dan heeft alleen speler 2 geluk.
daarom hebben we dit aangepast zodat hij 1x tegen 2 speeld, 1x tegen 3 en 1x tegen 4 en daarna wordt herzient.
dat is ook het verhaal van de herzieningen in mijn oude db.
het verhaal geld ook voor poules van 3 personen want het komt voor dat op het laatste moment iemand zich heeft terug moeten trekken en we de poule niet meer aan konden vullen.( terwijl er een nieuwe speler in zit )

We spelen in setjes en daarin heb je geen nabeurt dus als speler A in 30 beurten klaar is blijft speler B op 29 steken.

Moyenne is aantal caramboles gedeeld door aantal beurten, dit wordt opgeslagen voor later gebruik ( maar ik denk dat je zal zeggen dat kan moet in een query ).

Caramboles A is wat hij maken moet en gemaakt A het aantal wat hij gemaakt heeft.

ik had een vraag over tabel toernooi, je schrijft dat je daar niet gelijk 200 records in aanmaak, maar zoals ik het nu heb doe ik dat wel
de spelers zijn bekend de volgorde is bekend wedstrijnr. is bekend ik hoef nu alleen in het formulier het wedstrijdnr. in te voeren en krijg daar dan de gevens in beeld hoef ik alleen de car. hoogste serie en beurten per speler in te voeren en klaar.
wat is hier fout aan? is voor de wedstrijdleider wel heel gemakkelijk ;)

Hoop dat we hiermee weer dichter tot elkaar komen.

ga weer met de tabellen verder.
groetjes ronnie
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan