19 - 01 - 2025
Main Menu
Who's online

We have 54 guests and no members online

Latest articles
Visitors
30355941
Today
Yesterday
This Week
This Month
Last Month
All days
6961
9262
51050
160832
288049
30355941

Old stories

New family schema in AgetoAgeSqlite

User Rating:  / 1

AgetoAgeSqlite will soon get a new more advanced family schema.

AgetoAgeSqlite vil snart få et nytt mere avansert familieskjema der man kan redigere SQL spørringen for barn selv og definere så mange kolonner med opplysninger som man vil. Man kan ordne kolonnene som man vil bortsett fra at PID feltet må være med, men det kan ligge i en hvilken som helst kolonne. Alle tekniske utfordringer med å la brukeren velge layout er løst.

 

03-04-2013 - Da er AgetoAgeSqlite (x86) oppdatert med nytt familieskjema der man kan redigere SQL setningen som blir brukt. Når man dobbelklikker en famile vil familieskjemaet undersøke om det finnes en spørring for FShema* som heter "Standard" og hvis denne ikke finnes får man beskjed om dette og man får beskjed om å klikke OK i neste vindu som kommer opp og dette vinduet er SQL Command Builder. Her vil det være en standard SQL spørring og det eneste man trenger å gjøre er å klikke OK. Så vil denne standard spørringen bli lagret og neste gang man dobbelklikker en famile vil familiskjemaet sprette opp med en gang. Senere kan man redigere spørringen med å høyreklikke i barne listen og velge "Setup" og man kan klikke "Test SQL and set actions" for å sette f.eks standard kolonnebredder. Selve spørringen kan man lage som man vil men "WHERE fatherID = @pid1 AND motherID = @pid2 ORDER BY ChildNum" bør man ikke endre. Det viktigste her er nok å velge "felt" eller de kolonner man vil vise. Her er et eksempel:

SELECT Firstname || ' ' || Lastname AS Navn, Birthdate AS Født, Birthplace AS Sted, deathdate AS Død, Occupation AS Yrke, registerdate AS Reg, PID AS ID, CASE WHEN Sex=7 THEN 'Male' ELSE 'Female' END AS Kjønn FROM ata_persons WHERE fatherID = @pid1 AND motheriD = @pid2 ORDER BY childnum

 

04-04-2013 - VIKTIG! Vennligst vent med å oppdatere. Jeg glemte et par detaljer....men dette tar ikke lang tid, en eller to dager...

05-04-2013 - Okay da er detaljene fikset og i tillegg har jeg føyd til at Standard spørring for barn i familieskjemaet blir laget ved opprettelse av ny database. Hvis man åpner en gammel database og prøver å åpne familieskjemaet blir det som før... en dialog boks kommer opp og man bare klikker OK i neste vindu for å lage en standard spørring.

Den nye versjonen er klar for nedlasting!

Dette nye med å definere sql spørringene (SQL = Select Query Language) gir en artig bieffekt i familie vinduet, da forhåndsvisnings vinduet for utskrift kan programmeres for å benytte den spørringen som er definert for å vise informasjon for personer hvilket jeg allerede er i gang med. Dette kan utvides ytterligere slik at man kan definere egne spørringer som benyttes for utskrift.

Man kan også utvide funksjonaliteten i familiskjemaet med å skrive spørringene på en måte som gir mer informasjon om personer som ikke er med på skjemaet. For eksempel vil man gjerne se om barna har barn da kan man opprette en kolonne som defineres f.eks som:

 

CASE WHEN pid in(select fatherid from ata_persons where pid = pid) OR pid in(select motherid from ata_persons where pid = pid) THEN 'Ja' ELSE 'Nei' END AS 'Har barn'

Database motoren som er programmert av SQLite temaet håndterer dette lynraskt og jeg merker ingen forsinkelse om jeg har med denne kolonnen. Her er den fullstendige spørringen jeg lagde for dette:

SELECT Firstname || ' ' || Lastname AS Navn, Birthdate AS Født, Birthplace AS Sted, deathdate AS Død, Occupation AS Yrke, registerdate AS Reg, PID AS ID, CASE WHEN Sex=7 THEN 'Mann' ELSE 'Dame' END AS Kjønn, CASE WHEN pid in(select fatherid from ata_persons where pid = pid) OR pid in(select motherid from ata_persons where pid = pid) THEN 'JA' ELSE 'NEI' END AS 'Har barn' FROM ata_persons WHERE fatherID = @pid1 AND motheriD = @pid2 ORDER BY childnum

Bmk.

Se på delen WHERE pid = pid her ble jeg imponert av programmererne av SQLite database motoren, WHERE pid = pid kan jo virke meningsløst men her er det faktisk snakk om to forskjellige pid'er som blir sammenlignet og hvis verdien er den samme for begge to er utrykket SANT.

Så skal vi se litt på kommandoen NATURAL JOIN som kan brukes i de tilfeller man har to eller flere tabeller som har et felles felt (samme navn og type) f.eks feltet ID av type integer er i alle tabellene man vil slå sammen. Dette er kanskje ikke så interessant for AgetoAge men det belyser hva man må tenke på når man bruker en JOIN. Bruker man NATURAL JOIN på to tabeller som ikke har et felles felt (samme navn og type) vil radene man får returnert være meningsløse det blir som å helle ingredienser av mange slag i en bolle og røre rundt. Men finner NATURAL JOIN kommandoen et felles navn på et felt i tabellene kan denne kommandoen gi et meningsfylt sett av rader som returneres. Bruker man bare JOIN må man skrive forutsettningen for at radene kan slås sammen. F.eks ON tabellA.ID = tabellB.ID eller WHERE tabellA.ID = tabellB.ID. Med NATURAL JOIN trenger man ikke skrive forutsettninger men altså farlig å bruke hvis tabellene ikke har et felles felt. Men det kan likevel bli feil hvis man NATURAL JOIN'er to eller flere tabeller som har et felles felt navn der navnet har forskjellig betydning. ID er f.eks et farlig navn å bruke fordi ID kan ha mange forskjellige betydninger. I de tilfeller må man sjekke om ID betyr det samme i begge tabeller. Så det er nok best å ikke bruke NATURAL JOIN hvis man er litt usikker. Men da må man huske på å definere betingelsene. (WHERE eller ON)

Jeg har nå oppdatert utskrift knappen slik at de første 6 kolonner fra SQL spørringen man har definert vil bli vist ved utskrift.

previewfamily

 

09-04-2013 - Funnet noen småfeil som er blitt rettet. Oppdateringen er lastet opp

13-04-2013 - Lastet opp ny versjon med mulighet for å redigere tekstene på utskriften. Bare å skrive ønsket value (tekst) direkte inn i listen og flytte fokus til en annen rad for at det skal bli lagret.

famschemaprintsettings

 

 

 

Forbedret utskrift

User Rating:  / 1

Lastet opp ny versjon med forbedret utskrift fra familieskjemaet + eget dialogvindu for å angi settings.

fampreview2

Lastet opp ny versjon der også kommentarer blir skrevet ut hvis dette er valgt i "Settings".

 

fampreview3

16-04-2013 - Lastet opp ny versjon der jeg har fått lagd en bedre prosedyre for utskrift. Denne metoden har jeg også implementert i Slektsbok funksjonen som tidligere kunne ha litt småfeil ved printing av kommentarer for personer og familier.

20-04-2013 - Lastet opp ny versjon med revidert slektsbok funksjon som nå gir bortimot perfekte utskrifter (bla bla bla....vel, det kan alltids diskuteres hva som er bra og ikke bra men i hvertfall er det bedre, og jeg er fornøyd med teknikken som brukes for å skrive ut...og denne teknikken gjør det enkelt å revidere hvordan ting og tang skal skrives ut.... her er et eksempel på side nr 7 fra en slektsbok på 120 sider som ble generert på ca 30 sekunder. Slektsbokfunksjonen finnes ved f.eks å klikke View/FamilyTreeView og så høyreklikke på den familien man ønsker å sette som rotfamilie på slektsboka og velge "Create Family Book".

Bmk. I descendant vinduet er det også en funksjon som kan lage bok av etterkommere, dette er ikke den samme prosedyren som Create Family Book og den er enda ikke oppdatert med den nye teknikken men denne vil også bli oppdatert i løpet at en dag eller to.

nyslektsbok

nyslektsbok2

21-04-2013 - Lastet opp ny versjon av AgetoAgeSqlite (x86) med en ny Font og Color velger for Create Family Book. Man kan velge 3 forskjellige fonter og 5 forskjellige farver ved utskrift på printer.

nyslektsbokprop

Et lite eksempel på å sette farve på kommentarer ved utskrift på printer.

nyslektsbok4

22-04-2013 - Lastet opp ny versjon med valg for distanse mellom bilder i slektsboka. Samtidig så jeg en forglemmelse som gjorde at valg av Header farve ikke fungerte. Dette er ordnet nå.

 

 

Family Schema Print updated

User Rating:  / 1

Familieskjemaet sin print funksjon er oppdatert med forbedret bilde printing, der bildet's proporsjoner beholdes med orginal bildestørrelse, siden vil jeg nok lage en funksjon som vil resize veldig store bilder slik at det får plass på et vanlig A4 ark men intil videre får man bare resize dem selv slik at dem i hvertfall ikke er større en A4 formatet.

famviewprint

Person schema print

User Rating:  / 0

Da er også Personskjemaet sin print funksjon oppdatert. Objekt programmering er basert på slektskap kan man si, og bruk av et objekts slektsskap-egenskaper gjør det interessant og enkelt å utvide eller revidere deler av funksjonene. Jeg har definert et objekt som er etterkommer av .NET sitt object PrintDocument og mitt objekt vil skrive ut ting og tang på den måten jeg ønsker uten at jeg behøver å skrive hele koden for dette, bare den delen som jeg vil revidere, og dermed blir det oversiktelig og enkelt å holde styr på de forskjellige print funksjonene, alle print funksjoner kan ha en base kode som blir gjenbrukt. Vel, ikke alt blir perfekt med en gang, som man ser helt nederst på eksemplet under slutter siden med en bokstav som er den første i et ord der resten kommer på neste side. Dette kunne vel vært unngått men kanskje er det ikke så viktig.

personprint

Oppsummering av utskrift funksjoner i AgetoAgeSqlite (x86)

User Rating:  / 0

Oppsummering av utskrift funksjoner i AgetoAgeSqlite (x86)

  1. Slektsbok funksjon finnes på FamilyTreeView
  2. Familieskjema utskrift finnes på familieskjema
  3. Personskjema utskrift finnes på personskjema
  4. Steds detaljer med liste over fødsler, dåp og begravelse utskrift finnes på Sted (location) skjema
  5. Familiebok av etterkommere, finnes på File menyen når man har valgt Descendants i personlisten
  6. Person liste utskrift finnes i Personlist vinduet
  7. Source utskrift finnes på source skjemaet
  8. Source liste utskrift finnes i Source listevinduet
  9. Advanced SQL utskrift finnes i Advanced SQL vinduet
  10. Family list utskrift finnes i Familieliste vinduet
  11. Ancestor 3 utskrift finnes i Ancestor 3 vinduet.
  12. Slektskap utskrift finnes på Relationship (kun et skjermbilde som blir printet foreløpig)
  13. Globe utskrift finnes på Globen.
  14. Close relations (Group View) finnes i Close relations.

Valg av font, farve, etc er også oppdatert. 

Funksjonen nr 5 ble oppdatert nå i dag 28-04-2013 slik at den nå er en etterkommer funksjon av PrintDocument, samtidig har jeg rettet et par ting som kunne føre til en feilmelding i spesielle tilfeller.

Lastet opp ny versjon med betraktelig forbedret punkt 5 funksjon + noen forbedringer av koden for å laste inn fotoer.

etterkommerbok

Ny oppdatering av AgetoAgeSqlie (x86) er lastet opp. Jeg har nå funnet en rask og grei metode (dvs jeg har programmert mitt eget system for dette) for å lage tabeller for utskrift basert på SQL spørringer som betyr at brukeren kan selv definere hvordan utskriften skal være med hensyn til hvor mange kolonner og hvilke kolonner som skal være med. Pga liten tid (programmerer på fritiden) har jeg ikke fått lagt inn valg av font og om tekstene skal venstre, midt eller høyrejusteres i cellene, det er enkelt å få til men det var tiden da) og utskriften er forhåndsprogrammert til å bruke landskap utskrift (for å få best plass til kolonnene). Dette betyr i praksis at lager man f.eks 100 menyvalg for forskjellige spørringer i f.eks personlisten så vil man ha 100 ferdige oppsett for også å lage utskrifter på papir. Det må også nevnes at trenger man en enkel utskrift og ikke trenger at dette oppsettet skal lagres så kan man også bare redigere SQL setningen direkte i tekstboksen for SQL spørringen uten å lagre noe og så bare velge File/Print preview. Når man så er inne i Preview og klikker på Print ikonet vil så utskriften gå til printeren.

perslistpreview

(Bildet er forminsket for å få bedre plass her. Men tar seg godt ut skrevet på papir med en standard printer)

01-05-2013 Viktig korrigering av AgetoAgeSqlite er lastet opp. Jeg prøvde å sette knappen OK i personskjemaet til å ikke lukke personskjemaet fordi av og til var det ikke ønskelig at dette ble lukket ved redigering etc... men jeg oppdaget at dette medførte at man ikke får lagt til ny person i famileskjemaet så dette måtte jeg tilbakestille nå. Jeg finner vel en bedre løsning senere, slik at man ved redigering kan klikke en ny knapp "Save" for eksempel og som ikke lukker personskjemaet. En annen løsning er å la programmet undersøke om endringer er blitt gjort og så automatisk lagre endringer.