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

на главную - закладки

Жанры

Cat W

Шрифт:

– Да, в этом файле есть служебная база в которой будут хранится сведения о нашей базе.

* База о базе. Логично. Ведь логичное же, что директор завода Жигулей ездит на Мерседесе.

– Переписываем ShowTables:

procedure ShowTables(fn:string);

begin

 FMain.Caption := fn;

 with FMain.ListBox1 do

begin

Clear;

PrintList('select DISTINCT R.RDB$RELATION_NAME '+

'from RDB$RELATION_FIELDS R '+

'where R.RDB$SYSTEM_FLAG = 0 order by R.RDB$RELATION_NAME');

end;

end;

* Опять нет нумерации, значит это тоже временно.

– Совершенно точно. А теперь функция PrintList:

010 function PrintList( iSQL:string):boolean;

020 begin

030 with DataModule2.IBSQL1 do

040 begin

050 result := false;

060 Close;

070 SQL.Clear;

080 SQL.Add(iSQL);

090 ExecQuery;

100 if RecordCount = 0 then

110 begin

120 FMain.ListBox1.Items.Add('Empty');

130 result := true;

140 exit;

150 end;

160 while not EOF do

170 begin

180 FMain.ListBox1.Items.Add( trim(Fields[0].AsString));

190 Next;

200 end; // while

210 end;

220 end;

– PrintList выполняет (стр. 90) наш первый SQL запрос (стр. 80). В случае, когда осмысленного ответа нет (стр. 100-150) выдается надпись - 'Empty' т.е. базы нет, а иначе (стр. 160-200) выдаем список таблиц в нашей базе.

* А что за страшную строку получает PrintList получает как параметр.

– Это тот самый запрос и есть. Пока разбирать его не будем.

– * -

(уточнение, “- * -“ равняется банке пива)

– Ну как, чего ты такой…

* Опять, не работает.

– Привыкай к тяготам лишениям нашей службы…

– Ну что там у нас

* Operation cancelled at user's request

– Н-да, и что характерно, каждый раз на этом месте…

– Так, у компонента IBDatabase1 измени свойство LoginPrompt на False. И будет тебе счастье.

– * -

* Ну, что, сразу нельзя было сказать?

– Забыл, бывает…

– Как, заработало?

* Да, но гора родила мышь. Ввели много дополнительных слов, а результат тот же.

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

* Не п*ди, что будем делать дальше?

– Дальше?

Готовимся выполнять SQL запросы.

– Для начала, что попроще.

– На закладке History помести TMemo – во всю ее ширину и высоту, да, назови это дело His.

– А на закладке SQL надо расположить тоже TMemo (у меня оно названо Memo1) и для начала пару кнопок “Run SQL” и “Clear SQL”.

– Теперь делаем процедуры кнопок:

procedure TFMain.Button1Click(Sender: TObject);

begin // кнопка run SQL

 RunSQL( MakeSQL);

end;

* Опять временно?

– Ну, не хочу тебя сразу пугать, все по очереди.

– Обрати внимание на комментарий к слову begin – рекомендую так подписывать процедуру, если название ее мало информативно.

* А вторая кнопка?

– Ну, даже неудобно…

procedure TFMain.Button2Click(Sender: TObject);

begin

 Memo1.Clear;

end;

* Да, проще некуда. Так теперь по очереди RunSQL( MakeSQL);

– Недавно переделал, довольно много повкалывал с этими 30 строками…

010 function RunSQL( S:string):boolean;

020 var

030 b : boolean; // отслеживание ошибки

040 Mistake : string; // сообщение ошибки

050 begin

060 with DataModule2.IBSQL1 do

070 begin

080 Close;

090 SQL.Clear;

100 SQL.Add(S);

110 try

120 ExecQuery; // попытка выполнения запроса

130 b := true; // ошибки нет

140 except // Обработка ошибки

150 on E: Exception do

160 begin

170 b := false; // к сожалению, ошибка

180 Mistake := E.ClassName+' raised exception: '+E.Message;

190 end;

200 end; // try

210 end; // with DataModule2

220 result := not b;

230 if b

240 then

250 begin // запрос выполнен

260 Hi.Lines.Add('ok');

270 Memo1.Clear; // и переход на закладку History

280 if DataModule2.IBSQL1.SQLType = SQLSelect

290 then PrintSELECT(S) // распечатка результата запроса SELECT

300 else PageControl1.ActivePageIndex := 3;

310 end

320 else

330 begin // была ошибка

340 ShowMessage(Mistake); // сообщение об ошибке

350 Hi.Lines.Add('Error');

360 Hi.Lines.Add(Mistake); // запись в историю

370 end;

380 Hi.Lines.Add('------------');

390 end;

– Самое интересное происходит, когда запрос НЕ выполняется.

* Прочитал, все понятно, и над чем тут было биться?

– Все понятно? Отлично, объясни тогда строки 280, 290.

* Так, интересно. Определяется тип запроса и если это SELECT. Нечестно, ты еще ничего не сказал о PrintSELECT.

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

Черный Маг Императора 18

Герда Александр
18. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 18

Первый среди равных. Книга XII

Бор Жорж
12. Первый среди Равных
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга XII

Хозяин Стужи

Петров Максим Николаевич
1. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи

Я уже граф. Книга VII

Дрейк Сириус
7. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже граф. Книга VII

Прах к праху

Джордж Элизабет
7. Инспектор Линли
Детективы:
классические детективы
8.17
рейтинг книги
Прах к праху

На границе империй. Том 10. Часть 6

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 6

Эволюционер из трущоб. Том 12

Панарин Антон
12. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 12

Кодекс Охотника. Книга XXXII

Винокуров Юрий
32. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXII

Инженер Петра Великого 2

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

Алые перья стрел

Крапивин Владислав Петрович
Детские:
детские приключения
8.58
рейтинг книги
Алые перья стрел

Внук сотника

Красницкий Евгений Сергеевич
1. Отрок
Приключения:
исторические приключения
9.01
рейтинг книги
Внук сотника

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

Обрыв

Гончаров Иван Александрович
Проза:
классическая проза
русская классическая проза
8.93
рейтинг книги
Обрыв

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

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8