S. D. F. [W Cat] (fb2) читать постранично, страница - 4
[Настройки текста] [Cбросить фильтры]
Первые запросы
- Ну, что, давай попробуем. - Открой или сделай новую базу и выполни следующий запрос: CREATE TABLE Salespeople ( snum integer, sname char (10), city char (10), comm decimal ); * Говорит что все OK. - Перейди на первую закладку и нажми кнопку Show DB. * Ура!! Заработало!! - Рано кричать, закрой программу, включи опять и открой твою базу. * Есть, таблица сразу отобразилась. * Есть вопросик, для чего у нас на форме CheckListBox1 и закладка Result. - Ну, с итоговой закладкой погоди, а вот по первому пункту поболтаем. - А пока потренируйся, введи еще пару таблиц, пока это без разницы, ну что-то типа «Коты Герои»(кличка, возраст, степень героизма, аппетит и т.д.) и т.д. * А как? - Начинай читать книги по SQL. Я предлагал только играться, (и сделать инструмент для игры) а правила игры вспоминай сам. - А мне, пора возвращаться к своим, ко… нет к баранам.
Продолжаем клепать ББД
- Итак закладка Structure DB показывает имеющиеся в сей базе таблицы. - Но, интересно узнать из каких полей состоит таблица. - Именно эту информацию будет показывать CheckListBox1 * Но, кроме имен полей, хочется знать их типы, размеры и прочее. - В числе прочей, эта информация появится на накладке Result, но как сказал классик «в очередь, с*ны дети, в очередь». - Так, мне этот бардак надоел, делаем так, как я привык. Во-первых вставляем новый модуль: unit gv; // Глобальные переменные interface var Path : string; // Путь к исполняемой программе implementation end. * Да, знатный модуль. - Смейся, смейся. При помощи этого модуля, я привык такой фокус делать, закачаешься, но сейчас это не к месту. - Второе: делаем обработчик создания формы: 10 procedure TFMain.FormCreate(Sender: TObject); 20 begin 30 Path := ExtractFileDir(ParamStr(0)) + '\'; 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
Последние комментарии
37 минут 25 секунд назад
1 час 18 минут назад
1 час 19 минут назад
3 часов 18 минут назад
9 часов 24 минут назад
9 часов 36 минут назад