19 - 01 - 2025
Main Menu
Who's online

We have 75 guests and no members online

Latest articles
Visitors
30356200
Today
Yesterday
This Week
This Month
Last Month
All days
7220
9262
51309
161091
288049
30356200

Old stories

Advanced SQL Window

User Rating:  / 0

Jeg har lastet opp en ny versjon med forbedret Advanced SQL vindu og der man nå kan angi hva som skal skje når man dobbelklikker et felt i den listen som blir generert ved kjøring av spørringene. Dette betyr at i eksemplet nedenfor er det nå mulig å dobbelklikke f.eks "Finsåsen, Grane" og så spretter Skjemaet for steder opp med stedet "Finsåsen, Grane" valgt. En liten demo på hvordan man gjør dette:

Lag en spørring som f.eks

Select PID, Firstname, Lastname, Birthdate, Birthplace from ata_persons where Firstname like '%' order by PID

Dette er "Standard" spørringen som allerede eksisterer for Advanced SQL så man kan godt bruke denne som den er.

 

Klikk så "..." knappen til høyre for "Go" knappen og klikk "Set actions"

Så kommer man til vinduet nedenfor som har en nedtrekksliste der man velger hvilket skjema som skal komme opp... Person, Familie, Location....osv.... Column N må settes til den kolonneindexen som inneholder elementet som kan åpnes.

Siden vi har PID som første kolonne (som blir indeksert som 0 så velger vi Person fra nedtrekkslisten og setter Column til 0 og klikker "Add"

Så har vi birthplace som 5 kolonne i spørringen vår og indexen blir 4 (0,1,2,3,4) og vi velger Location fra nedtrekkslisten og setter Column til 4 og klikke "Add". Så kan vi bare lukke vinduene og tilbake i Advanced SQL kan vi nå dobbelklikke på f.eks en birthplace og få Stedskjemaet opp med dette stedet valgt.

 

Ny oppdatering av AgetoAgeSqlite (x86)

User Rating:  / 0

Ny oppdatering av AgetoAgeSqlite (x86) med mer avanserte metoder for å velge utseende på person- og familie-listene. Det at brukeren kan skrive sin egen SQL spørring for listene gjør at man kan designe vinduene mye mer som man selv ønsker. La oss f.eks si at man ønsker å vise kildene også i famile listen man kan da skrive f.eks denne SQL spørringen:

select fid, malename as Male, femalename as Female, marriagedate as Date, marriageplace as Place, ChildCount as Barn, ata_sources.GUID, Name as Kildenavn, Title as KildeTittel from ata_families left join ata_sourcerel on(Type = "Family" and ID = fid) left join ata_sources on(ata_sources.GUID = ata_sourcerel.GUID)

Sette navnet på spørringen som f.eks "Standard (med kilder)" og lagre som ny....(Save as new...) og etter at den er blitt lagret kan man så finne denne på User menyen og velge denne og klikke "..." og så klikke "Set actions" og dette vinduet kommer opp:

Her kan man bruke hjelpefunksjonen nederst hvis man vil...men man kan også skrive direkte verdiene inn i listen, hver rad i dette vinduet beskriver hvordan hver kolonne vil se ut og hva som skjer når man dobbelklikker et element "Column" er index på kolonnene og den første kolonnen har index 0, Schema beskriver hvilket skjema som vil komme opp når man dobbelklikker et felt. "Key" er indexen på kolonnen som er Primær Key for tabellen som skjemaet bygger på. "Align" er en verd der 0 betyr at teksten vil bli venstrejustert, 1 - sentrert og 2 - høyrejustert, "Width" er bredden av kolonnen, "Note" har ingen praktisk betydning (man kan skrive hva man vil der).

Bildet er forminsket her...men har man gode øyne ser man kanskje at nederst står det Found 2497 of total 2494 familes. Hvordan kan det stemme? Joda, det skyldes at vi skrev "LEFT JOIN" i spørringen, hvis vi hadde utelatt "LEFT" og bare skrevet "JOIN" hadde listen blitt redusert til bare de familier hvor kilden er blitt satt. LEFT JOIN vil lage en liste over alle familier uansett om kilden er satt og hvis noen familer har flere kilder vil familien bli repetert for hver kilde. Derfor blir antall familier i dette tilfellet (jeg har en familie med flere kilder) flere enn antall registerte familer.

Så skal vi se hvordan vi lager en enkel statestikk på hvor mange ganger en kilde er brukt. Vi skriver:

select count(ata_sources.GUID) as N, Name, Title, ata_sources.GUID from ata_sources join ata_sourcerel on(ata_sourcerel.GUID = ata_sources.GUID) group by ata_sources.GUID order by 1 desc

Så skriver vi f.eks "Kilde statestikk" som navn på spørringen og lagrer som ny.... så kan vi velge den på menyen og redigere den igjen for å lage et bedre utseende og lage dobbelklikk funksjon med Set actions

Og resultatet blir i mitt tilfelle:

 

Kjøre en ikke-spørring

User Rating:  / 0

"Execute non query" brukes for komandoer til databasen som ikke returnerer et utvalg. Dette kan f.eks være å slette en rad i en tabell eller legge til en ny rad... man kan også lage en ny tabell eller slette en tabell, det er mulig å gjøre dette i SQL Command Builder også, og den finnes på File/Execute non query. Bare å skrive først en komando og så velge den. Men for all del....ikke slett tabellene som brukes av agetoagesqlite, gjør man det er nok databasen ødelagt og man må begynne med en ny blank database. (hvis man ikke har tatt en kopi av databasen først da) Jeg fant en veldig fin og ikke minst effektiv måte å lage en ny tabell som fylles med resultatet av en spørring på eksisterende tabeller og man benytter "AS" som faktisk er mye mer hurtig enn å bruke INTO (som er vanlig). La oss si man vil lage en ny tabell med navn ata_temp som man vil fylle med data fra en eksisterende tabell, man skriver da f.eks

CREATE TABLE ata_temp AS SELECT * from ata_persons;

og på brøkdelen av et sekund lages den nye tabellen og er en kopi av tabellen ata_persons. Men det interessante er at man kan gjøre utvalg og legge til nye kolonner som f.eks

CREATE TABLE ata_temp as SELECT PID, Firstname, Lastname, Birthdate, Birthplace, Country FROM ata_persons JOIN ata_locations ON(Birthplace = Name) WHERE Country = 'Norway'

En ny tabell ata_temp vil da bli laget og som har kolonnene PID, Firstname, Lastname, Birthdate, Birthplace, Country og denne siste kolonnen er en kolonne fra tabellen ata_locations. Jeg testet hastigheten på å lage en ny tabell med spørring på at persontabell med 8600 personer og på min gamle pc tar det bare ca 80 millisekunder.

Den nye tabellen vil være permanent og blir lagret i databasen men hvis man bare trenger en midlertidig tabell som bare vil eksistere i hukommelsen mens man kjører kan man skrive:

CREATE TEMPORARY TABLE tmp AS SELECT * FROM Persons

Denne komandoen er meget hurtig fordi databasen trenger ikke å klargjøre for å rulle tilbake hvis noe går galt og samme spørring som nevnt tidligere (80 millisekunder kjøretid) går på 10 millisekunder med temporary tabell.

For å vise alle dataene (med de orginale kolonnenavnene (overskrift på kolonnen)) i den nye tabellen man laget skriver man bare:

SELECT * from ata_temp;

 

Ny versjon av AgetoAgeSqlite lastet opp

User Rating:  / 1

Ny oppdatering av AgetoAgeSqlite er lastet opp og Personlist-, Familielist- og Advanced SQL vinduet er oppdatert til å benytte temporary table og det brukes en StopWatch funksjon til å måle tiden det tar å lage tabellene når man klikker "GO" (Tiden det tar vises helt øverst i vinduet).  Jeg kan forøvrig fortelle for dem som er interessert i Visual Studio C# at denne Stopwatch funksjonen finnes i System/Diagnostics. Så er Set Query Actions vinduet oppdatert for å gjøre det litt enklere og kjappere å sette opp kolonnene. Hvis dette vinduet har ingen rader når man starter så er det enkleste å bare telle hvor mange kolonner man har angitt i spørringen og så rett og slett bare klikke Add x ganger, har man 10 kolonner klikker man bare 10 ganger på Add og så bare redigerer man direkte i listen på de verdier man ønsker å endre. Husk å gå til en annen rad for at redigeringen man har gjort skal bli lagret.

 

Et lite tips: Hvis man står på et felt i Schema kolonnen så kan man bare klikke på nedtrekkslisten nederst for å velge et annet skjema.

 

18-03-2013 - Har lastet opp ny versjon med utvidet egenskap tabell for kolonner i Set Actions vinduet. Her er det nå to tabeller og helt til venstre er tabellen over egenskaper for kolonnene som genereres fra SQL spørringen. Denne lages av SQLite databasen og kan være verdt å ta en liten titt på. Den viser blant annet hvilken tabell som feltet stammer fra, det orginale feltnavnet og eventuelt et alias navn. Tabellen til høyre er tabellen over egenskaper til kolonnene som brukeren kan sette ønskede verdier i. Hver rad i disse tabellene er altså egenskaper for kolonnene eller feltene og tabellen til høyre skulle ideelt sett ha samme antall rader som den til venstre Hvis den ikke har det er det bare å klikke Add. Man behøver altså ikke å telle hvor mange felter man har angitt i spørringen nå. Man bare klikker Add til tabellen til høyre har samme antall rader som den til venstre. Til slutt bare redigerer man verdiene i tabellen til høyre, det er i hovedsak Schema, Key, Align og Width man setter.

newsetact2

 

19-03-2013 - Lastet opp ny versjon av AgetoAgeSqlite med forenklet og forbedret Set Query Actions der jeg har begrenset de viste felter til de som er nødvendige og nyttig og antall kolonner blir nå automatisk lagt inn ved nye spørringer, så det eneste brukeren nå trenger å gjøre er å velge hvilket skjema som skal sprette opp ved dobbelklikk på felter og sette Key verdi (index på kolonnen som har Primær Key), velge Alignment (venstre, senter, høyre) (0,1,2) og sette bredde på kolonnene (width)

newsetact3

 

20-03-2013 - Lastet opp ny versjon av AgetoAgeSqlite med revidert SQL Command Builder og Query Actions vindu. Man klikker nå "Test SQL and set actions" etter at man har skrevet en SQL command så vil SQL setningen bli testet og evaluert og hvis den blir godkjent kommer man til Set Query Actions vinduet.

newcommandbld

 

I Set Query Actions vinduet har jeg satt alternerende bakgrunnsfarve (kun for syns skyld) og hvis man har så mange kolonner at man må scrolle for å se alle...så har jeg gjort det slik at scroller man i den ene tabellen så blir en tilsvarende scrolling gjort automatisk i den andre tabellen fordi disse to tabellene på en måte hører sammen.....men programmessig blir det enklere om jeg holder disse adskilt. Tabellen til venstre er egentlig bare en hjelpetabell for å se hva kolonnene er for noe...

newsetact4 

 

Man må ikke bli forvirret av personlist, familelist og Advanced SQL vinduet, man kan skrive en hvilken som helst SQL spørring i alle vinduene, det er egentlig bare en måte å sortere spørringene på...slik at når man velger personlist så er det fordi her vil man definere spørringer som er relatert til personer... og det blir enklere å finne den spørringen man er ute etter.

21-03-2013 - Lastet opp ny versjon der man nå også kan angi en internet browser som skal komme opp ved dobbelklikk på en URL. Også fotoer kan nå bli vist ved dobbelklikk på et felt der feltet er navnet på et foto.

Påske Egg

User Rating:  / 0

God Påske til alle sjeler uansett om man er datafrelst genealogist eller hva man måtte være. Ny oppdatering av AgetoAgeSqlite (x86) er lastet opp og det nye er en automatisk funksjon som vil finne ut hvilket skjema som skal komme opp ved høyreklikk og "Edit" i listene. SQLite har innebygget en funksjon "GetSchemaTable" som programmet kan bruke for å finne ut hvilke felt som inneholder hva. Dette betyr at det nå ikke er nødvendig at PID feltet er satt som første kolonne f.eks. (PID feltet er nødvendig for at personskjemaet skal sprette opp men feltet kan ligge i en hvilken som helst kolonne nå). Ved dobbelklikk vil verdiene som er satt i Set query actions bli brukt. (også her kunne programmet automatisk funnet ut hvilket skjema som skal sprette opp, men jeg har valgt å la skjemasettingen i Set query actions være gjeldende.

Så skal vi se hvordan vi lager en meny som vil vise en liste over levesteder. Vi går til enten person, familie eller advanced SQL vinduet og klikker "..." lengst til høyre, øverst og velger File/New..." så skriver vi som spørring:

SELECT Loc as Sted, Region, Country, LivingID as ID, Text as Person, Arrived, Leaved, Registered  FROM ata_residentials JOIN ata_locations ON LOC = Name and ata_residentials.Type = 'Person' order by LivingID, Pos

Vi skriver et navn på spørringen f.eks "Personer med registrert levested" velger en kategori (eller skriver en ny kategori) og klikker "OK".  Så kan vi bare lukke SQL Command Builder og menyen vil være der. Vi har i dette eksemplet ikke klikket "Set query actions" men det er fordi vi tester om den automatiske høyreklikk/Edit funksjonen virker og når vi klikker GO og så høyreklikker og velger Edit så skulle Skjemaet for levesteder sprette opp hvis vi står i Sted, ID, Person, Arrived, Leaved eller Registered feltet. Hvis vi står i Region feltet skulle Sted skjemaet komme opp og står vi i Country feltet skulle Country skjemaet sprette opp (ved høyreklikk/Edit).

livingplaces

Hvis listen er tom er det nok fordi man ikke har registrert noen levesteder...man må da gå til View/Residences og registere noen....

Men ikke glem å koke Påskeegg da!