4.F. Dodawanie do tabeli unikatowego indeksu opartego na dwóch polach
Private Sub cmdDodajUnikatowyIndeks_Click() Dim mojaDB As DAO.Database Set mojaDB = CurrentDb
mojaDB.Execute "ALTER TABLE tblSzko³y "
& "ADD CONSTRAINT indeks UNIQUE(IdentSzko³y, Rejon);" mojaDB.Close End Sub
Po uruchomieniu procedury w przyk³adach 4.4.E oraz 4.4.F tabela tbiszko³y zawiera dwa indeksy przedstawione poni¿ej:
1 f Indeksy: tblSzko³y
Nazwa indeksu
| Nazwa pola Porz¹dek sortowania -*.]
jffHB
: IdentSzko³y
Rosn¹co """"!
: Rejon
Rosn¹co
primKlucz
IdentSzko³y
Rosn¹co
—
W³aœciwoœci indeksu
Podstawowy Nie Unikatowy Tak Ignoruj zerowe Nie
Nazwa tego indeksu, Ka¿dy indeks mo¿e u¿yæ maksymalnie 10 pól,
Usuwanie kolumny wchodz¹cej w sk³ad indeksu
Aby usun¹æ kolumnê, która wchodzi w sk³ad indeksu, wykonaj nastêpuj¹ce czynnoœci:
Zastosuj klauzulê drop constraint, aby usun¹æ indeks. Pamiêtaj, ¿eby podaænazwê indeksu, który chcesz usun¹æ.
Zastosuj klauzulê drop column, aby usun¹æ okreœlon¹ kolumnê tabeli. Musiszprzy tym podaæ nazwê kolumny (pola), które chcesz usun¹æ z tabeli.
Obie klauzule nale¿y zastosowaæ w poleceniu alter table. Nastêpuj¹ca procedura usuwa kolumnê o nazwie Rejon z tabeli tblSzko³y. Dla przypomnienia, proce-
532
Programowanie w Access 2(
dura w przyk³adzie 4.4.F wczeœniej w tym rozdziale doda³a indeks z³o¿ony oparty
dwóch polach: IdentSzko³y oraz Rejon.
Przyk³ad 4.4.G. Usuwanie pola bêd¹cego czêœci¹ indeksu
Private Sub cmdUsuwaniePolaZIndeksu_Click() Dim mojaDB As DAO.Database Set mojaDB = CurrentDb
With mojaDB
.Execute "ALTER TABLE tblSzko³y DROP CONSTRAINT indeks; .Execute "ALTER TABLE tblSzko³y DROP COLUMN Rejon;" .Close End With End Sub
Usuwanie indeksu
Zastosuj klauzulê drop constraint, aby usun¹æ indeks. Nale¿y przy tym podaæ nazwê indeksu. Nastêpuj¹ca procedura usuwa klucz podstawowy z tabeli tblSzko³y
Przyk³ad 4.4.H. Usuwanie indeksu
Private Sub cmdUsuwanieKlucza_Click() Dim mojaDB As DAO.Database Set mojaDB = CurrentDb
mojaDB.Execute "ALTER TABLE tblSzko³y DROP CONSTRAINT primKlucz; mojaDB.Close End Sub
Po uruchomieniu procedur w przyk³adach 4.4.G oraz 4.4.H okno Indeksy uruchomione z tabeli tblSzko³y powinno byæ puste.
Ustawianie wartoœci wyjœciowej dla okreœlonego pola w tabeli
Je¿eli podasz wartoœæ wyjœciow¹ dla danego pola tabeli, to za ka¿dym raze¹ gdy nowy rekord jest dodany do tabeli, wartoœæ wyjœciowa pojawi siê w tym polu, poi
Programowanie przy u¿yciu jêzyka DDL
533
warunkiem ¿e u¿ytkownik nie wpisa³ innej wartoœci. Korzystaj¹c z jêzyka DDL, mo¿esz ustaliæ wartoœæ pocz¹tkow¹ dla danego (istniej¹cego ju¿) pola tabeli przy u¿yciu klauzuli set default. Sk³adnia wygl¹da nastêpuj¹co:
ALTER TABLE nazwaTabeli ALTER [COLUMN] nazwaPola SET DEFAULT war-toœæPocz¹tkowa;
Zwróæ uwagê, ¿e w powy¿szym zapisie czêœæ polecenia obiêta nawiasem kwadratowym [COLUMN] jest opcjonalna.
Przyk³ad 4.4.1. Ustawianie wartoœci pocz¹tkowej dla pola tabeli
Private Sub cmdUstawDefault_Click() Dim con As ADODB.Connection Dim sql As String
Set con = CurrentProject.Connection
sql = "ALTER TABLE tblSzkoly ALTER Miasto SET DEFAULT Lublin" With con
.Execute sql .Close End With
Set con = Nothing End Sub
Po uruchomieniu procedury w przyk³adzie 4.4.1 wyjœciow¹ wartoœci¹ w polu
Miasto jest Lublin:
534
Programowanie w Access |
tblSzkoly; Tabela
Nazwa pola
Ident5zko³y NazwaSzko³y Miasto „ RokZa³o¿enia
Typ danych
Tekst
I Tekst Tekst' Data/Godzina
Opis
W³aœciwoœci pola
25
Ogólne Odnoœnik Rozmiar pola Format
Lublinl
Maska wprowadzania Tytu³
Nie
Wartoœæ domyœlnaRegu³a poprawnoœciKomunikat o b³êdzieWymaganeZerowa d³ugoœæ dozwolon. NieIndeksowane Nie
Kompresja Unicode Nie
Modyfikacja wartoœci pocz¹tkowej oraz wielkoœci przyrostu dla pola identyfikacyjnego
Kiedy tabela zawiera pole identyfikacyjne o typie danych Autonumerowame, mo¿na ustawiæ wartoœæ pocz¹tkow¹ (seed) oraz wielkoœæ przyrostu (increment) dla teso pola Seed jest pocz¹tkow¹ wartoœci¹ w danym polu, a increment jest liczb¹ dodan¹ do wartoœci pocz¹tkowej (seed) w celu uzyskania nowej wartoœæ, dla nastêpnego rekordu Je¿eli pominiesz te dane, to wartoœæ pocz¹tkowa oraz wielkoœæ przyrostu be.-d¹ automatycznie równe 1. Korzystaj¹c z jêzyka DDL, mo¿esz zmieniæ wartoœæ pocz¹tkow¹ oraz wielkoœæ przyrostu dla pola z typem danych Autonumerowame przy u¿yciu nastêpuj¹cych poleceñ:
ALTER TABLE NazwaTabeli ALTER COLUMN NazwaPola AUTOINCREMENT (seed, increment)
albo
ALTER TABLE NazwaTabeli ALTER COLUMN NazwaPolc. COUNTER (seed, increment)
I Programowanie przy u¿yciu jêzyka DDL
535
albo
ALTER TABLE NazwaTabeli ALTER COLUMN NazwaPola IDENTITY (seed, increment)
Procedura w przyk³adzie 4.4.J zmienia wartoœæ pocz¹tkow¹ pola idpracownika w tabeli Pracownicy na 1,000.
Przyk³ad 4.4.J. Zmiana wartoœci pocz¹tkowej pola identyfikacyjnego