S. D. F. [W Cat] (fb2) читать постранично, страница - 2
[Настройки текста] [Cбросить фильтры]
- 1
- 2
- 3
- 4
- . . .
- последняя (8) »
ББД продолжение
- Извини, выключать комп было совершенно не нужно. Достаточно было закрыть 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'); end; end; * Опять нет нумерации, значит это тоже временно. - Совершенно точно. А теперь функция PrintList: 010 function PrintList( iSQL:string):boolean; 020 begin 030 with DataModule2.IBSQL1 do 040 begin 050 result := false; 060 Close; 070
- 1
- 2
- 3
- 4
- . . .
- последняя (8) »
Последние комментарии
23 часов 58 минут назад
1 день 10 часов назад
1 день 22 часов назад
2 дней 5 часов назад
2 дней 7 часов назад
2 дней 8 часов назад