Create site free
Создание кросс-таблицы - Таблицы - Базы данных в Delphi - Каталог статей - Mvi - развлечения Вы можете создать их в DBD как QBE-шки. Пользуясь компонентом TQBE для загрузки одной из библиотек, вы можете непосредственно использовать QBE-шки в вашем Delphi-приложении.

>
Среда, 08.02.2012, 15:21
Музыка, видео, игры - MVI
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Категории каталога
ADO [15]
ASCII и CSV [12]
Access [19]
Alias [24]
BDE [37]
BLOB поля [19]
Clipper [2]
DB2 [2]
DBASE и DBF [26]
Fox Pro [1]
Interbase [21]
MSSQL [13]
ODBC [10]
Oracle [19]
Paradox [28]
SQL [30]
Sybase [1]
База данных [31]
Закладки [2]
Записи [19]
Индексы [10]
Компоненты и Базы данных [11]
Модуль данных [3]
Отчеты [3]
Ошибки БД [17]
Поиск [17]
Поля [36]
Сортировка и Фильтр [6]
Таблицы [39]
Мини-чат
Наш опрос
Ваш возраст?
Всего ответов: 677
Главная » Статьи » Базы данных в Delphi » Таблицы

Создание кросс-таблицы

Автор: Michael Lant

Вы можете создать их в DBD как QBE-шки. Пользуясь компонентом TQBE для загрузки одной из библиотек, вы можете непосредственно использовать QBE-шки в вашем Delphi-приложении.

В следующем примере предполагается, что каждый служащий каждый день сообщает оператору о своем месторасположении. Код определяет начало трудовой недели с понедельника плюс еще четыре рабочих дня с показом соответствующей даты. Строки с 1 по 5 в QBE1.QBE (нулевая описательная) в нижеприведенной процедуре заменяются кодом. Результат всего этого в том, что строка (если имеется) для каждого человека отображается в колонке установленного результата и значение 'X' включается если только запись существует. Для создания агрегатной таблицы можно было бы подсчитывать результаты.

Текст в QBE1.QBE :

CALLIN.DB | StaffNo | Date |
| _join1 | 3/10/95 |
| _join2 | 3/11/95 |
| _join3 | 3/12/95 |
| _join4 | 3/13/95 |
| _join5 | 3/14/95 |

XTAB.DB | StaffNo |Mon |Tue |Wed |Thu |Fri |
| _join1 |changeto X| | | | |
| _join2 | |changeto X| | | |
| _join3 | | |changeto X| | |
| _join4 | | | |changeto X| |
| _join5 | | | | |changeto X|


procedure TCallInReport.ButtonSelectClick(Sender: TObject);
begin
TableXTab.active := false;
if EditWeekOf.Text = '' then
begin
messageBeep(0);
messageDlg('Для выбора записи необходима дата.', mtInformation, [mbOK], 0);
exit;
end;

Screen.Cursor := crHourGlass;

dtWeekOf := StrToDate(EditWeekOf.Text);
dtStartDate := dtWeekOf - DayOfWeek(dtWeekOf) + 2;

TableXTab.active := false;
TableXTab.EmptyTable;
TableXTab.active := true;

{
Замените строки 1 - 5 в QBE1.QBE реальными датами
}

QBE1.QBE.Strings[1] := ' | _join1 | ' + DateToStr(dtStartDate) + ' | ';
QBE1.QBE.Strings[2] := ' | _join2 | ' + DateToStr(dtStartDate + 1) + ' | ';
QBE1.QBE.Strings[3] := ' | _join3 | ' + DateToStr(dtStartDate + 2) + ' | ';
QBE1.QBE.Strings[4] := ' | _join4 | ' + DateToStr(dtStartDate + 3) + ' | ';
QBE1.QBE.Strings[5] := ' | _join5 | ' + DateToStr(dtStartDate + 4) + ' | ';

try
QBE1.active := true;
except
on E: EDataBaseError do
begin
if E.Message = 'Ошибка создания дескриптора курсора' then
{ Ничего не делайте. Делая TQBE активной, мы пытаемся создать курсор.
Это вызывает исключительную ситуацию, которую мы должны перехватить.
Пока я не нашел способа как отделаться от исключения. }

else
begin
Screen.Cursor := crDefault;
raise;
end;
end;
else
Screen.Cursor := crDefault;
raise;
end;
TableXTab.refresh;
Screen.Cursor := crDefault;
TableXTab.active := true;
end;
Категория: Таблицы | Добавил: mvi (01.11.2008)
Просмотров: 278 | Рейтинг: 0.0/0 |
Всего комментариев: 0

При копировании материалов данного сайта, ссылка на него обязательна!

Имя *:
Email:
Код *:
Форма входа
E-mail:
Пароль:
Поиск
Друзья сайта
Анекдоты
Реклама
Статистика


Рейтинг@Mail.ru

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright MyCorp © 2012 Хостинг от uCoz