S. D. F. - [2]

Шрифт
Интервал

130       IBDatabase1.Params.Add('PASSWORD forever');

* А причем здесь коты?

- Ну, у себя ты введешь свои пароли.

* О, у себя, я как всегда напишу…

- Стоп, стоп, стоп! И ни другу, не врагу, никогда не …

* Ладно, я понял.

- * -

* Шеф, усе пропало!!! т.е. не получилось. Появилось угрожающее окно Debugger Exception Notification, со страшной надписью Project Project1.exe raised exception class EIBInterBaseError with message 'unavailable database'. Process stopped. Use Step or Run to continue..

- Спокойствие, только спокойствие... бывало и у меня такое.

- Для комфортной работы Firebird хочет иметь доступ к своим dll а именно:

gds32.dll

icudt30.dll

icuuc30.dll

и желательно:

firebird.msg

Конечно, лучше всего поместить эту компанию, в папочку WINDOWS\system или WINDOWS\system32, в этом случае, в дальнейшем ни о чем не надо беспокоится, НО если тебе надо показать твою гениальную программу заказчику, (а на его месте я бы не разрешил лазить тебе в системные папки) лучше держать эту свору в демонстрационной папке.

- * -

* У меня проблемы стал копировать dll, а система и говорит файл gds32.dll мол у меня есть только постарее да поменьше, можно ли заменить, ну я слов то не померил, и системе той поверил. А эта Редиска и говорит что она занята, т.е. файл занят.

- Ну, занят файл, значит, занят, мы то ящик покупаем не для собственного удовольствия, а для удовлетворения запросов системы, ну и ладно…

- Ибо сказано: Если у тебя есть фонтан – заткни его, и компьютеру надо отдохнуть…

- Все выключай, и иди погуляй.

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

ББД продолжение


- Извини, выключать комп было совершенно не нужно. Достаточно было закрыть Delphi, именно он занимал файл.

* Ладно, проехали. У меня тут как раз возник вопрос. Все сработало, файл базы создался, но на фейсе программы ничего не изменилось.

- Да, вот тут, ты прав. Недоработка. Но, я тоже обдумал… надо ввести изменения.

165 try

170    IBDatabase1.CreateDatabase;

180    IBDatabase1.Connected:=True;

190    IBTransaction1.Active:=True;

192 except

194   ShowMessage('Не нахожу dll');

195   exit;

196  end;   // try 

187  FMain.Caption := fn;

198       ShowTables;

200 end;

- Во-первых давай позаботимся о том, чтобы исключительное положение, которое у нас возникло, было бы хоть как ни будь обработано ( строки 165, 192-196).

- Строка 198 выдаст название новой базы в заголовке программы и сообщит что таблиц, в этой базе пока нет.

procedure ShowTables;

begin

 with FMain.ListBox1 do

  begin

   Clear;

   Items.Add('Empty');]

  end;

end;

- Сразу скажу, что процедуру ShowTables мы очень скоро будем существенно менять, посему не буду нумеровать строки…

- * -

* Все сработало, но…

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

Задача: открыть существующую базу данных.


010 procedure TFMain.OpenDB1Click(Sender: TObject);

020 begin

030    with OpenDialog1 do

040    begin

050     Filter  :=  'DB|*.fdb';

060     DefaultExt := 'fdb';

070     if Execute then

080      with DataModule2 do

090       begin

100       IBDatabase1.DatabaseName:= FileName;

110       IBDatabase1.Params.Clear;

120       IBDatabase1.Params.Add('USER Cats');

130       IBDatabase1.Params.Add('PASSWORD forever');

140           try

150           IBDatabase1.Connected:=True;

160           except

170            ShowMessage('Не могу работать!');

180            exit;

190           end; // try

200       IBTransaction1.Active:=True;

210      FMain.Caption := FileName;

220       ShowTables;

230      end; // DataModule2

240    end; // OpenDialog1

250 end;

- Открываем диалог загрузки файла – стр. 30

- Т.к. этот диалог будет использоваться и в других целях в строках 50, 60 уточняем, что сейчас будет речь идти о базе данных.

- Если в стр. 70 файл базы найден, вводим параметры базы строки 100-130 (обрати внимание пароль и пользователь должен быть тот же, что и при создании базы).

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

* А почему ты изменил 170 строку.

- Искл. состояние может возникнуть не только из-за dll, но и в случае если база будет не родная (не совпадает пароль и др.) т.е. это место надо переписать более тщательно, сделаем это позже.

* Нет ничего более постоянного …

- Согласен, давай изменим строку 160

160           except // в дальнейшем обработать 1. отсутствие dll. 2. несовпадение пароля 3. другие случаи

- Теперь пришла пора для вкусненького.

* Погоди, сбегаю за кетчупом.

- Боюсь, ни клаве ни монитору кетчуп не понравится.

- Открою тебе великую тайну:

- Когда мы создали пустую базу. База там уже есть.

* Я что-то подобное подозревал, файл то не очень маленький.

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

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

- Переписываем 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');


Еще от автора W Cat
Задачник по программированию для школы

Задачи для школьника, должны быть веселы!На наших занятиях, запрещена фраза "мы это не проходили" - если это надо для решения задачи - "пройди", источников море, учитель подскажет.Не получается? Возможно, ты выбрал задачу не по силам, ничего - это тоже опыт, отложи, попробуй следующую. Мало решить задачу, придумай свою...Ученик должен уметь: (поставить задачу + решить задачу + учиться) * n ...


Система Диофанта

Если вы хотите поразить одноклассников молниеносным решением квадратных уравнений [КУ], давайте развлечемся.


Рекомендуем почитать
Зеленое пятно окна

Автор стихов, представленных в этой книге, — Павел Егоров из Череповца. Его поэтическое творчество — это не юношеская проба пера, а выстраданные зрелым человеком раздумья о сущности бытия, сложности и противоречивости человеческих чувств. Кандидат филологических наук Ирина Остренко.


Проект - Совесть

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Красивая жизнь

Любовь нельзя купить… особенно если ее уже тебе подарили… и тем более если она взаимна…


Рассеченная плоть

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Доминант

Оконченное произведение. Грядет вторая эра воздухоплавания. Переживут ли главные герои катаклизм? Что ждет их в новом мире? Открытие забытых небесных островов, продолжение экспансии островитян, восстания челяди,битва держав за место под солнцем на осколках погибающего континента. Грядущий технологический скачек, необычная заморская магия, новые города, культуры и жизненный уклад содрогнут когда-то единую Некротию...


Запретная Родина

Смешиваясь, черное и белое создают серые будни. Или это не так? Возможно, именно благодаря их соединению рождаются красочные оттенки жизни? Фрэйа снова отправится в иные миры – находить собственную гамму любви, учиться слушать голоса своих душ. Ей предстоит узнать, что, несмотря на удивительные дары, открываемые в человеке Промежутком, реальности ценят искренность обычных человеческих чувств. В приключениях она обретет новые мечты и попытается отыскать сокрытое место, где возможно первозданное, чистое счастье – таинственную и прекрасную Родину.