[ Pobierz całość w formacie PDF ]

➥ ixCaseInsensitive]);
W alternatywnej metodzie tworzenia indeksu w programie używa się
lokalnego serwera SQL Delphi, a ściślej - jego polecenia CREATE INDEX. Aby
skorzystać z omawianego sposobu należy:
1. Umieścić dwa komponenty Query na formularzu, do którego ma być
przypisana procedura reindeksowania. Pierwszy komponent użyty zostanie do
usunięcia indeksu, w przypadku gdy takowy już istnieje. Drugie zapytanie
utworzy nowy indeks. Obie czynności można zrealizować także przy użyciu
jednego komponentu Query. Jednak rozbicie na dwa zapytania pozwoli
uprościć fragment programu, realizujący usuwanie i odtwarzanie indeksu.
2. Oba zapytania powinny wskazywać na alias lub katalog, w którym indeksy są
lub będą przechowywane.
3. Jeśli może zdarzyć się, że indeks będzie już istniał w momencie, gdy program
podejmie próbę jego utworzenia, należy wpisać polecenie SQL DROP INDEX
w polu atrybutu SQL pierwszego komponentu Query. Oto przykład takiego
polecenia:
DROP INDEX ”KLIENT.DBF”.NrKlienta
KLIENT.DBF to nazwa tabeli, na bazie której utworzono indeks,
a NrKlienta to identyfikator indeksu. Usunięcie indeksu jest konieczne, gdyż
próba utworzenia indeksu nie powiedzie się, jeśli indeks będzie już istniał.
4. W polu atrybutu SQL drugiego komponentu Query należy wpisać polecenie
CREATE INDEX. Powinno ono przyjąć następującą postać:
CREATE INDEX NrKlienta on „KLIENT.DBF” (NumerKlienta), gdzie
NrKlienta jest nazwą tworzonego indeksu, KLIENT.DBF jest nazwą tabeli, na
bazie której indeks ma być utworzony, a NumerKlienta to nazwa pola,
według którego tabela będzie indeksowana.
5. Procedura reindeksowania będzie wywoływana przyciskiem. Należy zatem
umieścić na formularzu komponent Button, nadać mu etykietę Odtwórz
indeks i przypisać następujący fragment programu:
try
Query1.ExecSQL; {usunięcie istniejącego indeksu}
except EDatabaseError do
spowodowany prawdopodobnie
chcieliśmy usunąć}
end
Query2.ExecSQL;
929
{ignorujemy komunikat,
brakiem indeksu, który
6. Po uruchomieniu aplikacji i kliknięciu przycisku Odtwórz indeks, program
powinien najpierw usunąć, a potem odtworzyć wskazany indeks.
UWAGA:
Spośród indeksów dBASE IV, Delphi obsługuje jedynie format MDX (ang.
maintained, aktualizowany).
UWAGA:
Indeksy można również tworzyć, odwołując się bezpośrednio do interfejsu API
Borland Database Engine (IDAPI). W praktyce nie ma takiej potrzeby.
Przedstawione wyżej metody tworzenia indeksów skutecznie izolują programistę
od interfejsu API BDE.
Indeksowanie w oparciu o wyrażenia
Metoda AddIndex (z opcją ixExpression) umożliwia tworzenie indeksów opartych
o wyrażenia (ang. expression indexes). Oto przykładowe wywołanie, tworzące
tego rodzaju indeks:
Table1.AddIndex(’DATEDEST’,DTOS(DataDost)+Kier’,[ixExpression]);
W
tabeli A.21 wymieniono funkcje,
w wyrażeniach indeksów typu dBASE.
które można w Delphi stosować
Tabela A.21. Funkcje, których użycie jest dozwolone w indeksach typu dBASE,
opartych na wyrażeniach.
ABS
ACOS
ALIAS
.AND.
ANSI
ASC
ASIN
AT
ATAN
ATN2
BITAND
BITLSHIFT
BITOR
BITRSHIFT BITSET
BITXOR
CEILING CENTER
CHR
COS
CTOD
DATABASE DATE
DAY
DELETED DIFFERENCE DOW
DTOR
DTOS
ELAPSED
EXP
FCOUNT
FIELD
FLDCOUNT FLOAT
FLOOR
HTOI
ID
IIF
ISALPHA ISBLANK ISLOWER
ITOH
LEFT
LEN
LIKE
LOG
LOG10
LTRIM
MAX
MEMLINES
MLINE
MOD
MONTH
OEM
.OR.
OS
PI
PROPER
PV
RAT
RECNO
RECSIZE
RIGHT
ROUND
RTOD
SECONDS SIGN
SIN
SPACE
SQRT
STR
SUBSTR
TAN
TIME
UPPER
VAL
VERSION
930
DBF
DTOC
EMPTY
FIXED
FV
INT
ISUPPER
LENNUM
LOWER
MIN
.NOT.
PAYMENT
RANDOM
REPLICATE
RTRIM
SOUNDEX
STUFF
TRIM
YEAR
Przeszukiwanie z indeksem na bazie wyrażenia
Metoda FindKey komponentu Table nie działa z indeksami typu Xbase,
opartymi na wyrażeniach. W miejsce FindKey należy zastosować GotoKey albo
jedną z metod Lookup. Odpowiedni sposób postępowania ilustruje poniższy
fragment programu, w którym stosowany jest indeks, utworzony w poprzednim
przykładzie:
Table1.SetKey;
Table1.FieldByName('DataDost').AsString:='06/06/96';
Table1.FieldByName('Kier').AsString:='Warszawa'; [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • antman.opx.pl
  • img
    \