Kyselyn logiikan tarkistus - Edistynyt
From LimeSurvey Manual
Yleistä
Tärkeä toiminto, joka auttaa luomaan ja ylläpitämään monimutkaisia kyselyjä helposti, on Tarkista kyselyn logiikka.
Kyselyn logiikka on erittäin tärkeää tarkistaa koko kyselyn kehityksen ja testauksen ajan sekä ennen sen aktivointia. Tämä korostuu erityisesti silloin, kun käytät monimutkaisia relevanssi-, räätälöinti- ja vahvistusyhtälöitä - sinun on varmistuttava, ettei mikään mene rikki kyselyn suorituksen aikana.
Tämän toiminnon avulla voit nopeasti tarkistaa kyselysi, ryhmiesi ja kysymystesi oikeellisuuden. Se löytyy yläpalkin valikosta kyselyyn liittyvien asetusten alta. Se on käytettävissä Työkalut-valikon kautta:
Kuten yllä näkyy, voit suorittaa tämän toiminnon neljä kertaa, kerran jokaiselle kyselyssä käytetylle kielelle.
Kuvaus
Tarkista kyselyn logiikka -toiminto näyttää kaiken, mitä olet määrittänyt kullekin kysymykselle ja ryhmälle (esim. nimi, teksti, ohje, ehdot/relevanssi, vahvistussäännöt, oletusarvot, alikysymykset, vastaukset), selkeässä taulukkomuodossa. Se korostaa virheet ja antaa sinun napsauttaa kysymysten ja ryhmien tunnisteita (tai yhtälöissä käytettyjä muuttujia), jolloin kyseisten kysymysten tai ryhmien muokkaus avautuu uusiin selainvälilehtiin. Näin voit helposti korjata virheet nopeasti ja päivittää logiikan tarkistussivun varmistaaksesi kyselyn oikeellisuuden ennen sen aktivointia.
Näkymä on suunniteltu myös tutkijoiden ja tutkimuksen rahoittajien luettavaksi, jotta he voivat varmistaa kyselyn rakenteen ja logiikan oikeellisuuden. Kyselyn logiikan tarkistus päivittää välimuistin kaikille aktiivisessa kyselyssä käytetyille lausekkeille.
Se sisältää seuraavat sarakkeet:
- # - näyttää ryhmien ja kysymysten järjestysnumerot nollasta alkaen.
- Nimi [ID] - näyttää ryhmän/kysymyksen/alikysymyksen kysymyskoodin. Näitä koodeja voidaan käyttää muuttujina lausekkeissa. ID on kysymyksen tunniste (QID) tai ryhmän tunniste (GID). Tämä kenttä näyttää myös kysymyksen tyypin (esim. Monivalinta [M]).
- Relevanssi [Vahvistus] (Oletus) - näyttää seuraavat tiedot:
- Relevanssi - kysymyksen tai ryhmän syntaksikorostettu relevanssiyhtälö. Jos se on aina tosi (kysymys näytetään kaikissa tilanteissa), arvo on 1.
- Vahvistus - ExpressionScript luo automaattisesti vahvistusyhtälön valittujen kysymysattribuuttien perusteella (esim. vastausten vähimmäis-/enimmäismäärä, summan vähimmäis-/enimmäis-/yhtäsuuruusarvot, yksittäisten arvojen vähimmäis-/enimmäisarvot tai säännöllisen lausekkeen vahvistus). Tämä osio näyttää luodun vahvistusyhtälön, jotta voit havaita mahdolliset virheet (kuten määrittelemättömät muuttujat).
- Kysymystason vahvistus näyttää yhtälön, jolla yllä kuvatut kysymysattribuutit tarkistetaan
- Alikysymystason vahvistus näyttää yhtälön, jolla toteutetaan array_filter, array_filter_exclude ja exclusive_option
- Oletus - jos kysymyksellä on oletusarvo, se näytetään tässä syntaksikorostettuna (koska oletusarvo voi olla lauseke).
- Teksti [Ohje] (Vihje) - näyttää seuraavat tiedot:
- Teksti - ryhmän, kysymyksen, alikysymyksen tai vastauksen teksti. Se on syntaksikorostettu, jotta mahdollinen upotettu räätälöinti näkyy, ja voit varmistaa, että olet määrittänyt kaikki räätälöinnissä käyttämäsi muuttujat.
- Ohje - tämä näyttää kysymyksen ohjetekstin, myös syntaksikorostettuna.
- Vinkki - tämä näyttää sisäisesti luodun vahvistusvihjeen kysymysattribuuttien perusteella. Samaa vihjettä käytetään kaikissa kyselytyyleissä sekä tulostettavassa kyselyssä ja tietojen kirjauksen näkymissä.
- Kysymyksen attribuutit - tämä näyttää taulukon kaikista kysymykseen liittyvistä attribuuteista. Attribuutit, jotka voivat olla yhtälöitä, on syntaksikorostettu, jotta voit tarkistaa niiden oikeellisuuden.
Rivit on värikoodattu seuraavasti:
- Ryhmät - näytetään vaaleanharmaalla taustalla
- Kysymykset - näytetään vaaleanvihreällä taustalla
- Alikysymykset - näytetään vaaleankeltaisella taustalla
- Vastaukset - näytetään tavallisella valkoisella taustalla
Vastauksilla on Relevanssi-sarakkeessa lisäattribuutti:
- Arvo - tämä on laskennoissa käytettävä sisäinen oletusarvo. Jos käytät arviointeja, tämä on arviointiarvo. Muussa tapauksessa se on sama kuin vastauksen nimi.
Käyttö
Sivun yläosassa on yhteenveto. Jos kaikki on kunnossa, siinä lukee "Ei tunnistettu syntaksivirheitä tässä kyselyssä" tai "Tämä ryhmä" tai "Tämä kysymys" "ei sellaisenaan sisällä syntaksivirheitä". Jos tilanne on päinvastainen, siinä lukee "X kysymyksessä on syntaksivirheitä, jotka on korjattava".
Jokaisen kysymyksen, jossa on syntaksivirheitä, vasemmanpuoleisimman sarakkeen (eli #-sarakkeen) tausta värjätään punaiseksi. Lisäksi Nimi [ID] -sarakkeen alle tulee varoitus, jossa kerrotaan kysymyksen virheiden vähimmäismäärä. Seuraavat virheet ovat yleisiä:
- Määrittelemätön muuttuja - jos et ole määrittänyt kaikkia muuttujiasi tai olet kirjoittanut array_filterin väärin (tai käytät array_filterille eri vastausvaihtoehtojoukkoja), jotkin vahvistuskysymyksistäsi näyttävät virheitä. Määrittelemättömät muuttujat näytetään punaisella tekstillä ja punaisella viivalla kehystettynä.
- Virheellinen syntaksi - kun alat käyttää relevanssiyhtälöitä, saatat käyttää liian monta tai liian vähän sulkeita. Tällaiset syntaksiongelmat korostetaan ja kehystetään punaisella. Jos viet hiiren osoittimen tällaisen punaisella kehystetyn tekstin päälle, työkaluvihje kuvaa virheen.
Värit ExpressionScript-syntaksissa
Ehdot ja yhtälöt on syntaksikorostettu, jotta on helpompi hahmottaa, mitä katsot:
- Vihreä / vaaleansininen: Muuttuja, joka viittaa kyselyssä aiempaan kysymykseen
- Sininen: Funktio
- Harmaa: Merkkijonolauseke
- Ruskea: TOKEN-lauseke (osallistujatiedot)
- Musta: Operaattori
Tarkistettavaa:
- Violetti: Muuttuja, joka viittaa kyselyssä myöhempään kysymykseen. Yleensä tämä on virhe, ja se on tarkistettava.
- Punainen tai punainen kehys: Olematon muuttuja tai viittaus aiempaan kysymykseen tai syntaksivirhe - yleensä tarkistettava.
Määrittelemättömät muuttujat
Jos käytetään määrittelemättömiä muuttujia, kyseisen muuttujan nimi näytetään punaisella ja punaisella viivalla ympäröitynä. Jos viet hiiren osoittimen muuttujan nimen päälle, siinä lukee "undefined variable":


}}
Virheellinen syntaksi
Useimmat lausekkeisiin liittyvät virheet johtuvat virheellisestä syntaksista. Kyselyn ylläpitäjät yleensä unohtavat lisätä aaltosulkeen, käyttävät sulkeita väärin tai käyttävät lausekkeita virheellisesti:


Täältä löydät useita hyviä esimerkkejä syntaksin korostuksen käytöstä.
Virheellinen mukautettu JavaScript
JavaScript-virheet korostetaan myös kyselyn logiikan tarkistuksessa:

Muokkauksen ja vahvistuksen nopeuttaminen
Kaikkiin syntaksikorostettuihin teksteihin on upotettu työkaluvihjeitä, joita voi napsauttaa:
- Työkaluvihjeet
- Funktiot - kun viet hiiren osoittimen funktion päälle, näet funktion tarkoituksen ja syntaksimäärityksen;
- Muuttujien nimet - kun viet hiiren osoittimen päälle, näet kysymyksen sijainnin (ryhmä, kysymysjärjestys), kysymystekstin ja sallitut vastaukset.
- Toiminnot
- Muuttujien nimet - muuttujan nimen napsauttaminen avaa uuden ikkunan, jossa voit muokata kysymystä. Näin logiikassa on helppo liikkua ja sitä on helppo tarkistaa - napsauta vain kysymyksen relevanssin tai vahvistuksen ehtojen muuttujien nimiä nähdäksesi, mistä ne tulevat ja miten niitä käytetään.
Esimerkkejä
Seuraavat esimerkit on otettu ExpressionScriptin esimerkkikyselyistä. Kyseiseltä sivulta löydät kuvakaappauksia käynnissä olevista kyselyistä, selityksiä ja ladattavia tiedostoja.
Painoindeksi
Tämän esimerkin kuvakaappaukset löytyvät täältä.
Tämä on painoindeksin laskennan kysymysten uudelleenjärjestysnäkymä. Painon, pituuden ja painoindeksin relevanssilausekkeet näkyvät sarakkeessa Kysymys:

Saat paremman yleiskatsauksen kyselystä tarkistamalla kyselyn logiikkasivun:

Tämä kyselyesimerkki on myös hyvä esimerkki sisäkkäisistä if()-lauseista, joilla muodostetaan "weightstatus".

Porrastettu logiikka
Tämän esimerkin kuvakaappaukset löytyvät täältä.
Se näyttää alikysymysten vahvistuslogiikan, joka luodaan automaattisesti, kun käytät array_filter- ja array_filter_exclude-asetuksia. Esimerkki näyttää myös, miten voit korvata räätälöidyn arvon "Muu" (Q02_other-vastauksena on Q01_other).

Esimerkin kysymys Q05 käyttää samanaikaisesti array_filter- ja array_filter_exclude-asetuksia kysymyksissä Q01 ja Q02. Esimerkki havainnollistaa array_filterin porrastettuja ominaisuuksia. Huomaa, että yksi tärkeimmistä syistä näyttää kysymys- ja alikysymystason vahvistuksen ehdot on varmistaa, ettet ole tehnyt kirjoitusvirheitä määrittäessäsi array_filter- tai array_filter_exclude-muuttujien nimiä (tai jos käytät eri muuttujien nimiä suodatettujen alikysymysten listalle). Jos tällaisia kirjoitusvirheitä on, kaikki virheelliset muuttujien nimet näkyvät punaisella osoittaen, ettei niitä ole määritetty, jolloin voit korjata ongelman nopeasti.

Dynaaminen relevanssi
Tämä esimerkki havainnollistaa dynaamista porrastettua relevanssilogiikkaa, jolla hallitaan kysymysten näkyvyyttä. Voit ladata esimerkin täältä.
Huomaa myös, että kysymykset näytetään vain, jos tietyt vahvistusehdot täyttyvät. Jos esimerkiksi henkilö ilmoittaa, että hänellä on 2 lasta, vastaajan on täytettävä tietyt kysymykset (kid1 ja kid2).

Ryhmätason relevanssi
Tämä esimerkki näyttää, miten ryhmätason relevanssi näkyy logiikkatarkistuksessa. Tässä ovat kuvakaappaukset alla kuvatusta esimerkistä.
Kuten näette, ryhmätason relevanssiyhtälö (cohabs > 1 && p1_rel != "") näkyy harmaalla Person 2 -rivillä ryhmässä G-2.
Huomaatte myös, että kaikki kysymykset ovat pakollisia. Jos ryhmä ei kuitenkaan ole relevantti, eivät ole myöskään sen kysymykset. Siksi nämä kysymykset ovat todella pakollisia vain, jos ryhmä on relevantti.
Huomaatte myös, että tietyt kysymykset näytetään vain, jos edelliseen kysymykseen on vastattu. Alla näkyy, että jos p2_sex on tyhjä, p2_name ei näy, vaikka se on pakollinen kysymys. Pakollinen kysymys p2_age ei myöskään näy, jos p2_name on tyhjä. Näitä kysymyksiä voidaan pitää "ehdollisesti pakollisina".
Lisäksi huomaa, että vinkki-viestit luodaan myös automaattisesti. Ne jaotellaan arvoalueen (min/max), summa-arvoalueen (min/max/yhtä suuri kuin), vastausten määrän (min/max) jne. mukaan (riippuu käytetystä kysymystyypistä ja aktiivisista attribuuteista). Joskus vastausalue halutaan vahvistaa, mutta käyttäjälle ei haluta näyttää turhan tuntuisia vahvistusvinkkejä. Tällöin voit käyttää kysymysasetusta hide_tip (kuten tässä, jotta käyttäjälle ei kerrota iän olevan välillä 0–115, ellei hän yritä syöttää virheellistä arvoa – katso p2_age).

Pilkku desimaalierottimena
Vaikka LimeSurvey tukee täysin pilkun käyttöä desimaalierottimena suorituksen aikana, suunnitteluvaiheessa (esim. määritettäessä min/max-arvoja kysymysten lisäattribuuteissa) desimaalierottimena on silti käytettävä pistettä. Toimiva esimerkki löytyy täältä.
Muista myös, että vahvistuslogiikka luodaan automaattisesti käytössä olevista kysymysten attribuuteista. Yhtälöt voivat näyttää mutkikkailta, mutta niistä ei tarvitse huolehtia.

