MS Access 2003 Kontrolowanie poprawności danych Grzegorz Domaoski
Prosty projekt tabeli Odbiorcy Tabela która ma zdefiniowane nazwy pól (+domyślny typ danych jakim jest tekst) oraz klucz jest gotowa do wprowadzania danych:
Prosty projekt tabeli Odbiorcy Ponadto Ustawiony klucz główny na kolumnie NIPOdbiorcy uniemożliwi dodanie dwóch odbiorców o tym samym NIPie. Próba zduplikowania NIPu Zduplikowany NIP kończy się komunikatem:
Problem 1 Brak konsekwencji w prowadzaniu statusu ten sam status ma dwa określenia: stan standardowy Zastosuj symbole umowne, np.: 1 vip, 2 standardowy, 3 -. Ponadto zablokuj możliwość wprowadzania liter w pole Status! Powyższe cele można osiągnąć poprzez prawidłowe dobranie typów danych do pola.
Określanie typu danych Dostępne typy danych Typ danych Tekst Nota Liczba Data/Godzina Walutowy Autonumerowanie Tak/Nie Obiekt OLE Hiperłącze Kreator odnośników Typ przechowywanych danych Znaki alfanumeryczne (do 255 znaków) Znaki alfanumeryczne (do 65 536 znaków) Wartości liczbowe Data oraz czas Wartości pieniężne Automatyczna numeracja kolejnymi liczbami naturalnymi Wartości logiczne: Tak/Nie, Prawda/Fałsz Dowolny obiekt na przykład arkusz, dokument, obrazek, dźwięk Link do zasobu internetowego Pole wyszukujące wartości z innej tabeli lub kwerendy
Określanie typu danych Definiowanie/Zmiana typu danych: Klikamy pole Typu danych pola dla którego chcesz zmienid typ danych Kliknij strzałkę i z rozwijanej listy wybierz pożądany typ danych
Problem rozwiązany Po zdefiniowaniu dla pola Status typu danych jako Liczba, próba wprowadzenia znaków alfabetu Błędna wartośd statusu kończy się komunikatem ostrzegawczym o niezgodności typu danych:
Problem 2 Można wprowadzić niepoprawny NIP odbiorcy składający się z więcej niż 10 cyfr (13 znaków). Niepoprawny NIP odbiorcy Wystarczy zablokować możliwość wprowadzenia więcej niż 13 znaków. Sprecyzuj właściwości związane z rozmiarem pola
Określanie właściwości związanych z rozmiarem pola Rozmiar pola dla pól tekstowych określa ile znaków można wprowadzić w dane pole Rozmiary dla liczbowych typów danych rozmiar pola precyzyjnie definiuje typ liczby: Ustawiony rozmiar pola Zakres Miejsca dziesiętne Bajt Od 0 do 255 Nie ma 1 bajt Rozmiar zaj. pamięci Liczba całkowita Od - 32768 do 32768 Nie ma 2 bajty Liczba całkowita długa Od -2147483648 do 2147483648 Nie ma 4 bajty Podwójna precyzja Od -1,797x10 308 do 1,797x10 308 15 8 bajtów Pojedyncza precyzja Od -3,4x10 38 do 3,4x10 38 7 4 bajty Dziesiętny Precyzja od 1 do 28 15 8 bajtów Powinno się określad rozmiar pola jako najmniejsze z możliwych, gdyż w ten sposób oszczędza się miejsce na dysku a także przyspiesza to działanie Accessa.
Określanie właściwości związanych z rozmiarem pola Istnieją pola tekstowe gdzie: z góry znana jest liczba znaków: Nazwa Pola Przykład danych Ustawiony rozmiar pola NIPOdbiorcy 123-345-22-23 13 TelefonStacjonarny (046) 344-23-23 15 KodPocztowy 96-503 5 konieczne jest określenie liczby znaków techniką na oko + coś jeszcze Nazwa Pola Przykład danych Ustawiony rozmiar pola NazwaOdbiorcy Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie Miejscowosc Sochaczew 50 100
Określanie właściwości związanych z rozmiarem pola Przy ustawieniu rozmiaru pola na dziesiętny (przy liczbowych typach danych) konieczne jest określenie maksymalnej liczby przechowywanych cyfr po prawej stronie separatora dziesiętnego czyli skali. Tu wpisujemy liczbę przechowywanych cyfr po prawej stronie separatora dziesiętnego Przykład: Dla pola mającego przechowywać oceny (z dokładnością do jednego miejsca po przecinku) konieczne jest ustawienie właściwości skala na 1. Tu podajemy całkowitą liczbę cyfr, która może byd zapisana zarówno po lewej, jak i po prawej stronie przecinka dziesiętnego.
Problem rozwiązany Blokada klawiatury, uniemożliwiająca wprowadzenie więcej niż 13 znaków dla pola NIPOdbiorcy (pole typu Text o rozmiarze 13): Blokada klawiatury Wprowadzenie liczy przekraczającej rozmiar pola (rys. obok), powoduje wyświetlenie poniższego komunikatu: Próba wprowadzenia dla pola Status (jest to pole typu Liczba o rozmiarze: Bajt) liczby większej niż 255
Problem 3 Niekompletne dane, uniemożliwiające nawiązanie stosunków handlowych nie wprowadzona nazwa odbiorcy Należy wymusić prowadzenie nazwy odbiorcy. Ten i podobne problemy rozwiążesz poprzez wymuszenie wprowadzenia danych
Wymuszenie wprowadzenie danych Właściwość Wymagane określa, czy w polu trzeba koniecznie wpisać wartość Klikamy pole, dla którego chcesz zmienid właściwośd Z rozwijanej listy przy właściwości Wymagane wybieramy Tak
Problem rozwiązany Próba zapisu poniższego rekordu Pominięta nazwa odbiorcy kończy się poniższym komunikatem
Problem 4 Po wymuszeniu konieczności zdefiniowania nazwy odbiorcy, sprytny użytkownik może wprowadzić parę spacji w myśl zasady spacje to także dane. Próba zapisu poniższego rekordu zakończy się sukcesem: Wprowadzone spacje Nie pozwól wprowadzić samych spacji Wymuś prowadzanie ciągu znaków różnych od spacji
Wymuszenie prowadzanie ciągu znaków różnych od spacji Właściwość Zerowa dł. dozwolona określa, czy można do pola tekstowego wpisać wartość spacji, dla odróżnienia jej od wartości null. Klikamy pole, dla którego chcesz zmienid właściwośd Z rozwijanej listy przy właściwości Zerowa dł. dozwolona wybieramy Nie
Problem rozwiązany Próba zapisu poniższego rekordu Wprowadzone spacje kończy się komunikatem:
Problem 5 Podanie 13 znakowego NIPu odbiorcy ale sprzecznego z obowiązującym standardem w Polsce: Błędny nip Wymuś wprowadzanie 3 cyfr, kreski, 3 cyfr, kreski, 2 cyfr, kreski i 2 cyfr. Z pomocą przychodzą maski wprowadzania
Określenie masek wprowadzania Maska wprowadzania pozwala zdefiniowanie szablonu, według którego wprowadzane są informacje do pola. Niektóre znaki używane w maskach Symbol Opis 0 Cyfra (od 0 do 9, pozycja wymagana; znaki plus [+] i minus [-] nie są dozwolone). L & Przykłady masek: Litera (od A do Z, pozycja wymagana). Dowolny znak lub spacja (pozycja wymagana). \ Sprawia że następny znak po nim jest wyświetlany nie jest interpretowany jako symbol Nazwa pola Definicja maski wprowadzania Przykład wartości TelefonStacjonarny (000) 000-00-00 (046) 845-44-44 KodPocztowy 00-000 96-503 NIPOdbiordcy 000-000-00-00 864-345-23-74
Określenie masek wprowadzania Definiowanie maski wprowadzania Klikamy pole, dla którego chcesz zdefiniowad maskę Tu wpisuje się maskę Można też kliknąd trzy kropeczki wtedy uruchomi się kreator z którego można wybrad gotową maskę
Problem rozwiązany Wprowadzenie NIPu ogranicza się do wprowadzeniu 10 cyfr. Klawiatura jest blokowana przy próbie wprowadzenia liter, myślników
Problem 6 Założenie: Odbiorca może mied jeden z trzech statusów: - 1 (VIP) - 2 (standardowy) - 3 ( ) Możliwość wprowadzenia wartości statusu wykraczającego poza politykę przedsiębiorstwa: Błędna wartośd statusu Ogranicz zakres licz możliwych do wprowadzenia Wykorzystaj reguły sprawdzania poprawności pola
Reguła sprawdzania poprawności pola Reguła sprawdzania poprawności pola jest używana do sprawdzania wartości wprowadzonej do pola w momencie opuszczania pola przez użytkownika Wprowadzanie reguły: Klikamy pole, dla którego chcesz określid regułę Tu wpisujemy regułę spr. poprawności Tu wpisujemy tekst który zostanie wyświetlony gdy użytkownik będzie próbował wprowadzid wartośd niezgodną z regułą poprawności
Reguła sprawdzania poprawności pola W regułach można stosować m.in. następujące operatory: Punktowe (Or lub In): 1 Or 2 Or 3 In(1; 2; 3) Obie powyższe reguły pozwolą wprowadzid jedną z trzech wartości: 1, 2, lub 3 Zakresu wartości (>, <, >=, <= lub Between And): >= 1 and <=3 Between 1 and 3 Obie powyższe reguły pozwolą wprowadzid wartości z zakresu od 1 do 3 włącznie z 1 i 3, np. 2 bądź wartośd dziesiętną 2,4.
Reguła sprawdzania poprawności pola Przykłady reguł: Ustawienie właściwości Reguła spr. poprawności Ustawienie właściwości Tekst reguły spr. poprawności <>0 Należy wprowadzid wartośd różną od zera. 0 Or >100 Wartośd musi byd równa 0 lub większa od 100. <#2000-01-01# Należy wprowadzid datę sprzed roku 2000. >=#2000-01-01# And <#2001-01-01# Between #2000-01-01# And Date() In ( PL, UK ) Należy wprowadzid datę z roku 2000. Należy wprowadzid datę z przedziału 2000-01-01 a dzisiejsza data. Należy wprowadzid skrót PL lub UK. Daty występujące w wyrażeniach sprawdzających poprawnośd są umieszczane pomiędzy znakami #
Problem rozwiązany Wprowadzenie statusu różnego od 1, 2 lub 3 Błędna wartośd statusu kończy się komunikatem:
Problem 7 Założenie: Odbiorcami firmy są przede wszystkim firmy z województwa mazowieckiego. Firma chce rozszerzyć swoją działalność na inne województwa dlatego priorytetowo są traktowani odbiorcy z poza województwa mazowieckiego, tylko oni mogą mieć status VIPa. Możliwość przyznania odbiorcy z województwa mazowieckiego statusu VIPa Status niezgodny z obowiązującą polityką firmy Sprawdzaj poprawność rekordu jako całości Wykorzystaj regułę sprawdzania rekordu
Reguła sprawdzania rekordu Reguła sprawdzania rekordu kontroluje możliwość zapisania całego rekordu. W odróżnieniu od reguł sprawdzania pola reguły sprawdzania rekordów mogą się odwoływać do innych pól w tej samej tabeli. Jest to przydatne, kiedy trzeba porównać wartości w różnych polach Zasady tworzenia Obowiązują te same operatory co przy reguła sprawdzania pola W nawiasach kwadratowych podajemy nazwy pól do których to wartości odnosi się reguła
Reguła sprawdzania rekordu wprowadzanie reguły Klikamy prawym przyciskiem myszki na nagłówek tabeli Z menu wybieramy Właściwości Tu wpisujemy regułę spr. poprawności Tu wpisujemy tekst który zostanie wyświetlony gdy użytkownik będzie próbował wprowadzid wartośd niezgodną z regułą poprawności
Reguła sprawdzania rekordu Przykłady reguł: Ustawienie właściwości Reguła spr. poprawności [DataDostawy]<=[DataZam ówienia] [DataZwrotu]<=[DataWypoz yczenia]+30 Ustawienie właściwości Tekst reguły spr. poprawności Data dostawy nie może byd wcześniejsza niż data zmówienia Data zwrotu nie może byd późniejsza niż 30 dni od daty wypożyczenia By nałożyć regułę: VIPami mogą być tylko odbiory którzy są poza województwa, mazowieckiego, należy zaklikać: ([Wojewodztwo]="mazowieckie" And [Status]<>1) Or ([Wojewodztwo]<>"mazowieckie" And [Status] In (1,2,3)) Kiedy odbiorca jest z województwa mazowieckiego jego status musi byd różny od 1 (1=vip) Jeżeli odbiorca jest z innego województwa niż mazowieckie może mied dowolny status Ponieważ założenia reguły nie podaja nam definicji pozostałych statusów, bardzie optymalny zapis reguły to: ([Wojewodztwo]="mazowieckie" And [Status]<>1) Or ([Wojewodztwo]<>"mazowieckie")
Problem rozwiązany Próba wprowadzenia statusu VIPowskiego dla odbiorcy z województwa mazowieckiego powoduje wyświetlenie komunikatu: