W Cat - S. D. F.

Здесь есть возможность читать онлайн «W Cat - S. D. F.» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, Базы данных, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

S. D. F.: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «S. D. F.»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Если вам интересен SQL, и знаком Delphi, давайте поразвлекаемся программированием.

S. D. F. — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «S. D. F.», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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 дает широкие и гибкие возможности отображения информации.

- Итак на закладке Result ставим компонент Web типа TwebBrowser.

- А для кнопки “Show Structure” обработчик нажатия.

010 procedure TFMain.Button3Click(Sender: TObject);

020 var

030 i : integer;

040 LHTML : TStringList;

050 begin // кнопка Show Structure

060 if ListBox1.Items.Count = 0 then exit;

070 LHTML := TStringList.Create;

080 HTMLHead(LHTML);

090 with ListBox1 do

100 for i := 0 to Items.Count - 1 do

110 PrintFields(Items[i], LHTML);

120 LHTML.SaveToFile(Path+’~.htm’);

130 Web.Navigate(Path+’~.htm’);

140 PageControl1.ActivePage := TabSheet2;

150 LHTML.Free;

160 end;

- Стр. 70 создаем листочек HTML

- Стр. 80 записываем заголовочную часть HTML

- 100-110 циклически заносим в HTML нужную информацию

- Стр. 120 Вот тут можно было пойти разными путями, я пошел простейшим сохраняю HTML файл в рабочей папке.

- Стр. 130 Отображаю готовый файл в навигаторе.

* Хорошо, копаем глубже…

- Пожалуйста:

010 procedure PrintFields(table:string; LHTML : TStringList);

020 var

030 S : string;

040 begin

050 LHTML.Add('

'+table+'

');

060 with DataM.IBSQL1 do

070 begin

080 Close;

090 SQL.Clear;

100 SQL.Add('select R.RDB$FIELD_POSITION, R.RDB$FIELD_NAME, '+

110 'F.RDB$FIELD_LENGTH, F.RDB$FIELD_TYPE '+

120 'from RDB$FIELDS F, RDB$RELATION_FIELDS R '+

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

140 'and RDB$RELATION_NAME = ''' + table +''' '+

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «S. D. F.»

Представляем Вашему вниманию похожие книги на «S. D. F.» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «S. D. F.»

Обсуждение, отзывы о книге «S. D. F.» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x