русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вычисляемые поля


Дата добавления: 2014-02-04; просмотров: 745; Нарушение авторских прав


END;

Open

Prepare;

BEGIN

// открываем таблицу dvd.db

WITH DVD DO

BEGIN

Prepare;

Open

END

END;

Закрывать каждый запрос при завершении нет необходимости, все запросы закрываются автоматически методом CloseDatasets компонента Database.

Поскольку мы изменили структуру таблицы dvd.db, об этом надо сообщить нашей программе. Проверьте, что в компоненте Database в поле AliasName записано имя алиаса DVD, иначе Delphi не сможет открыть базу. Щелкните правой кнопкой мыши на запросе DVD и выберите пункты меню Fields Editor à Add fields. В открывшемся списке появится новое поле COMPANY. Щелкните по кнопке OK для его добавления. Аналогично добавьте поля в запросе comp.

Приступаем к самому важному – связыванию главной и подчиненной таблиц. Принцип связывания таков: в главной таблице создается фиктивное поле, которого в самой таблице нет. В это фиктивное поле программа автоматически заносит значения, извлекаемые из подчиненной таблицы. Снова щелкните правой кнопкой мыши на запросе DVD и выберите пункты меню Fields Editor à New field. Открывается окно добавления фиктивного поля (Рис. 28.2) – самое важное окно во всей работе с БД

 

 

Рис. 32.2 Окно создания фиктивного поля.

 

В поле NAME введите придуманное имя фиктивного поля, которое не должно совпадать с именами настоящих полей в главной таблице. Можно, чтобы не запутаться, всегда начинать имена фиктивных полей с буквы V – виртуальное. В списке Type выберите тип данных, которые будут отображаться в фиктивном поле, а в поле Size введите размер этих данных. Очевидно, тип и размер фиктивного поля должны совпадать с типом и размером поля с данными в подчиненной таблице, в рассматриваемом случае это поле Name в таблице comp.db. Установите переключатель в положение Lookup – это означает, что данные в новом поле будут браться из другой таблицы.



А теперь самое важное: правильно заполнить четыре списка внизу окна:

Key Fields: имя поля в главной таблице, в котором хранятся ссылки на подчиненную таблицу. В данном случае это поле Company.

Dataset: имя подчиненной таблицы. Запрос к таблице comp.db у нас называется comp.

Lookup Keys: имя автоинкрементного поля в подчиненной таблице. В данном случае это поле ID таблицы comp.db.

Result field: имя поля в подчиненной таблице, где хранятся данные, отображаемые в фиктивном поле главной таблицы. В данном случае это поле name в базе comp.

Новое поле нужно вывести на экран. перейдите на главную форму и уже известным способом добавьте в компоненте DBGrid новую колонку, связанную с полем VCOMP. Измените обработчик события OnRezise – в таблице стало на одну колонку больше и надо поменять код на примерно следующий:

 

procedure TForm1.FormResize(Sender: TObject);

 

CONST w:ARRAY[0..5] OF REAL=(0.25,0.25,0.1,0.1,0.1,0.2);

 

VAR i:BYTE;

 

begin

FOR i:=0 TO LENGTH(w)-1 DO

DBGrid1.Columns[i].Width:=TRUNC((DBGrid1.Width- GetSystemMetrics(SM_CXVSCROLL)-LENGTH(w))*w[i])-1

end;

 

Все! Запускаем программу и видим очень интересный результат (Рис. 28.3).

 

 

Рис. 32.3 Отображение фиктивного поля.

 

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

 

 

Помимо фиктивных полей, данные для которых берутся из другой таблицы, можно создать так называемое вычисляемое фиктивное поле, значение которого рассчитывается в самой программе. Например, в нашей программе некрасиво отображается поле SUBTITLES (наличие субтитров) – мы видим в нем значения 0 и 1 вместо "есть" и "нет". Заводить отдельную таблицу ради всего двух значений не хочется.

Выполните следующие действия: щелкните правой кнопкой мыши на запросе DVD в модуле данных и выберите пункты меню Fields Editor à New field. Открывается уже известное вам окно добавления фиктивного поля. Заполните его, как показано на Рис. 28.4.

 

Рис. 32.4 Добавление вычисляемого поля.

 

В запрос DVD добавлено фиктивное полеVTITLE типа String длиной 10 символов, значения в которое будет заносить сама программа. Каким образом? Выполняя обработчик события OnCalcFields запроса DVD. В этом обработчике напишите следующий код:

 

procedure Tdm.dvdCalcFields(DataSet: TDataSet);

begin

IF dvd.FieldByName('SUBTITLES').AsBoolean THEN

dvdvtitle.AsString:='есть'



<== предыдущая лекция | следующая лекция ==>
WITH comp DO | СУБД Interbase


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.