[Opgelost]Leeftijd berekenen in Query's

Bespreek het databaseprogramma
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

[Opgelost]Leeftijd berekenen in Query's

Bericht door Kevercat »

Ik ben ca. 4 weken geleden overgestapt van windows naar een MacBook Air. De consequentie was dat ik Access niet meer kon gebruiken. Over het algemeen had ik Access in gebruik voor simpele databases maar er zaten toch ook wel leuke dingen in de Query's verstopt. In de Access Query kon ik de leeftijd berekenen aan de hand van de geboortedatum door gewoon ik een kolom de volgende formule te gebruiken :
Leeftijd: DateDiff("yyyy";[Geb datum];Now()+Int(Format(Now();"mmdd")<Format([Geb datum];"mmdd")))

Weet iemand hoe ik dit moet oplossen in OpenOffice? (Het liefst zonder gebruik te maken van SQL, daar heb ik absoluut geen verstand van.)

Al vast bedankt voor jullie hulp.

Groetjes
Kees Verhagen
Laatst gewijzigd door Kevercat op wo apr 06, 2016 10:27 am, 1 keer totaal gewijzigd.
Openoffice 4.1.1 met MacBook Air 13 El Capitan
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo

Gezien het feit dat je dit vraagt op het Base-forum lijkt mij het gebruik van SQL te verwachten.

Ik zelf weet het antwoord niet maar een zoekactie op het Engelse forum gaf snel het antwoord.

https://forum.openoffice.org/en/forum/v ... ilit=years
Er staat een volledige formule waarbij je alleen de veldnamen nog moet veranderen.Sliderule geeft daar in het begin reeds de formule. Later zie je mooie verklaringen. Het is belangrijk om op het Engelse forum te kijken speciaal in de tutorial sectie daar. Het is beter om niet met een embedded database te werken zie links onder in je window.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

RPG schreef:Hallo

Gezien het feit dat je dit vraagt op het Base-forum lijkt mij het gebruik van SQL te verwachten.

Romke
Dat is waarschijnlijk het verschil in interpretatie, ik heb een vraag over de database functie in OpenOffice en verwacht dat ik deze vraag dan in het Base-forum moet plaatsen, mocht dit niet de bedoeling zijn dan spijt mij dat.

De reden dat ik een Nederlandse forum bezoek voor mijn vragen is dat ik beter met Nederlands overweg kan dan met Engels. (Door het technische Engels snap ik er meestal niet veel van).

Ik ben wel blij met je antwoord en ga morgen de code gelijk uitproberen, ik ga er tenminste van uit dat deze code ook werkt in de NL versie (daar was in Access een verschil in). Ik heb nu nachtdienst en heb mijn Macboek niet bij me.

Bedankt

Groetjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo
Kevercat schreef:Dat is waarschijnlijk het verschil in interpretatie, ik heb een vraag over de database functie in OpenOffice en verwacht dat ik deze vraag dan in het Base-forum moet plaatsen, mocht dit niet de bedoeling zijn dan spijt mij dat.
Laten we het een en ander voorzichtig op elkaar afstemmen. Sommige mensen die hier een vraag stellen kunnen vaak ook goed Engels. Dan is het lezen van een goed antwoord soms het beste. Zo nodig kunnen goede Engelse antwoorden hier verduidelijkt worden. Er komt ook bij dat we vaak bedreven zijn in het snel vinden van goede antwoorden.

SQL
Als je echt een database gebruikt dan is SQL bijna ook het enige mogelijke om een goed antwoord te vinden.

Taal
Ik denk dat alles wat met SQL te maken heeft niet vertaald wordt. Over andere zaken is het moeilijk om een algemene uitspraak te doen.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

RPG schreef: Laten we het een en ander voorzichtig op elkaar afstemmen. Sommige mensen die hier een vraag stellen kunnen vaak ook goed Engels. Dan is het lezen van een goed antwoord soms het beste. Zo nodig kunnen goede Engelse antwoorden hier verduidelijkt worden. Er komt ook bij dat we vaak bedreven zijn in het snel vinden van goede antwoorden.
Helder.
RPG schreef: SQL
Als je echt een database gebruikt dan is SQL bijna ook het enige mogelijke om een goed antwoord te vinden.
Ik heb jarenlang alleen met Access gewerkt en daar was kennis over SQL overbodig, je maakte een bereking gewoon in een kolom van de Query en het totale bestand noemde men toen een database. Ik probeer nu een nieuwe database op te bouwen en als het zonder SQL kan dan is het leuk. Als ik alleen maar met SQL kan dan ben ik de pineut en hoop ik dat mij dit dan duidelijk uitgelegd kan worden hoe te handelen. Ik denk dus dat die code op het engelse forum dus ook SQL zal zijn dan hoop ik dat ik kan uitvogelen hoe te handelen.

Tot zover bedankt voor je hulp.

Groetjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

RPG schreef: https://forum.openoffice.org/en/forum/v ... ilit=years
Er staat een volledige formule waarbij je alleen de veldnamen nog moet veranderen.Sliderule geeft daar in het begin reeds de formule. Later zie je mooie verklaringen. Het is belangrijk om op het Engelse forum te kijken speciaal in de tutorial sectie daar. Het is beter om niet met een embedded database te werken zie links onder in je window.

Romke
Ik heb nu die formule gebruikt en aangepast aan de veldnamen die ik gebruik maar het lijkt niet te werken. In het SQL venster ziet het er zo uit:

Code: Selecteer alles

SELECT "Bar", "Lidnummer", "Lid sinds", "Voornaam", "Voorletter", "Tussenvoeg", "Achternaam", "Geb.datum", YEAR( CURRENT_DATE ) - YEAR( "Geb.datum" ) - CASEWHEN( MONTH( CURRENT_DATE ) * 100 + DAYOFMONTH( CURRENT_DATE ) >= MONTH( "Geb.datum" ) * 100 + DAYOFMONTH( "Geb.datum" ), 0, 1 ) AS "Leeftijd", "Partner?", "Partnernaa", "Corvee", "Donateur", "Voorn.Part", "Voorl.Part", "TussenvoeP", "Achtern.Pa", "Geb.d.Part", DATEDIFF( 'dd', "Geb.d.Part", CURRENT_DATE ) / 365 AS "Leeftijd Partner", "Adres", "Postcode", "Woonplaats", "Telefoon", "Mobiel", "Mobiel Par", "E-mail", "E-mail Par" FROM "Leden" AS "Leden"
Voor de leeftijd Partner heb ik een andere formule gebruikt maar die werkt ook niet. Iemand enig idee wat er fout gaat?

Groepjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo

Het lijkt mij dat de opgegeven query perfect werkt in een HSQLDB database in ieder geval de versie HSQLDB 1.8.10. Het kan zijn dat je een andere database gebruikt. Zie hier voor links onder in het openings scherm van je databasedocument. Het is zo dat iedere data engine, Access of HSQLDB, zijn eigen formules heeft. De formules groeien wel steeds meer naar elkaar toe.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

Tja, dat heb ik dan weer... Ik heb de database in NeoOffice nieuw gemaakt, gewoon standaard zoals deze opent de tabel opgebouwd, daarna een query gemaakt en in OpenOffice met de wizard een formulier gemaakt. Ik weet niet hoe je kan zien wat voor soort engine hij gebruikt maar in de linker beneden hoek van het venster staat (uit mijn hoofd gezegd) Dbase.

Als dit niet goed is, wat ik nu eigelijk aanneemt gezien het antwoord dat het in een HSQLDB database wel zou moeten werken, kan ik mijn database nog omzetten naar een HSQLDB database en hoe moet ik dat dan aanpakken of moet ik gewoon weer opnieuw beginnen en kijken of ik die HSQLDB database of engine kan selecteren?

Een hoop vragen weer maar ik wil het toch een keer laten lukken.

Al vast weer heel erg bedankt voor alle hulp.

Groetjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
eremmel
Berichten: 670
Lid geworden op: di sep 01, 2009 10:11 am
Locatie: Barneveld, Nederland

Re: Leeftijd berekenen in Query's

Bericht door eremmel »

Het is goedom te weten wat er onderaan je scherm staat.

Probeer een query met alleen leeftijd om te testen. Werkt de functie year(), of andere onderdelen? Gewoon verdeel en heers! We kunnen je dan vast verder helpen.
W11 21H2 (build 22000), LO 7.4.1.2(x64)
Het is Microsoft marketing die laat geloven dat computers geschikt zijn voor niet technici
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

eremmel schreef:Het is goedom te weten wat er onderaan je scherm staat.
Onderaan mijn scherm staat links inderdaad "dBase" en daarnaast"/users/kever/libary/Containers/org.neooffice.NeoOfficeSecureEdition/Data/Ducuments/HLB Leden/". Als je daar iets aan hebt tenminste :?

Ook de query met alleen de geboortedatum en de code voor de leeftijd levert een lege kolom.

Code: Selecteer alles

SELECT "Geb.datum", YEAR( CURRENT_DATE ) - YEAR( "Geb.datum" ) - CASEWHEN( MONTH( CURRENT_DATE ) * 100 + DAYOFMONTH( CURRENT_DATE ) >= MONTH( "Geb.datum" ) * 100 + DAYOFMONTH( "Geb.datum" ), 0, 1 ) AS "Leeftijd" FROM "Leden" AS "Leden"
Ik hoef toch niet nog iets "aan" te zetten om er voor te zorgen dat de berekening wordt uitgevoerd of zo?

Groepjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo

Als er dbase onderstaat dan geeft dat geen problemen voor OpenOffice maar het is een simpele database feitelijk alleen een tabel. Je kunt in een document formulier wel verschillende dataformulieren gebruiken.

OOo 4.1.2 geeft soms problemen voor de MAC het schijnt dat je beter OOo 4.1.1 kunt gebruiken. Voor platte tabellen zijn deze functies te gebruiken.
De onderstaande wat ingewikkelde en rommelige formule werkt mogelijk in platte tabelle. Ik heb het getest in een dbase tabel.
De +0 zit er alleen in om uitkomsten te krijgen tijdens het testen.De logica is in principe het zelfde als bij Sliderule's formule.

Code: Selecteer alles

SELECT "Datum",
 YEAR( CURDATE( ) ) - YEAR( "Datum" ) + ( SIGN( SIGN( ( ( MONTH( CURDATE( ) ) * 100 ) + DAYOFMONTH( CURDATE( ) ) ) + 0 - ( ( MONTH( "Datum" ) * 100 ) + DAYOFMONTH( "Datum" ) ) + 0 ) + 1 ) ) + 0 "Leeftijd" 
FROM "Drukker"
Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Gebruikersavatar
DiGro
Berichten: 86
Lid geworden op: wo mei 13, 2009 4:57 pm
Locatie: Hoorn NH

Re: Leeftijd berekenen in Query's

Bericht door DiGro »

Kees,

ik weet niet of dit helpt, maar ik heb de query voor het gedeelte van de leeftijd enigszins aangepast en die werkt nu in AOO 4.1.2 bij mij in een HSQLDB-database (Ingebedde database)
Ik weet niet zeker of ie het ook op een dBase doet, maar misschien een poging waard

Code: Selecteer alles

CASEWHEN(DAYOFYEAR(CURRENT_DATE) < DAYOFYEAR("Geb.datum"), DATEDIFF('YY',"Geb.datum",CURRENT_DATE) - 1, DATEDIFF('YY',"Geb.datum",CURRENT_DATE)) as "Leeftijd"
als ik die even vertaal naar lekentaal zou het iets worden van:

"" als de dag van het jaar van de huidige datum kleiner is dan de dag van het jaar van Geb.datum, trek er dan 1 af, anders is het het verschil in jaren. ""

In stukjes:

Code: Selecteer alles

CASEWHEN(DAYOFYEAR(CURRENT_DATE) < DAYOFYEAR("Geb.datum")

Code: Selecteer alles

DATEDIFF(YY,"Geb.datum",CURRENT_DATE) - 1,
= het verschil in jaren min 1

Code: Selecteer alles

DATEDIFF(YY,"Geb.datum",CURRENT_DATE)
= het verschil in jaren

Code: Selecteer alles

AS 'Leeftijd"
= aliasnaam voor nieuwe kolom

dat zou jouw query als volgt moeten maken:

Code: Selecteer alles

SELECT "Bar", "Lidnummer", "Lid sinds", "Voornaam", "Voorletter", "Tussenvoeg", "Achternaam", "Geb.datum", CASEWHEN(DAYOFYEAR(CURRENT_DATE) < DAYOFYEAR("Geb.datum"), DATEDIFF('YY',"Geb.datum",CURRENT_DATE) - 1, DATEDIFF('YY',"Geb.datum",CURRENT_DATE)) AS "Leeftijd", "Partner?", "Partnernaa", "Corvee", "Donateur", "Voorn.Part", "Voorl.Part", "TussenvoeP", "Achtern.Pa", "Geb.d.Part", DATEDIFF( 'dd', "Geb.d.Part", CURRENT_DATE ) / 365 AS "Leeftijd Partner", "Adres", "Postcode", "Woonplaats", "Telefoon", "Mobiel", "Mobiel Par", "E-mail", "E-mail Par" FROM "Leden" AS "Leden"
Laatst gewijzigd door DiGro op zo apr 03, 2016 4:53 pm, 2 keer totaal gewijzigd.
DiGro

----------------------------------------------------
Windows 11 en AOO 4.1.15
Gescand door Ziggo Safe Online (F-Secure)
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo

Ik denk dat Kees met dbase werkt en dan werkt die aangepaste versie met case when niet voor zover ik weet. In de versie die ik hier voor geplaatst heb werken de formules wel maar ik geloof dat ik nog steeds een logische fout heb van een jaar. Dat werk me na posten pas duidelijk.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Gebruikersavatar
DiGro
Berichten: 86
Lid geworden op: wo mei 13, 2009 4:57 pm
Locatie: Hoorn NH

Re: Leeftijd berekenen in Query's

Bericht door DiGro »

OK Romke, thanks.

het lijkt er volgens op alsof er een IF ontbreekt om het verschil aan te duiden als de verjaardag vóór of na de huidige dag ligt.
Dat zou waarschijnlijk ook jouw verschil van 1 verklaren ?
DiGro

----------------------------------------------------
Windows 11 en AOO 4.1.15
Gescand door Ziggo Safe Online (F-Secure)
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo

Ik krijg het idee dat het niet of anders zeer moeilijk voor elkaar te krijgen is met de functies voor een platte database. Wanneer de zelfde gegevens in een spreadsheet getrokken worden dan is het niet moeilijk.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

Volgens mij heb ik nog veel meer problemen:

De database moet ik nog vrijwel helemaal opbouwen dus ik dacht dan begin ik gewoon weer opnieuw maar dat lijkt nog niet zo simpel, hier zat ik het begin ook al mee: Een nieuwe database maken wordt in NeoOffice een dBase, in OpenOffice wordt het wel een HSQLDB database maar dan heb ik het volgende probleem, ik kan geen tabel maken omdat de ontwerp weergave niet wordt geopend, het zelfde geldt ook voor de query ontwerp weergave.
In LibreOffice een nieuwe database maken strand al in het tweede scherm, daar moet een pad naar de dBase-bestanden ingegeven worden, geen idee wat ik daarmee moet.
Ik had nog een optie om in OpenOffice een database te maken en op te slaan en dan in NeoOffice de tabel en query te maken maar dan krijg ik de fout melding dat de database stuurprogramma kan niet worden geladen, omdat het vereiste externe software die is geindentificeerd als een veiligheidsrisico.
Natuurlijk ook even met LibreOffice geprobeerd maar dan wordt fout melding als volgt: De verbinding met de externe gegevensbron kon niet tot stand worden gebracht. Er werd geen SDBC stuurprogramma gevonden voor de url 'sdbc:embedded:hsqldb'.

Alle Officepakketten heb ik geïnstalleerd op een kale Macbook Air 13 met El Capitain. Ik ga er van uit dat ik iets fout doet omdat ik pas heel kortgeleden overgestapt ben naar de MacBook.

Ik wil dus best (begeleid) opnieuw beginnen want op deze manier ga ik er niet komen denk ik. En ik wil echt niet terug naar een Windowsbak. Alle hulp is dus welkom.

Al vast bedankt voor alle geduld en hulp van jullie.

Groepjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: Leeftijd berekenen in Query's

Bericht door RPG »

Hallo

Ik denk dat je het best kunt werken met
a) Libre Office stable
b) OpenOffice 4.1.1 versie 4.1.2 geeft problemen op de MAC

Wat je precies moet gaan gebruiken als engine is voor ons niet zo duidelijk. Het is afhankelijk van welk doel je database moet hebben.

Voor simpele tabellen kan een spreadsheet of dbase. Iets moeilijker dan komt de HSQLDB in aanmerking.

Nog moeilijker lijkt mij niet raadzaam want dan moet je eerst echt gaan studeren. Enige studie is zowiezo om iets van resultaat te bereiken.

In het forum tutorials staan verschillende zaken die je kunnen helpen. Ook wordt daar naar hulp middelen verwezen. De tabel die je reeds hebt kun je waarschijnlijk in alle drie gebruiken. Zoek eerst de map op en verwijs dan het database document naar die map.

Neem eerst rustig de tijd om iets op je te laten in werken. Lees misschien ook eerst wat er al reeds staat in de verschillende bijdragen. Leer zoeken op het forum en niet met behulp van google of zoiets.

Dit is misschien behulpzaam.

Romke
LibreOffice 7.4.3.2 op openSUSE Leap 15.4
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

RPG schreef: b) OpenOffice 4.1.1 versie 4.1.2 geeft problemen op de MAC
Romke
Oké, dit maakt het al weer wat duidelijker, de OpenOffice 4.1.1. wordt nu gedownload en versie 4.1.2. is nu van de macbook af.

Ik denk dat ik dus de HSQLDB moet gebruiken, zeker als ik wat "reken" velden wil hebben, in het geheel zal het niet zo'n complexe database worden.

Ik hoop dat het met de nieuwe (oudere) versie beter zal gaan.

Groepjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
Kevercat
Berichten: 9
Lid geworden op: vr apr 01, 2016 10:20 pm

Re: Leeftijd berekenen in Query's

Bericht door Kevercat »

Ik heb nu versie 4.1.1 van OpenOffice werkend en nu werkt alles :D . Ook werkt nu de berekening van de leeftijd :super:
Ben nu blij waar het aan lag, het heeft een hoop tijd gekost maar het gaat nu vooruit.

Allemaal heel erg bedankt voor de inout en de hulp, zonder jullie was ik er waarschijnlijk niet achter gekomen wat er nu eigelijk fout was.

Bedankt!!

Groepjes
Kees Verhagen
Openoffice 4.1.1 met MacBook Air 13 El Capitan
Plaats reactie