Чтение онлайн

на главную

Жанры

Cat W

Шрифт:

– А пока потренируйся, введи еще пару таблиц, пока это без разницы, ну что-то типа «Коты Герои»(кличка, возраст, степень героизма, аппетит и т.д.) и т.д.

* А как?

– Начинай читать книги по SQL. Я предлагал только играться, (и сделать инструмент для игры) а правила игры вспоминай сам.

– А мне, пора возвращаться к своим, ко… нет к баранам.

Продолжаем клепать ББД

– Итак закладка Structure DB показывает

имеющиеся в сей базе таблицы.

– Но, интересно узнать из каких полей состоит таблица.

– Именно эту информацию будет показывать CheckListBox1

* Но, кроме имен полей, хочется знать их типы, размеры и прочее.

– В числе прочей, эта информация появится на накладке Result, но как сказал классик «в очередь, с*ны дети, в очередь».

– Так, мне этот бардак надоел, делаем так, как я привык. Во-первых вставляем новый модуль:

unit gv; // Глобальные переменные

interface

var

 Path : string; // Путь к исполняемой программе

implementation

end.

* Да, знатный модуль.

– Смейся, смейся. При помощи этого модуля, я привык такой фокус делать, закачаешься, но сейчас это не к месту.

– Второе: делаем обработчик создания формы:

10 procedure TFMain.FormCreate(Sender: TObject);

20 begin

30 Path := ExtractFileDir(ParamStr(0)) + '\';

40 OpenDialog1.InitialDir := Path;

50 PageControl1.ActivePage := TabSheet1;

60 end;

– Строка 30 – инициализация пути к запускаемой программе.

* А для чего?

– Ну для начала изменим procedure TFMain.NewDB1Click:

150 IBDatabase1.DatabaseName:= Path + fn;

* А зачем? И так все хорошо работало.

– Хорошо, да не очень. Если при сохранении указывается только имя файла, операционная система записывает его в текущую папку, если это папка, откуда программа запускалась, то все нормально, но если со времени запуска программы пользователь заходил в другие папки (текущая папка сменилась), то потом, найти созданный файл, большая проблема. И совсем другое дело, когда мы даем команду записать файл в конкретную папку.

* И для этого заводить специальный модуль.

– Не ворчи, сказано, это моя привычка.

– Строка 40 Инициализация текущей папки для диалога открытия файла.

– По умолчанию диалог откроется с Моих Документов, что часто очень не удобно…

– Строка 50 Делаем активной первую закладку нашей программы, независимо от того, на которой мы остались при запуске компиляции.

* Ух, что-то я за… работался.

– Ладно, давай прервемся.

«Продолжение следует»

А вот и продолжение

– Ну, с новыми силами…

– Для ListBox1 делаем обработчик двойного клика. Т.е. по этому событию должно отобразится содержимое соответствующей таблицы.

procedure TFMain.ListBox1DblClick(Sender: TObject);

var

 kod : integer;

begin

ShowFields;

end;

010 procedure ShowFields;

020 var

030 n : integer;

040 begin

050 CLBox1.Clear;

060 with DataModule2.IBSQL1 do

070 begin

080 Close;

090 SQL.Clear;

100 SQL.Add('select R.RDB$FIELD_NAME from RDB$FIELDS F, RDB$RELATION_FIELDS R '+

110 'where F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE and R.RDB$SYSTEM_FLAG = 0 '+

120 'and RDB$RELATION_NAME = ''' + LBox1.Items[ LBox1.ItemIndex]+''' '+

130 'order by R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION');

140 ExecQuery;

150 while not EOF do

160 begin

170 n := CLBox1.Items.Add( trim(Fields[0].AsString));

180 CLBox1.Checked[n] := true;

190 Next;

200 end;

210 Close;

220 end; // with DataModule2

230 end;

*

Душераздирающее зрелище — вот как это называется!

– Ничего, потренируешься с SQL и будешь его щелкать…

– Как видишь служебная (внутренняя) база содержит несколько таблиц:

RDB$RELATIONS

RDB$FIELDS

RDB$RELATION_FIELDS

и т.д.

– Надо всего лишь взять буквы латинского языка и доллар(как без него) расставить их в нужном порядке, отсечь все лишнее и все готово.

– В строках 100-130 формируется запрос, в стр. 140 он выполняется, а затем цикл в строках 150-200 сохраняет имена полей таблицы в пунктах CheckListBox1, по команде стр. 190 переход на следующую запись… вот вкратце.

* Да, объяснения ты печешь как горячие пирожки.

– Подумаешь, пироги! Я еще вышивать умею и на машинке шить. А ты думал, что мы только мясо умеем воровать из кастрюль и на крышах кричать.

* Вызывает интерес, и еще такой разрез. Где ты взял эту информацию?

– Пилите, Шура хелпы, пилите, они золотые.

* А почему мы используем CheckListBox зачем нам эти галочки.

– Вот тут мы подходим к следующей задаче. У нас на файсе есть еще кнопка “Show Data”.

– Подробности о содержимое таблицы будем показывать в зависимости от установленных галочек в этом самом CheckListBox.

– Но, давай по очереди.

Show Structure

– Когда я планировал ББД, и дошел до этого пункта, перебрал несколько вариантов: можно выдавать результат в отдельный файл, можно в Memo, можно StringGrid или подобное, но это все не то. Т.е. хочется, чтобы была видна табличная форма таблицы ( возгласы с мест «* Невнятная тавтология»). А потом сообразил – Браузер, конечно же Браузер. Именно HTML дает широкие и гибкие возможности отображения информации.

Поделиться:
Популярные книги

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Альмар. Мой новый мир. Дилогия

Ищенко Геннадий Владимирович
Альмир
Фантастика:
фэнтези
попаданцы
8.09
рейтинг книги
Альмар. Мой новый мир. Дилогия

Идеальный мир для Лекаря 15

Сапфир Олег
15. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 15

Газлайтер. Том 19

Володин Григорий Григорьевич
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 19

Последний из рода Демидовых

Ветров Борис
Фантастика:
детективная фантастика
попаданцы
аниме
5.00
рейтинг книги
Последний из рода Демидовых

Страж Тысячемирья

Земляной Андрей Борисович
5. Страж
Фантастика:
боевая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Страж Тысячемирья

Кристалл Альвандера

Садов Сергей Александрович
1. Возвращенные звезды
Фантастика:
научная фантастика
9.20
рейтинг книги
Кристалл Альвандера

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Законы Рода. Том 11

Андрей Мельник
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 11

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2

Хроники хвостатых: Ну мы же биджу...

Rana13
Фантастика:
фэнтези
5.00
рейтинг книги
Хроники хвостатых: Ну мы же биджу...

Ваше Сиятельство 7

Моури Эрли
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Ваше Сиятельство 7

Стратегия обмана. Трилогия

Ванина Антонина
Фантастика:
боевая фантастика
5.00
рейтинг книги
Стратегия обмана. Трилогия

Одержимый

Поселягин Владимир Геннадьевич
4. Красноармеец
Фантастика:
боевая фантастика
5.00
рейтинг книги
Одержимый