Kodulehed
[382] - Andmebaasid I (ITI0206) (kevad 2022)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / Vahendid - MS Access

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (17.05.2022 00:13):
Kuidas jõustada MS Accessis kitsendus, et isikukood peab koosnema ainult tähtedest, numbritest, tühikutest, sidekriipsudest, plussmärkidest, võrdusmärkidest ja kaldkriipsudest?
Vastus: MS Access ei paku täielikku toetust regulaaravaldiste kasutamisele, kuid selle LIKE predikaadi mustrite koostamise võimalusi on laiendatud regulaaravaldistest tuntud võimalustega. Kui on valitud File => Options => Object Designers => Query design => SQL Server Compatible Syntax (ANSI 92) => This database
(Fail => Suvandid => Objektikujundajad => Päringu kujundus => SQL Serveriga ühilduv süntaks (ANSI 92) => See andmebaas), siis * asemel tuleb kasutada % ja ? asemel _

MS Accessi andmebaasi saab lokaliseerida (konkreetse keele keskkonnaga kohandada), määrates andmebaasis tekstiliste väärtuste sorteerimiseks kasutatava keele:
Fail=>Suvandid=>Üldist=>Uue andmebaasi sortimisjärjestus
File=>Options=>General=>New database sort order

Konkreetse andmebaasi puhul kasutatav keel määrab, milliste märkide vahemikku tuleks mustri koostamisel kasutada. Eesti tähestiku esimene täht on A ja viimane täht on Y.

Kui andmebaasis on sorteerimise keeleks eesti keel, siis lisan tabelis Isik veerule isikukood valideerimisreegli:

Not ALike '%[!A-Y0-9 +=/\-]%'

Isikukood ei tohi olla selline, kus sisaldub mõni lubatud märkide hulka mittekuuluv märk. Hüüumärk tähistab Accessis selles kontekstis eitust - ei kuulu loetletud märkide hulka.

[!A-Y0-9 +=/\-]

Nii tähistatakse märkide hulka, kuhu kuulub üks märk. Selles märkide hulgas on kõik märgid, mis ei ole tähemärgid, numbrimärgid, tühik, plussmärk, võrdusmärk, kaldkriips, sidekriips.

Kui andmebaasis on sorteerimise keeleks määratud general e inglise keel, siis lisan tabelis Isik veerule isikukood valideerimisreegli, sest inglise tähestiku esimene täht on A ja viimane Z:

Not ALike '%[!A-Z0-9 +=/\-]%'

Võrdluseks - PostgreSQLis ja Oracles tuleks kasutada regulaaravaldist '^[[:alnum:] +=-\/\]*$'. Alates stringi algusest (^) kuni lõpuni ($) peab selles olema null või rohkem(*) nurksulgudes kirjeldatud märkide hulka kuuluvat märki. [[:alnum:]] on eeldefineeritud märkide klass, kuhu kuuluvad tähed ja numbrimärgid. PostgreSQLis oleks CHECK kitsenduse tingimus  isikukood~'^[[:alnum:] +=-\/\]*$'
~ on operaator tõstutundlikuks (case sensitive) regulaaravaldise mustrile vastavuse kontrollimiseks.

Oracles oleks CHECK kitsenduse tingimus REGEXP_LIKE(isikukood,'^[[:alnum:] +=-\/\]*$')
REGEXP_LIKE on funktsioon regulaaravaldise mustrile vastavuse kontrollimiseks.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!