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 (05.06.2022 13:40):
Kuidas jõustada MS Accessis kitsendus, et riigi kood koosneb täpselt kolmest suurtähest, kusjuures täpitähed ja katusega tähed pole lubatud?
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 _

Lisan tabelis Riik veerule riik_kood, valideerimisreegli, mis koosneb omavahel seotud alamtingimusest, mis peavad kõik olema täidetud.

Not ALike '%[!ABCDEFGHIJKLMNOPQRSTUVWXYZ]%' And StrComp([riik_kood];UCase([riik_kood]);0)=0 And Len([riik_kood])=3

Not ALike '%[!ABCDEFGHIJKLMNOPQRSTUVWXYZ]%' - Riigi kood ei tohi vastata mustrile, mille kohaselt on seal vähemalt üks märk, mis ei ole ABCDEFGHIJKLMNOPQRSTUVWXYZ. Need on võimalikud tähed, mida riikide koodides kasutatakse. Täpitähed ja katusega tähed sinna hulka ei kuulu. Hüüumärk (!) ütleb, et märk ei kuulu nende märkide hulka.

StrComp([riik_kood];UCase([riik_kood]);0)=0 - MS Access on stringide võrdlemisel vaikimisi tõstutundetu (case insensitive). Seega MS Accessi jaoks on EST ja est ühesugused (võrdsed) stringid. StrComp on MS Accessi funktsioon, mis võimaldab stringide tõstutundlikku võrdlemist. Tõstutundlikult võrreldes peab riigi kood olema võrdne suurtähtedeks teisendatud riigi koodiga.

Len([riik_kood])=3 - Riigi kood peab olema täpselt kolm märki pikk. Len on MS Accessi funktsioon, mis leiab etteantud stringi pikkuse.

Võrdluseks - PostgreSQLis ja Oracles tuleks kasutada regulaaravaldist '^[A-Z]{3}$'. Alates stringi algusest (^) kuni lõpuni ($) peab selles olema täpselt kolm suurtähte A-Z. PostgreSQLis oleks CHECK kitsenduse tingimus  riik_kood~'^[A-Z]{3}$'
~ on operaator tõstutundlikuks (case sensitive) regulaaravaldise mustrile vastavuse kontrollimiseks.

Oracles oleks CHECK kitsenduse tingimus REGEXP_LIKE(riik_kood, '^[A-Z]{3}$')
REGEXP_LIKE on funktsioon regulaaravaldise mustrile vastavuse kontrollimiseks.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!