Tel functie maken obv datum of tekst

Status
Niet open voor verdere reacties.

Revolutionary

Gebruiker
Lid geworden
1 apr 2009
Berichten
183
Goededag allemaal,

Ik ben momenteel bezig met wat aanpassingen te verrichten in een database die ooit door iemand anders is ontwikkelt. Ik wil een query ontwikkelen waarmee ik een aantal taken kan monitoren.

Ik wil bijvoorbeeld kunnen monitoren hoeveel gesprekken iemand in 1 jaar heeft gevoerd.
De medewerkers hebben de volgende targets:
60 gesprekken (met verschillende prospects) per jaar voeren, van die 60 gesprekken moet 36 leiden tot een nieuwe klantrelatie.

Bijgaand een printscreen zoals het invulscherm er voor de medewerkers uit ziet. Om het aantal gesprekken te berekenen wil ik een telfunctie gebruiken voor het invulveld 'Datum 1' (zie rode cirkel erom heen).
Om het aantal nieuwe klant relaties te tellen wil ik een telfunctie gebruiken voor het invulveld 'Productie gesloten' (zie tweede rode cirkel).

Kan iemand mij uitleggen wat voor criteria ik dan in de query moet zetten?

Alvast heel erg bedankt!:thumb:

Mvg,
Tim
 

Bijlagen

  • Resultaten.jpg
    Resultaten.jpg
    102,5 KB · Weergaven: 82
Nog een extra toelichting: bij het invulveld 'Datum 1' kan alleen een datum ingevoerd worden (spreekt voor zich), en zodra daar een datum ingevuld is moet de teller op 1 komen, wordt bij de volgende klant ook een datum ingevuld in dat veld dan moet de teller op 2 komen enz enz.

Bij het invulveld 'Productie gesloten' kan alleen ja of nee geselecteerd worden. Deze telfunctie moet dus gebaseerd worden op het aantal ja's.

Mvg,
Tim
 
Aan het formulier kan ik niet zoveel zien, want ik weet zo niet op welke tabellen het formulier is gebaseerd. Ik neem aan, dat er ergens een personeelsnummer wordt opgeslagen in een tabel met daarin de afspraken. Op basis daarvan kun je een query maken, waarbij je met de knop Totalen een telling kunt maken door het veld [PersoneelsID] te groeperen met Group By (standaardinstelling), en het veld [Datum1] te tellen met de functie [Aantal].

De nieuwe query hang je dan ook aan de Recordbron van het formulier, waarbij je uiteraard de personeelsID koppelt, en vervolgens kun je dan het veld [antalVanDatum1], ervanuitgaande dat je de veldnaam niet hebt veranderd, op het formulier zetten.

Er zijn ook andere opties, maar daarvoor zul je een dummy van de db moeten posten, want ik vermoed dat e.e.a. al relatief gecompliceerd is gebouwd.

Michel
 
Beste Michel,

Bedankt voor je reactie! Wat jij zij heb ik geprobeerd en het werkt:thumb: Nu kom ik echter een volgend probleem tegen:

Met behulp van een formulier waar je begin en eind datum intypt wil ik dat er een rapport uit komt rollen waarin het aantal gesprekken komt te staan die binnen begin en eind datum hebben plaatsgevonden.

Nu heb ik dus in de query bij criteria van 'Datum 1' gezet:
Between [Forms]![frmaantalgesprekken].[qbegin1] And [Forms]![frmaantalgesprekken].[qeind1]

Als ik de zoekfunctie uitvoer dan krijg ik de volgende foutmelding: This expression is typed incorrectly, or is too complex to be evaluated. enz enz. Zou het zo kunnen zijn dat als je kiest voor 'Aantal' in de query dat je dan geen criteria meer kunt opgeven?

Ik heb overigens dit zoekformulier gemaakt aan de hand van een DataPig video.

Alvast bedankt!

Mvg,
Tim
 
Mocht zoeken op begin en eind datum niet lukken, dan zou het op basis van jaartal ook prima zijn. Ik heb het volgende geprobeerd, maar dat werkte niet:

Criteria: year=2009
Maar dan krijg ik de volgende foutmelding: Data type mismatch in criteria expression.

Ik ben nog steeds een leek op het gebied van Access, dus ik zal wel weer een stomme fout maken haha.
 
Kun je de code van de query hier neerzetten? Die kun je kopieren als je in het ontwerp van de query bent, en dan <Beeld>, <SQL> kiest. De tekst begint met Select, en dan volgt er een voor leken vrij onbegrijpelijke tekst ;)
Ik kan er dan hopelijk wat meer chocola van maken, want je moet op zich wel binnen een datumreeks kunnen filteren. Ik gebruik er zelf een vrij ingewikkelde, maar bulletproof oplossing voor, die voor jou hopelijk niet nodig is...

Michel
 
Hee Michel,

Allereerst, heel fijn dat je me probeert te helpen!!!

Dit is de SQL gebaseerd op een query waarmee je per 2 datum kan zoeken:
SELECT tblResultaten.Behandelaar, Count(tblResultaten.[Datum 1]) AS [AantalVanDatum 1]
FROM tblResultaten
GROUP BY tblResultaten.Behandelaar
HAVING (((Count(tblResultaten.[Datum 1])) Between [Forms]![frmaantalgesprekken].[qbegin1] And [Forms]![frmmainquery].[qeind1]));

Dit is de SQL gebaseerd op een query die zoekt met jaartallen
SELECT tblResultaten.Behandelaar, Count(tblResultaten.[Datum 1]) AS [AantalVanDatum 1]
FROM tblResultaten
GROUP BY tblResultaten.Behandelaar
HAVING (("year"=2009));

Alvast bedankt voor de te nemen moeite!

Mvg,
Tim
 
Hee Michel,

Ben je er nog achter gekomen waar de fout zit in mijn query of heb je er nog geen tijd voor gehad?

Iemand anders die het antwoord misschien weet?

Ik hoor het wel!

Mvg,
Tim
 
Druk, druk druk druk.... :mad:

Probeer dit eens voor Query 2:

SELECT Behandelaar, Count([Datum 1]) AS [AantalVanDatum 1], Year([Datum 1]) AS Jaar
FROM tblResultaten
GROUP BY tblResultaten.Behandelaar
HAVING (Year([Datum 1])=2009);

Query 1 komt van een formulier af, en dat betekent helaas een paar vervelende aanpassingen, omdat je nu te maken krijgt met een amerikaans-nederlandse datumconversie waarbij 4-6-2009 bijvoorbeeld 6-4-2009 wordt. Om dat op te lossen, is het eigenlijk nodig om de datum uit het formulier te vertalen naar een getal, en in de query het getal terug te vertalen naar een datum. (als je het nog kunt volgen...)

Voer je de eerste query uit met een knop, of kijkt de query standaard naar de velden uit het formulier?

Michel
 
Beste Michel,

Haha ik weet wat je bedoelt, ik ben ook druk bezig met allerlei dingen af te ronden, maar de stapel werk om mijn bureau wordt toch steeds groter...

Ik heb jouw SQL-code geprobeerd, maar helaas werkt die niet. Ik krijg namelijk de volgende foutmelding als ik de query probeer uit te voeren:
U probeert een query uit te voeren waarbij de opgegeven expressie <naam> geen deel uitmaakt van een statistische functie. (Fout 3122)
U hebt geprobeerd een query uit te voeren waarbij de opgegeven expressie geen deel uitmaakt van een statistische functie of groepering.

Mogelijke oorzaak:
U hebt geen statistische functie opgegeven in de instructie TRANSFORM.


Ik heb geen idee wat ze met die foutmelding bedoelen.

Als een van de twee queries werkt ben ik helemaal geholpen, dus je hoeft geen moeite te stoppen in een query die te ingewikkeld is (sorry als ik daar niet duidelijk over was).

Ik begrijp niet helemaal wat je bedoelt met je vraag, maar het zou als volgt moeten werken: in het formulier worden twee datums ingevuld (begin datum en eind datum), via de knop 'zoeken' worden vervolgens het aantal gesprekken dat hebben plaatsgevonden binnen de twee datums weergegeven in een rapport. De datums die worden ingevuld in het formulier worden automatisch door de query overgenomen. ( ik denk dus dat de query standaard kijkt naar de velden uit het formulier, maar ik weet dat niet zeker)

Zou het helpen als ik de database online zou zetten? ik moet dan wel alle gegevens uit de database verwijderen in verband met gevoelige informatie. Het liefst zou ik het dan naar je email sturen, of heb je daar bezwaar tegen?

Ik hoor het wel!

Mvg,
Tim
 
Ik denk dat-ie zo moet zijn....

SELECT Behandelaar, Year([Datum]) AS Jaar, Count([Behandelaar]) AS Aantal
FROM tblResultaten
GROUP BY [Behandelaar], Year([Datum])
HAVING (Year([Datum])=Year(Date()));

Ik vergeet altijd wel een group by :(

Michel
 
Als je een voorbeeld db kunt neerzetten, als deze variant ook niet helemaal het je van het is, dan scheelt dat wel...

Michel
 
Hee Michel,

Ik heb het net even uitgeprobeerd, hij berekent wel iets, maar niet de juiste getallen. De uitkomsten zijn namelijk veel te hoog.

Ik zal proberen de database hier neer te zetten, dat kan pas vanavond, want ik heb hier op mijn werkplek geen winzip of winrar. Het downloaden van deze programma's wordt helaas ook geweigerd door de server..

Mvg,
Tim
 
Zoals beloofd, hierbij de database. Ik heb alle overbodige informatie en buttons eruit gehaald.

Nog wat extra info:
- naam vd query: qryaantalgesprekken
- naam vh form waar resultaten worden ingevoerd: frmresultaten

Als je de query runt met Behandelaar op Group by en Datum1 op Aantal komen de juiste resultaten te voor schijn, doordat sinds 2009 'datum 1' pas wordt ingevoerd door de medewerkers in frmResultaten. Maar als ik in de toekomst het aantal gesprekken in 2010 zou willen volgen dan lukt dat niet met deze query omdat hij ook de gegevens uit 2009 meeneemt..

De query zoals die er nu staat is overigens zoals jij hem had doorgegeven.

Ik hoop dat je er een beetje wijs uit komt, anders hoor ik het graag!

Mvg,
Tim
 

Bijlagen

Ga er naar kijken!

Michel
 
Hoi Tim,

Ik heb een beetje zitten rommelen met de database, en heb denk ik wel een oplossing voorr je probleem.
Stap 1 was overigens het 'opschonen' van de brontabel, want het lijkt mij, dat je geen proces in werking stelt als er geen [Datum Inkomend] is genoteerd. Ik heb die kolom dus aangevuld met de eerste datum uit Datum 1- Datum 4].
Voor een goed overzicht per afspraakdatum, heb je eigenlijk een kruistabel nodig, waar je dan per medewerker alle afspraken telt.
Omdat de db daar niet op is ingericht, moet je met een omweg je gegevens ordenen, zodat je dus een kruistabel kunt maken. Dat heb ik opgelost door 4 aparte queries te maken, [qryaantalgesprekken 1] - [qryaantalgesprekken 4]. Vervolgens worden deze 4 queries samengevoegd tot één tabel, met een Union query [qryAantalGesprekken]
De laatste stap is dan een kruistabel maken, op basis van de query [qryAantalGesprekken]. Deze query heet [qAantal Gesprekken Tototaal].

Voor presentatiedoeleinden kun je dan mooie rapporten maken, waarbij je dan bijvoorbeeld per jaar of per medewerker een overzicht kunt maken en afdrukken.

Met een beetje mazzel is dit wat je bedoelt?

Michel
 

Bijlagen

Hee Michel,

Nogmaals bedankt:thumb:

Ik kan helaas van mijn werkplek geen bestanden downloaden, dus ik zal er vanavond als ik thuis ben gelijk even naar kijken!

Mvg,
Tim
 
Hee Michel,

Ik heb er net even naar gekeken en het ziet er super uit!:)
Nu maar hopen dat ik dit na kan maken. Heb op mn werk alleen access 2000, zou dat een probleem op kunnen leveren?

Ben nu de database naar access 2000 aan het omzetten, dan zet ik het op een stickie en dan morgen uitproberen of die het op mn werk ook doet.

Ik laat het je wel weten of het gelukt is of niet.

Mvg,
Tim
 
Alle code die er in zit werkt ook prima in 2000, want dat is in wezen nog steeds de versie die ik zelf ook gebruik om in te ontwikkelen. Mag dus geen probleem zijn!

Michel
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan