Historia wymaga pasterzy, nie rzeźników.

Execute "ALTER TABLE Pracownicy " _
& "ALTER COLUMN Idpracownika COUNTER (1000);" mojaDB.Close End Sub
Po uruchomieniu procedury w przyk³adzie 4.4.J otwórz tabelê pracownicy i dodaj do niej kilka nowych rekordów. Zwróæ uwagê, ¿e numeracja nowych rekordów zaczyna siê od tysi¹ca (1000).
Definiowanie indeksów oraz kluczy podstawowych
W Microsoft Access indeksy przyœpieszaj¹ proces wyszukiwania oraz sortowania rekordów. Pola tabeli, które s¹ czêsto u¿ywane w poszukiwaniach rekordów oraz pola, wed³ug których zamierzasz sortowaæ, powinny posiadaæ indeks. Indeks mo¿na utwo­rzyæ w nowej lub istniej¹cej ju¿ tabeli. Indeks mo¿e sk³adaæ siê z jednego lub wiêcej pól. W tym podrozdziale dowiesz siê, w jaki sposób u¿ywa siê jêzyka DDL w procedurach VBA do definiowania indeksów oraz kluczy podstawowych.
Tworzenie tabel z indeksami
Indeks mo¿na utworzyæ podczas tworzenia nowej tabeli. W tym celu nale¿y sko­rzystaæ z klauzuli constraint wewn¹trz polecenia create table. Procedura w przyk³adzie 4.5.A tworzy now¹ tabelê o nazwie Dostawcal z unikatowym indeksem
0 nazwie idxNazwaDostawcy na podstawie pola NazwaDostawcy.
536
Programowanie w Access 2000
S3 frrnPoznaiDDLS: Indeksy i klurze podstawowe
Indeks
Indeks: Primary Key (WITH PRIMARY)
 
Indeks (wielopolowy)
Indeks nie dopuszczj¹cy wartoœci zerowych (NULL) CA1TH DISALLCWNULL)
 
Klucz podstawowy (pojedynczyMelopolowy)
Indeks dopuszczj¹cy wartoœci NULL w polu klucza CWITH IGNORE NULL)
Usuwanie ndeksu
Rysunek 4.5. Definiowanie indeksów i kluczy podstawowych Przyk³ad 4.5.A. Tworzenie tabeli z indeksem
Private Sub cmdIndeksPojedynczy_Click() Dim mojaDB As DAO.Database Dim mojaTabela As String Set mojaDB = CurrentDb
 
On Error GoTo Obs³uga_B³êdu mojaTabela = "Dostawcal"
mojaDB.Execute "CREATE TABLE " & mojaTabela & "(IdDostawcy INTEGER, " _ & "NazwaDostawcy CHAR (30), " _ & "IdProduktu CHAR (12), " _ & "NazwaProduktu CHAR (19), " _ & "CenaProduktu MONEY, " _ & "CONSTRAINT idxNazwaDostawcy UNIQUE " & "(NazwaDostawcy));" mojaDB.Close Exit Sub Obs³uga_B³êdu:
MsgBox Err.Number & ":" & Err.Description End Sub
Rezultat procedury 4.5.A przedstawiony jest poni¿ej:
-v ■
Programowanie przy u¿yciu jêzyka DDL
537
g Dostawca!: Tabela
Typ danych j
Liczba Tekst Tekst Tekst Walutowy
Opis
 
 
Podstawowy Nie Unikatowy Tak Ignoruj zerowe Nie
Ogólne
Odnoœnik
Rozmiar poia '■■ Format
Miejsca dziesiêtne Maska wprowadzania Tytu³
Wartoœæ domyœlna Regu³a poprawnoœci Komunikat o b³êdzie Wymagane Indeksowane
Liczba ca³kow
Auto
Nie Nie
Porz¹dek sortowania
Rosn¹co
dxNazwaDostawcy NazwaDostawcy
W³aœciwoœci indeksu
; Nazwa tego indeksu. Ka¿dy indeks mo¿e u¿yæj maksymalnie 10 pól.
Aby dodaæ indeks do istniej¹cej ju¿ tabeli, skorzystaj z polecenia create index. W procedurze poni¿ej dodaj indeks o nazwie idxMiasto do tabeli tbiszko³y.
Sub Pojedynczyldxl()
Dim mojaDB As DAO.Database Dim mojaTabela As String Set mojaDB = CurrentDb
On Error GoTo Obs³uga_B³êdu mojaTabela = "tblSzko³y"
mojaDB.Execute "CREATE INDEX idxMiasto ON " & mojaTabela _ & "(Miasto) ;" mojaDB.Close Exit Sub Obs³uga_B³êdu:
MsgBox Err.Number & ":" & Err.Description End Sub
Rezultatem procedury w przyk³adzie 4.5.B jest utworzenie indeksu o nazwie idxProdukt na podstawie dwóch pól: idProduktu oraz NazwaProduktu.
Przyk³ad 4.5.B. Tworzenie indeksu opartego na dwóch polach tabeli
Private Sub cmdIdxWielopolowy_Click()
Programowanie w Access 20
Dim mojaDB As DAO.Database Dim mojaTabela As String Set mojaDB = CurrentDb
On Error GoTo Obs³uga_B³êdu mojaTabela = "Dostawca2" mojaDB.Execute "CREATE TABLE " & mojaTabela & "(IdDostawcy INTEGER, " _ & "NazwaDostawcy CHAR (30), " _ & "IdProduktu CHAR (12), " _ & "NazwaProduktu CHAR (19), " _ & "CenaProduktu MONEY, " _ & "CONSTRAINT idxProdukt UNIQUE " _ & "(IdProduktu, NazwaProduktu))J" mojaDB.Close Exit Sub
Obs³uga_B³êdu:
MsgBox Err.Number & ":" & Err.Description
End Sub
 
Nazwa poj¹ IdProduktu NazwaProduktu
Rosn¹co Rosn¹co
sortowania
ñ
W³aœciwoœci indeksu
podstawowy Me Unikatowy Ta^ Ignoruj zerowe Nie
Nazwa tego irdeksu. Ka¿dy indeks mo¿e u¿yæi riaksymalnie 10 poi.
Przyklad4,.C. Tworzeñ, ^-podstawowego opartego najednympo,
Private Sub cmdPojedynczyKluczPodstawowy._Click() Dim mojaDB As DAO.Database Dim mojaTabela As String Set mojaDB = CurrentDb
<*mm
[programowanie przy u¿yciu jêzyka DDL
539
On Error GoTo Obs³uga_B³êdu mojaTabela = "Dostawca3"
mojaDB.Execute "CREATE TABLE " & mojaTabela _ & "(IdDostawcy INTEGER, " & "NazwaDostawcy CHAR (30), " _ & "IdProduktu CHAR (12), " _ & "NazwaProduktu CHAR (19), " _ & "CenaProduktu MONEY, " _ & "CONSTRAINT idxPrimary PRIMARY KEY " & "(IdDostawcy));" mojaDB.Close Exit Sub |)bs³uga_B³êdu:
MsgBox Err.Number & ":" & Err.Description [End Sub