W Cat - S. D. F.

Тут можно читать онлайн W Cat - S. D. F. - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-db. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    S. D. F.
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.11/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

W Cat - S. D. F. краткое содержание

S. D. F. - описание и краткое содержание, автор W Cat, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

S. D. F. - читать книгу онлайн бесплатно, автор W Cat
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

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

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

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

* А почему мы используем 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 +''' '+

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

160 ExecQuery;

170 LHTML.Add('

');

180 LHTML.Add('

');

190 LHTML.Add('

');

200 LHTML.Add('

');

210 LHTML.Add('

');

220 LHTML.Add('

');

230 while not EOF do

240 begin

250 S := '

'+

260 '

'+

270 '

'+

280 '

';

290 LHTML.Add(s);

300 Next;

310 end;

320 LHTML.Add('

Position Name Length Type
' +Fields[0].AsString + ' '+ trim(Fields[1].AsString)+' '+ trim(Fields[2].AsString) +' '+ FieadType(Fields[3].AsInteger)+'
');

330 end;

340 end;

* А я стал привыкать к этим крокозябрам.

- Тем более, что текст во многом повторяется.

- Как видишь, на экран выдается название таблицы, а затем таблица с описанием полей.

* Погоди! А что это в 280 строке?

- О, кота то я, и не заметил.

function FieadType(n:integer):string;

begin

case n of

7 : result := 'smallint';

8 : result := 'integer';

9 : result := 'quad';

10 : result := 'float';

11 : result := 'd_float';

12 : result := 'date';

13 : result := 'time';

14 : result := 'char';

27 : result := 'double';

35 : result := 'date';

37 : result := 'varchar';

261 : result := 'blob';

else result := IntToStr(n)+' ?';

end; // case

end;

В результате отобразится, нечто такое:

Ну и чего так долго конечно пива много не бывает но В общемто - фото 4

- * -

- Ну, и чего так долго, конечно, пива много не бывает, но…

* В общем-то, получилось, но никак не могу скопировать получившееся.

- Да, есть такая задача. Вставь в самом конце (перед end.) в файле Unit1:

initialization

OleInitialize(nil);

finalization

OleUninitialize;

А в самом начале этого файла вставь ActiveX в разделе uses.

* Так, просто! Да что же это такое. Просто хочется рвать и метать!!

- Это Windows.

* Ну, что теперь отображаем данные?

- Нет, не к спеху, да и отображать еще нечего, давай отдохни, а я подготовлюсь к последнему рывку.

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

Последний? Рывок к ББД

- Предлагаю вернуться к выполнению SQL запроса.

- Бывают запросы SELECT и все остальные. Результат выполнения SELECT – будем выдавать в закладку result, а остальные просто выполнять.

- Переделываем Button1Click:

010 procedure TFMain.Button1Click(Sender: TObject);

020 begin // кнопка run SQL

030 RunSQL(MakeSQL); // выполение команды SQL

040 end;

- Пойдем дальше.

- Теперь можно заняться кнопочкой «Show Data»

010 procedure TFMain.Button5Click(Sender: TObject);

020 var

030 i : integer;

040 S : string;

050 begin // Show Data

060 with CheckListBox1 do

070 begin // составляем список полей

080 if Items.Count = 0 then exit; // если список пуст - уходим

090 S := 'SELECT ';

100 for i := 0 to Items.Count - 1 do // список полей вставляем в запрос

110 if Checked[i] then

120 S := S + LowerCase(Items[i]) + ', ';

130 end; // with CheckListBox1

140 delete(S, length(S)-1, 2);

150 Memo1.Clear;

160 Memo1.Lines.Add(S);

170 S := 'FROM '+ LowerCase( ListBox1.Items[ ListBox1.ItemIndex] );

180 Memo1.Lines.Add(S);

190 RunSQL( MakeSQL);

200 end;

- Тут все должно быть ясно: кнопка вырабатывает команду SELECT для полей отмеченных галочкой и распечатывает результат.

* Ну, как теперь-то все готово.

- Вот же шило в одном месте. Ладно, следующий пункт:

Тестирование

- Как ты помнишь, тренироваться мы будем по книге Мартина Грубера «Понимание SQL»[1], при потребности будем поглядывать в «Firebird. Руководство разработчика баз данных» Хелен Борри[2].

* Ну и в интернете найдется масса материала.

- Для нашей игры понадобится база с определенными таблицами, полюбуйся на них приложении к [1].

* Не сказать, что 3 таблицы это очень много, но…

- Я так понимаю, что тебе лень, а лень двигатель прогресса.

- В данном случае, я тебе помогу…

- На закладке SQL ставим еще одну кнопку «Run SQL by List».

- Будут выполнятся запросы записанные в текстовом файле.

- Каждый запрос должен заканчиваться «;», допускается перенос запроса на несколько строк, не допускается несколько запросов в одной строке.

- Не отображается результат запросов SELECT

- При ошибочном запросе, выполнение списка прекращается.

010 procedure TFMain.Button6Click(Sender: TObject);

020 var

030 i : integer;

040 L : TStringList;

050 S : string;

060 begin // Run SQL by List

070 with OpenDialog1 do

080 begin // подготавливаем диалог

090 Filter := 'File with SQL|*.txt';

100 DefaultExt := 'txt';

110 if Execute then

120 with DataModule2 do

130 begin

140 L := TStringList.Create;

150 L.LoadFromFile(FileName); // открываем файл

160 His.Lines.Add('Run SQL by List '+FileName);// запись в историю

170 S := '';

180 for i := 0 to L.Count - 1 do

190 begin

200 S := S + ' ' + L[i]; // складываем строки

210 if pos(';', S) > 0 then // пока в строке не появится ';'

220 begin

230 S := trim(S); // ??

240 His.Lines.Add(S); // записываем запрос в историю

250 if RunSQL(S) then break; // если запрос не выполнился выходим.

260 S := '';

270 end; // if

280 end; // for

290 L.Free;

300 end; // if Execute

310 end; // OpenDialog1

320 end;

* В общем все понятно…

* Что за безобразие, хочу чтобы SELECT тоже выполнялись списком.

- Надо подумать. Минуточку. «Раз, два... Меркурий во втором доме... луна ушла... шесть – несчастье... вечер – семь...»

- Готово – сделать можно, даже несколько вариантов, т.е. я имею в виду из уже готовых элементов кода с минимальными добавлениями, а значит, я ничего подсказывать не буду, уж изволь сделать сам.

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

Интервал:

Закладка:

Сделать


W Cat читать все книги автора по порядку

W Cat - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




S. D. F. отзывы


Отзывы читателей о книге S. D. F., автор: W Cat. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x