Ero sivun ”Loki5ac” versioiden välillä

Radioamatööriwikistä
Siirry navigaatioon Siirry hakuun
>Oh5xp
>Oh5xp
(→‎Vain valittujen kenttien näyttäminen: Kirjoitettu käytännössä uudestaan)
Rivi 115: Rivi 115:
</table>
</table>


====Vain valittujen kenttien näyttäminen====
====Eri tapoja maiden listaukseen====


SQL-ristikossa on mahdollista näyttää vain valitut kentät. Tällöin kyselytekstikenttään on kirjoitettava kysely itse. Periaate on seuraava: <code>SELECT kenttä1, kenttä2, kenttä3 ...</code>. Kenttien leveyksiin ei voi vaikuttaa kyselyn luontivaiheessa, mutta suorityksen jälkeen kenttien leveyksiä voi muuttaa vanhaan tapaan.
Maan numeron saa helposti selville kun kirjaa prefiksin Asemakenttään, jolloin kenttien 'Nr' ja 'CQ' arvot kirjoitetaan peräkkäin pilkulla erotettuna, aivan kuten ne näkyvät tietokantaristikossa. Ne saa selville myös klikkaamalla pääikkunan työkalupalkissa olevaa Maapallo-kuvaketta, mikä avaa maaluettelon. Siellä näkyy mm. rivi
<code>Germany_EU    ;DL    _14__(230)_</code>, jossa suluissa on maan numero (230) ja 14 on CQ.


<table border="0" cellpadding="2" cellspacing="0" width="70%">
<tr valign="top">
<td width="20">
<td>
<code>
SELECT Asema, Päivä, Aika, Bandi, Mode
SELECT Asema, Päivä, Aika, Bandi, Mode
FROM loc4ac
FROM loc4ac
WHERE DXCC = '230,14' ;
WHERE DXCC = '230,14';
</code>
<td>
Tässä tulostuvat nuo viisi kenttää kaikista saksalaistunnusten kanssa pidetyistä QSO'ista.
</table>


Tässä tulostuvat nuo viisi kenttää kaikista saksalaistunnusten kanssa pidetyistä QSO'ista. Maan numeron saa helposti selville kun kirjaa prefiksin Asemakenttään, jolloin kenttien 'Nr' ja 'CQ' arvot kirjoitetaan peräkkäin pilkulla erotettuna, aivan kuten ne näkyvät tietokantaristikossa. Ne saa selville myös klikkaamalla Maapallo-kuvaketta, mikä avaa maaluettelon. Siellä näkyy mm. rivi
Jos halutaan tehdä sama temppu USA -kusoille, joudutaan käyttämään kiertotietä, koska niissä CQ-arvot vaihtelevat tai ovat "?". Nämä saadaan selville mm. hyödyntämällä Visual Basic -funktioita.
Germany_EU    ;DL    _14__(230)_
joten suluissa on maan numero ja 14 on CQ. Ellei rivin loppuosaa näy, se saadaan esille vetämällä lomakkeen oikeaa reunaa oikealle.
 
Jos halutaan tehdä sama temppu USA -kusoille, joudutaan käyttämään kiertotietä, koska niissä CQ-arvot vaihtelevat tai ovat ?


====LIKE====
====LIKE====

Versio 5. tammikuuta 2006 kello 19.07

Loki5ac:n pääikkuna

Loki5ac on OH2KXO:n tekemä monikäyttöinen lokiohjelma. Ohjelman voi ladata maksutta sen kotisivuilta. Ilmaisella rekisteröinnillä saa 30 päivän käyttöaikarajoituksen pois.

Loki5ac:n toimintoja ovat mm.

  • QSOjen kirjaus kolmella erilaisella käyttöliittymällä
    • Pääikkunassa voi kirjata yksityiskohtaisia tietoja
    • Syöttöruudulla, jossa pääsee etenemään tabuloinnilla kentästä toiseen joustavasti
    • Pikakirjauksella pääsee kirjoittamaan kaiken yhtenä rivinä, josta ohjelma tunnistaa tietojen tyypit mm. ohjausmerkkien avulla
  • DDE:llä tietojen nouto MixW:stä, DigiPanista tai HamRadioDeluxesta.
  • Rigin ohjaus ja luku sarjaportin kautta (tällä hetkellä tuettuna bandi, taajuus ja mode)
  • QSL-korttien ja -tarrojen tulostus
  • Monipuoliset listaukset ja tilastot
  • Kartat (Eurooppa ja maailma), joihin saa näkymään workitut lokaattorit ruutuina tai viivoina lähdepisteenä QTH
  • SQL-ristikko tietojen monipuolista hakua ja tilastojen luontia varten
  • Aseman perustietojen nouto CallBookista, SRAL-, HamCall- ja QRZ -palvelimilta
  • Telnet-cluster, jossa
    • Puhevahti, joka antaa Windowsin SAPI-rajapinnan kautta saapuneet uudet vihjeet puheena, tavaus joko Tavausaakkosina tai puhesyntetisaattorin kielen mukaan aakkosina
    • Sähkötysvahti, joka antaa CW:llä saapuneet uudet vihjeet
    • Keep-alive (virkistysväli), joka pitää yhteyden hengissä, mikäli DX-clusterin kanssa on katkeamisongelmia

SQL-ristikko

Tämän kappaleen tarkoitukena on tarjota pääasiassa vinkkejä ja esimerkkejä SQL-ristikon käyttöön. Muita Loki5ac:een liittyviä käyttövinkkejä löytyy OH2KXO:n Niksinurkasta.

Loki5ac:n SQL-ristikko

Vaikka lokiohjelmassa onkin monipuoliset tilastointi- ja listausmahdollisuude, joskus voi tulla tarvetta listaukselle, jota ohjelmasta ei saa valmiina. SQL-ristikossa voi suorittaa SQL-standardin mukaisia kyselyjä lokista. Käytettävissä ovat Visual Basicin funktiot, koska taustalla on Microsoftin tietokantamoottori, jota käytetään Accessissakin.

Jos tehdään lokikyselyjä, joissa halutaan poimia esiin tietyt QSO't kaikkine kenttineen, SQL-ristikossa on käytettävissä apuneuvoja. Valinta voidaan tehdä 1-3 kentän perusteella. Ensin valitaan 1. ehtokenttä sen pudotusvalikon listasta. Sen jälkeen ehto (yhtä kuin, suurempi, pienempi, eri suuri jne), sitten arvo. Jos kenttänä on Bandi, Mode tai Keli (Propagaatio), arvo valitaan pudotusvalikon listasta, muuten se kirjoitetaan itse. Jos käytetään vain yhtä kenttää, klikataan >> (Näytä) nappulaa.

Useampaa ehtokenttää käytettäessä on 1. rivin päätteeksi valittava funktio (AND, OR, AND NOT, OR NOT) eli ja, tai, ja ei, tai ei. Sen jälkeen on 2. ehtokentän vuoro samaan tapaan. Lopuksi klikataan >>. Suorita-painikkeen viereiseen tekstikenttään tulee esiin näin valittu SQL -lauseke.

SQL-kyselyiden suunnittelua helpottaa kun ajattelee että kirjoitettu kysely käy rivi-riviltä läpi jokaisen lokin QSO:n. Ei siis ole mahdollista viitata seuraavaan ja edelliseen riviin ilman monimutkaisia alikyselyitä, joihin liittyviä tarpeellisiä esimerkkejä olisi suotavaa saada tähän listattua.

Alla olevat esimerkkien esittelykappaleet on järjestetty siten että ensin on SQL-esimerkit, sen jälkeen vasta on tarkemmat kuvaukset eri funktioista. Tämä siksi että tarkemmat funktiokuvaukset menevät hyvin pitkälle ohjelmointitekniikkaan, eikä ole tarkoitus olettaa että kaikki Loki5ac:n ja SQL-ristikon käyttäjät ovat ohjelmoijia.

Kyselymalleja

SELECT perusteita

SELECT on avainsana hakuja tehtäessä, sen jälkeen tulee mitkä tiedot lokista näytetään. Jos haluat kaikki tiedot näkyville voi käyttää tähteä.

Esimerkki bandi, mode ja DXCC hakuehtojen antamasta lopputuloksesta

Kun SQL-ristikon ehtokenttiin syötetään seuraavat tiedot

saadaan tulokseksi lauseke:

KenttäEhtoArvoFunktio
1Bandi=3.5 AND
2Mode=CW AND
3DXCC=230,14Napsauta Loki5ac sql-ristikko luo kysely painike.gif

SELECT * FROM loc4ac
WHERE
[Bandi] = '3.5'
AND
[Mode] = 'CW'
AND
DXCC = '230,14';

Ylläkirjoitettu hakukysely tarkoittaa samaa kuin: Valitse kaikista QSO'ista tässä lokissa ne joissa bandi on 3.5 ja mode CW. Kun klikataan painiketta <Suorita> lauseke suoritetaan ja alle SQL-ristikkoon ilmestyvät ne lokissa olevat QSO:t, jotka täyttävät nämä ehdot. Kenttien ympärille tulee hakasulut. Välttämättä niitä ei tarvita kuin kentissä, joiden nimessä on välilyöntejä (esim. [QSL saatu]).

Näytä vain valitut kentät

Esimerkki kenttien valinnasta

SQL-ristikossa on mahdollista näyttää vain valitut kentät. Tällöin kyselytekstikenttään on kirjoitettava kysely itse. Periaate on seuraava: SELECT kenttä1, kenttä2, kenttä3 .... Kenttien leveyksiin ei voi vaikuttaa kyselyn luontivaiheessa, mutta suorityksen jälkeen kenttien leveyksiä voi muuttaa vanhaan tapaan.

SELECT Asema, Päivä, Aika, Bandi, Mode
FROM loc4ac;

Tässä tulostuvat nuo viisi kenttää luetellussa järjestyksessä. Tässä ei ole käytetty []-sulkuja, koska kenttien nimissä ei ole välilyöntejä.

Erisuuruus

Erisuuruusmerkkejä voidaan käyttää esimerkiksi aikavalinnoissa ottamalla kentäksi DTfield, joka on muotoa VVVVKKPPTTMM (esim. 200512311930 tarkoittaa 31.12.2005 19:30). Lopusta alkaen voidaan korvata aikamääreitä nollilla, jos niitä ei haluta ottaa huomioon. Kun aikaa ei huomioida pannaan sen tilalle 4 nollaa, edellä olevan esimerkin mukaan siis 200512310000. Ohjelma osaa lisätä loppuun nollat, jos käytetään edellä olevassa kappaleessa kuvattua valintamenetelmää. Jos kysely kirjoitetaan käsin tekstikenttään, pitää nollat lisätä itse perään. (Nollia käytetty siksi että silloin on vuorokauden vaihto, jolloin QSO:ja ei tule väärältä päivältä.)

SELECT * FROM loc4ac WHERE DTfield >= 199911230000 AND DTfield < 200601010000

Näytetään ne lokin rivit, joissa pvm on suurempi tai yhtäsuuri kuin 23.11.1999 kello 00:00 ja pienempi kuin 1.1.2006 kello 00:00 (eli 23.11.1999 ja 31.12.2005 välillä pidetyt QSOt).

ORDER BY

Tuloksen lajittelu tapahtuu ORDER BY -avainsanoilla.

Esimerkki ORDER BY -kyselyn lopputuloksesta

SELECT * FROM loc4ac ORDER BY Bandi, Mode;

Järjestää ristikon niin, että QSO't ovat ensisijaisesti bandin ja toissijaisesti moden mukaan järjestyksessä.

Eri tapoja maiden listaukseen

Maan numeron saa helposti selville kun kirjaa prefiksin Asemakenttään, jolloin kenttien 'Nr' ja 'CQ' arvot kirjoitetaan peräkkäin pilkulla erotettuna, aivan kuten ne näkyvät tietokantaristikossa. Ne saa selville myös klikkaamalla pääikkunan työkalupalkissa olevaa Maapallo-kuvaketta, mikä avaa maaluettelon. Siellä näkyy mm. rivi Germany_EU ;DL _14__(230)_, jossa suluissa on maan numero (230) ja 14 on CQ.

SELECT Asema, Päivä, Aika, Bandi, Mode FROM loc4ac WHERE DXCC = '230,14';

Tässä tulostuvat nuo viisi kenttää kaikista saksalaistunnusten kanssa pidetyistä QSO'ista.

Jos halutaan tehdä sama temppu USA -kusoille, joudutaan käyttämään kiertotietä, koska niissä CQ-arvot vaihtelevat tai ovat "?". Nämä saadaan selville mm. hyödyntämällä Visual Basic -funktioita.

LIKE

WHERE DXCC LIKE '291,%' joka tarkoittaa: 'maan numero 291 ja CQ voi olla mikä tahansa. % tarkoittaa siis mitä merkkejä tahansa, kuinka monta tahansa. Toinen LIKE määrittelyn apuneuvo on _ joka tarkoittaa: yksi merkki, mikä tahansa. Esimerkiksi WHERE Asema LIKE 'OH_MM' merkitsee kaikkia OH-asemia, joissa tunnus=MM ja piirinumero mikä tahansa.

Tietokantafunktioita

  • COUNT
  • SUM
  • MIN
  • MAX
  • AVG
  • DISTINCT
  • DISTINCTROW

Visual Basic -funktiot ja SQL-ristikko

MSDN Visual Basic 6.0 Reference sisältää täydellisen ja ajantasaisen listan käytettävissä olevista funktioista. Funktioiden parametrit erotetaan pilkulla (,), joissain vanhemmissa tietokantaversioissa erottimena oli puolipiste (;).

Merkkijonojen käsittely

SQL-ristikossa VB-funktioiden merkkijono-parametri on useimmiten joku tietokannan kentistä, eli lokista poimittu yksi tieto. Samoin on joskus muidenkin parametrien kanssa, kuten esimerkeistä saattaa huomata.

Funktio Tarkoitus Esimerkki
Left(a, n) Palauttaa merkkijonosta a vasemmalta alkaen n kappaletta merkkejä Left(Mode,3) palauttaa esim. modesta löytyvästä SSTV -merkkijonosta SST
Right(a, n) Palauttaa merkkijonosta a oikealta alkaen n kappaletta merkkejä Right(Mode,3) palauttaa esim. modesta löytyvästä SSTV -merkkijonosta STV
Mid(a, b, n) Palauttaa merkkijonosta a paikasta b alkaen n kappaletta merkkejä Mid([Oma QTH], 3, 7) palauttaa esim. Oma QTH:sta löytyvästä Lappeenranta -merkkijonosta ppeenra
Len(a) Palauttaa merkkijonon a pituuden Len([Oma QTH]) palauttaa esim. 12, jos Oma QTH:ssa lukee Lappeenranta
InStr(a, b) Palauttaa alimerkkijonon b alkukohdan merkkijonosta a InStr([Oma QTH], pp) palauttaa esim. 3, jos Oma QTH:ssa lukee esim. Lappeenranta
Int(a) Muuntaa merkkijonon a kokonaisluvuksi Int("40") palauttaa esim. 40

Yksinään näistä funktioista ei juurikaan ole hyötyä, mutta yhdistettynä niillä saadaan purettua lokin tietoja vielä pienempiin osiin. Alla olevassa taulukossa on esitetty edellisen taulukon funktioiden yhdistelyä.

Funktioyhdistelmä Tulos
Puretaan DXCC:n maanumero ja CQ-alue erikseen
Maanumero: Int(Left([DXCC], InStr([DXCC],",")-1))
CQ-numero: Int(Right([DXCC], Len([DXCC])- InStr([DXCC],",")))
Maa,CQMaaCQ
263,1426314
387,2638726
Erotellaan raportin annettu saatu -osat erikseen
Annettu: Int(Left([Raportti], InStr([Raportti],"/")-1))
Saatu: Int(Right([Raportti], Len([Raportti])- InStr([Raportti],"/")))
Raportti Annettusaatu
599/599 599599
56/59+20 5659+20