Record selecteren adhv meerdere velden

Status
Niet open voor verdere reacties.

Peetbeest

Gebruiker
Lid geworden
1 mei 2013
Berichten
44
Beste forumleden,
In eerste instantie had ik een formulier gemaakt waarop je een geboortedatum kon ingeven. Door op een knop te drukken werd er een tweede formulier geopend. Dit tweede formulier was gebaseerd op een Query waarvan de criteria werden opgezocht in het eerste formulier. Op het tweede formulier staan enkele velden die berekend worden in de Query en knoppen om formulieren en rapporten te openen die bij deze datum horen. Dit werkt zoals het hoort.
Omdat je steeds moet terugkeren naar het eerste formulier als je een volgende geboortedatum wil ingeven lijkt het me interessanter om deze twee formulieren samen te voegen. Het lukt me echter niet om het aan de praat te krijgen. Ik heb de Query geïntegreerd in het formulier en als ik de criteria opgeef, die gebaseerd zijn op hetzelfde formulier, krijg ik een wit scherm. Ik heb geprobeerd het juiste record op te halen met 3 opzoekvelden (Geboortedag, Geboortemaand, Geboortejaar) maar hier kan ik slechts zoeken op één veld, niet op alledrie. Ik ben twee dagen naar oplossingen gezocht en vanalles uitgeprobeerd, zonder resultaat. Ik vermoed dat dit enkel op te lossen is met VBA, dit gaat echter m'n petje te boven daar ik hier nog niet veel kaas heb gegeten van VBA. Kan iemand me helpen of op weg zetten, het betreffende formulier voeg ik toe. Alvast bedankt.
 

Bijlagen

Het blijft een beetje stil rond je vraag; wil je dat er wat sneller naar gekeken wordt dan moet je er even een 2003 db van maken. Zelf kan ik er anders pas vanavond naar kijken.
 
Bedankt voor de reactie Michel. Je hebt me al enkele keren goed geholpen en zou het op prijs stellen als je dat nu weer zou doen. Ik vind het niet erg om effe te wachten. Toch voeg ik een 2003 db toe, op die manier is het ook toegankelijker voor anderen als er een oplossing volgt. Alvast hartelijk bedankt Michel.
 

Bijlagen

En wat is nu de bedoeling? Want ik heb het gevoel dat de 2003 variant wat objecten mist (macro1 bijvoorbeeld, en de rapporten). Bovendien zie ik 3 niet-gekoppelde tabellen, en dat levert een enorm Cartesisch Product op.
 
Inderdaad Michel. Macro1 mag eigenlijk verwijderd worden, deze ben ik vergeten te verwijderen. Dat was iets wat ik heb geprobeerd om het formulier aan de praat te krijgen. De rapporten heb ik niet in de db ingevoegd omdat het zeer grote bestanden (de gegevens in de rapporten zijn zeer uitgebreid) zijn.
Inderdaad heb ik 3 niet gekoppelde tabellen. De bedoeling van deze tabellen is eigenlijk om ze te gebruiken als opzoekveld. Het werkt op deze manier en daarom heb ik ze ook niet gekoppeld. Als ik ze zou koppelen heb ik 2 extra tabellen nodig omdat het om veel-op-veel-relaties gaat. (één dag komt in meerdere maanden voor en één maand heeft meerdere dagen, hetzelfde voor de eventuele koppeling maanden-Jaren).
Wat is nu de bedoeling?
Het formulier is gebaseerd op een Query:
Code:
SELECT Geboortedag.[Dag Id], Geboortedag.Dag, Geboortedag.[Dag Waarde], Geboortemaand.[Maand Id], Geboortemaand.Maand, Geboortemaand.[Maand Waarde], Geboortejaar.[Jaar Id], Geboortejaar.Jaar, Geboortejaar.[Jaar Waarde], [Dag Waarde]+[Maand Waarde]+[Jaar Waarde] AS Totaal, IIf(CInt(Left(Right([Totaal],2),1))+CInt(Right(Right([Totaal],2),1))>12,CInt(Left(CInt(Left(Right([Totaal],2),1))+CInt(Right(Right([Totaal],2),1)),1))+CInt(Right(CInt(Left(Right([Totaal],2),1))+CInt(Right(Right([Totaal],2),1)),1)),CInt(Left(Right([Totaal],2),1))+CInt(Right(Right([Totaal],2),1))) AS Resultaat, [Dag] & " " & [Maand] & " " & [Jaar] AS Geboortedatum, [Totaal] & "/" & [Resultaat] AS Geboortegetallen, [Dag] & " " & [Maand] AS Geboortedatum1 FROM Geboortedag, Geboortemaand, Geboortejaar;
Het resultaat geeft alle geboortedagen vanaf 1 januari 1930 tem 31 december 1940. (41292 records)
Nu wil ik, door in 3 velden in het formulier (Geboortedag, Geboortemaand en Geboortejaar) de geboortedatum in te geven, dat er 1 record wordt geselecteerd, de aangegeven geboortedatum).
Achteraf worden andere formulieren en rapporten aangemaakt door de gegevens op te zoeken in verschillende tabellen, dit op basis van de gegevens die berekend werden in dit formulier.

In onderstaande db heb ik het terug gemaakt zoals ik het eerst had. Je kan een geboortedatum invoeren in het formulier Geboortedatum Ingeven. Door dan op de knop Geboortegetallen Berekenen te drukken wordt het formulier Geboortedatum-Geboortegetallen1 geopend met de juiste gegevens. In het formulier Geboortedatum-Geboortegetallen zou ik de voorgaande formulieren willen samenvoegen zodat ik niet steeds naar het eerste formulier hoef te gaan als ik een nieuwe geboortedatum wil ingeven.

Ik hoop dat het nu duidelijker is. Alvast bedankt om het te bekijken Michel.
 

Bijlagen

Ik snap je constructie wel, maar hij is veel en veel te ingewikkeld. Als je één datumveld gebruikt, dan kun je op basis daarvan de rest uitrekenen. Een voorbeeldje:
Code:
Maandwaarde: IIf(Month([Datum]) Mod 9=0;9;Month([Datum]) Mod 9)
i.p.v. het veld Maandwaarde.
En als je de gebruiker een datum laat kiezen met de Datumpicker, dan heb je geen enkele tabel nodig.
 
Dit is een hele andere manier van benaderen maar ik ga er me morgen mee bezighouden, ik moet dadelijk naar de les. Ik ben wel al op een probleempje gestoten. De waarden werden berekend, ik heb dit zelf gedaan en de gegevens in de kolom Waarden gezet. Met jouw manier van benaderen, Michel, moeten de waarden iedere keer worden berekend. Geen probleem voor mij, tenminste als ik er uitkom hoe ik dit in een code moet zetten. Met de Code die jij hebt gemaakt, michel, komt het resultaat overeen met de waarden die ik had berekend. Dit is echter niet het geval bij de dagen en de jaren. Deze werden berekend door de afzonderlijke cijfers op te tellen (Dag Waarden: 27=2+7=9, Jaar Waarden: 1987=1+9+8+7=25). Als je me hierbij kan helpen denk ik wel dat ik er morgen uitgeraak. Alvast bedank Michel.
 
Ik heb maar één berekening laten zien voor het idee,maar de rest kun je denk ik zelf wel bedenken. Het idee van een database is dat je berekende velden niet in een tabel opslaat. En dat is nu precies wat jij wèl doet. Kortom: niet doen. Scheelt ook nog eens een hoop werk....
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan