чрезвычайно изобретательны; да что вам говорить, сами зн ае-
те). Кром е того, р а б о та этих ком понент в конечном итоге
сводится к тем же зопросом , но происходит это с моксимоль-
ной зогрузкой, что снижоет и без того м едленную роб оту
приложения.
Ну, и последним по списку (но не по зночению ) идет спе-
цифический для ІВХ TIBTransaction. Э то т ком понент — ж ивое
свидетельство того, насколько вожны транзокции в р а б о та х
б о з данных. О н инкапсулирует свой-
ство и методы раб оты с текущ ей тр а н -
закцией, каковых для семейство IBX но-
бролось столько, что их вынесли ож в
отдельный компонент.
До-до, вы правы. Хвотит розглоголь-
ствовоть, довойте что-то делать. П о -
скольку невидимых ком понент у нос б у-
дет предостаточно, то реком ендую от-
вести им отдельный T D ataM od ule. Вы-
таскивоем но него
TlBDataBase, TIB-
Transaction, TIBQuery
и
TDataSource.
Д войным кликом по
TlBDataBase
вызы-
ваем уже упом иноем ы е парам етры с о -
единения и настраиваем их но н ош у базу. Ус-
танавли ваем свойства
D e f a u lt T r a n s a c t io n
(вы бираем н аш у
IBTransaction
) и
C o n n e c te d
(true).
Устоновливоем свойство
D a ta B a se
для
IBQuery
и
D a ta S e t
для
DataSource.
Все почти
готово, осталось только узноть, кок вы спро-
вились с выполнением дом ош него задония. Для
Этого вы бироем ком понент IB Q u e ry l (или кок
там вы его обозвали) и кликоем по троеточию
рядом со свойством
SQL.
В появивш емся ре-
докторе созд аем первый простенький зоп р ос
но выдачу, нопример, всех песен, которы е есть
в нош ей коллекции. Для этого вы бираем т а б -
лицу
song
и жмем
Add table to SQL,
потом по-
ле
song name
и —
Add field to SQL
(рис. 2). С охр оня е м про-
ект, после чего добовляем в пункт
uses
гловной ф ормы файл
модуля данны х и м одули
DB, IBQuery, IBDatabase, IBCus-
tomDataSet.
Теперь ставим на ф орм у кокой-нибудь класси-
ческий, «базовый» контрол
DBCrid
и устоновливоем ем у свой-
ство
DataSource
(в вы подою щ ем списке будет только D a ta -
Source из наш его модуля донных). И сомый последний этап —
кнопко. Код для нее будет составлять ож целую строку:
D a ta M o d u le l. I B Q u e r y l. O pen ;
Затаи в дыхоние, зопускоем н ош у программ у, жмем кно-
почку и.
.. У р а (рис. 3)! Ц еной одной строки кодо мы создо-
ли полноценное прилож ение для роботы с б а зо й данных.
Если у вое не «уро», ещ е р о зо к пере читайте преды ду-
щий о б з о ц и проверьте, ток ли вы все делоли, кок нодо.
Если все р о в н о не «уро», дож е после п о в то р н о го чтения
целой статьи — пиш ите. Чем см огу — помогу. Ах, до. П р о -
верьте, зо пущ ен ли у вас Firebird — в первы й р о з я на
этом ж естоко прокололся, до сих п о р в кр оску вгоняет, кок
вспом ню © .
Кстати, ещ е реком ендую обротить свое вним оние но с о -
ответствую щ ие форумы: конф еренцию Б азы н о
Мастерах
DELPHI
(http://www.delphimast
0
r.ru/forum/bd.html)
и Ф о р у м Inter-
b ase на
SQL.ru
Д о сих пор мы «р аб отал и» (именно так — в кавычкох, п о -
скольку р а б о то й без кавычек это пока что нозвоть трудно)
с б озо й с пом ощ ью мышки: ностраи воли компоненты, ф о р -
м ировали запросы и т.д. Естественно, такой подход удобен
только в том случае, когдо наш за п р о с н о протяж ении р а -
боты приложения не изменяется. С лучой довольно редкий,
м ож но сказоть, нетипичный. А типичный случай — когда ли-
б о изменяется сом запрос, л и бо за п р о с остается неизм ен-
ным, но изменяются записи, из которы х он получает донные.
Н априм ер, переделоем нош зо п р о с так, чтобы он получал
список дисков. Н о но этот р а з представим это двумя с тр о -
ками кодо:
D a ta M o d u le l. I B Q u e r y l. S Q L . C l e a r ;
D a t a M o d u le l.IB Q u e r y l.S Q L .A d d ( 'S E L E C T * f r o n t e d ') ;
К оторы е нодо вставить перед уже сущ ествую щ ей строкой
в обр аботчике ножотия на нош у единственную кнопку. До,
и
ещ е поставьте для свойство
A c t i v e
ком поненто
IB Q u e r y l
значение
True.
А теперь запустите прилож ение и полю буй-
тесь результатом. С к о р е е всего, вы им недовольны © , кок
был в свое время недоволен и я. Д ело в том, что станд арт-
ный D B G rid очень уж беден н о визуольные кросоты и в о з-
м ож ности — вам придется сам остоятельно дописывоть ему
гард ероб и несессер, начов с отслеживания клика по заго -
ловку колонки (сомоя естественная опероция, которую при-
меняют, ж елоя кок-то отсор тировать
полученные донные). Так что реком ен-
дую подыскать себе какой-нибудь б е с-
платный компонент, который не стро-
дает такими недостатками. Л и чно я ис-
пользую D B G rid E h из н а б о р о
EhLib,
но
вом м ож ет подойти что-нибудь другое.
Сходите-ка при случое н о
torry.ru
и по-
см отрите — может, чего и найдете.
М ы же возвращ аем ся к наш им бо-
раном , которы е зопр осы © . Кок уже
говорилось, за п р о с — это н о б о р ин-
струкций н а языке SQ L, которы й начи-
нается с инструкции и зокончивоется
точкой с запятой, между которым и м огут н а -
ходиться оргументы и предложения с о своими
аргументами. Рассм отрим их детальнее на при-
м ере уже зноком ой нам инструкции
s e l e c t .
Кок вы уже, наверное, успели понять, о н о ис-
пользуется для получения донных из бозы. П о -
сле соб ственн о имени ком анды зописы ваю т
список полей, из которы х над о извлечь инф ор-
м ацию . Д альш е следует обязательная дирек-
тиве
fro m
и список таблиц, из которы х будут
отбираться донные. Если из таблицы нужны все
данные, то список полей м ож но зом енить сим-
волом * (звездочко). Токим обр азом , исполь-
зованны й нам и за п р о с
S E L E C T * fr o n te d ;
следует интерпретировать кок «Извлечь все донные из т а б -
лицы C D».
Если данны е н ад о отсо р ти р о во ть по коком у-то пол ю (ин-
ф орм аци я в б а з е донны х ноходится в н е со р ти р о ван н о м ви-
де, помните?), используется директива
o r d e r b y с
посл е-
дую щ им н о м е р о м поля, по ко то р о м у б удет производиться
с ор ти р овк а (нум ероция начинается с единицы). Для изм ене-
ния порядко сортировки использую тся пар ам е тр ы
a s c
(сор-
ти р овка по возростони ю ; используется по умолчонию ) и
d e -
s c
(сор тировко по убывонию). П риведенны й з а п р о с выве-
дет список нозваний песен н аш ей (то есть, м оей — во ш о
ж е долж но быть другой © ) бозы вместе, сор ти р ованны й по
врем ени звучония песни о т наим еньш ей к сом ой длинной:
S E LE C T so n g_n a m e , s o n g _ le n g t h FROM song ORDER BY 2
DESC;
Теперь россм отри м последний на сегодня пример. Д оп ус-
тим, ном нужны не все записи, а только определенные. Ну,
ноприм ер, не все песни, а только те, которы е поет опред е-
ленный исполнитель. Д елается это ток:
S E L E C T song_nam e FROM s o n g , a r t i s t WHERE so n g a r t i s t
= a r t i s t _ i d ;
Здесь мы использовали ещ е од но предложение —
WHERE,
к о то р о е производит о тб о р зописей, соответствую щ их при-
веденному условию. О б р а т и те внимание, что в отличие от
Delphi, для S Q L им ею т зночение пробелы перед и после зна-
ко ровенства. То есть их ноличие © .
В следую щ ий р о з мы б ол ее детально россм отри м возм ож -
ности языка S Q L , а такж е позноком им ся с некоторым и «вкус-
ностями» технологии IBX.
В ош е д ом аш н ее зод оние — придумать, как получить спи-
сок песен, которы е находятся но конкретном диске. Несколь-
ко подскозок. Во-первых, если в розных тоблицох ф игуриру-
ю т поля с одинаковыми назвониями, перед ними следует пи-
сать нозвоние таблицы и ставить точку (подобно тому, как в
Delphi реали зовон доступ к м етодам класса). Во-вторых, ес-
ли нужно в одном зоп р осе проверить несколько условий, они
объединяются с пом ощ ью and.
Tatfe*
jJSLxj
SQL.
ARTIST
select SONG NAME (tom
SONG
; CD
01 -1
‘ ;
fsONG ID
і
ISO G
LEN
It • Ш й б ж TT
FQ.iVc г:'"-':':'.-
ESS
Iat»
Ш
I
-'Cancel-
î
-]
M«fc
j
ТІНЬ Рис.
r ü S ü t
ліаїлУ
SONG.
.NAME
А.
>
Первая песня в коллекции
Вторая песня
Ну и третья
j Bilotfi
1
Ц
;
Рис.З
(Продолжение следует)
предыдущая страница 43 Мой Компьютер 2004 29 читать онлайн следующая страница 45 Мой Компьютер 2004 29 читать онлайн Домой Выключить/включить текст