Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / динамический запрос / 6 сообщений из 6, страница 1 из 1
21.06.2004, 10:35:39
    #32569071
natascha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический запрос
Текст запроса изменяется,изменяется кол-во полей,
как установить программно Displaylabel,DisplayFormat,DisplayWidth.
...
Рейтинг: 0 / 0
21.06.2004, 11:16:41
    #32569182
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический запрос
TFloatField(MyQuery.FieldByName('myfield')).DisplayFormat:=...
...
Рейтинг: 0 / 0
21.06.2004, 11:26:27
    #32569205
natascha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический запрос
Спасибо! Сделала.
...
Рейтинг: 0 / 0
21.06.2004, 11:39:21
    #32569246
Tonny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический запрос
я для этих целей использую константный массив в котором храню описание всех возможных полей, примерно следующего вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
const
   MaxFields=<n>;
   FieldInfo : array[ 0 ..MaxFields] of record
        n,c : string; //n - имя поля, c - его Caption (displaylabel)
        w : integer; //ширина
      end = (
    (n : 'ID'      ; c: 'Идентификатор'; w :  20 ),
    (n : 'NAME' ; c: 'Имя'                ; w :  80 ),
    ...
    );

после DataSet.open
а) вызывается процедура(параметр: dataset) , которая для каждого элемента массива FieldInfo:
1. ищет, есть ли такое поле в dataset
ff := DataSet.FindField(fieldinfo .n);
if ff<>nil then...
2. если есть - устанавливает ему DisplayLabel (можно сразу и DisplayFormat)

б) вызывается процедура(параметр: DBGRID) в которой аналогичным путём заполняется ширина колонки DBGRID.Columns.Width

полная схема, которую я использую:

a) TForm.Create()
считать из ini-файла данные массива FieldInfo (ширина колонок)

б) после открытия DataSet:
1. процедура(DataSet) установки видимости полей, DisplayLabel, DisplayFormat
2. процедура(DataSet) установки порядка следования полей
3. процедура(DBGrid) установки ширины колонок

в) перед закрытием DataSet, dataset.BeforeClose
считать информацию о ширине колонок в массив FieldInfo
считать информацию о позиции поля

г) TForm.destroy
записать в ini-файл данные массива FieldInfo

вроде бы ничего не забыл.
...
Рейтинг: 0 / 0
22.06.2004, 15:12:26
    #32571872
natascha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический запрос
Спасибо! Возьму кусочек.
...
Рейтинг: 0 / 0
22.06.2004, 15:29:58
    #32571922
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический запрос
Юзай FIBPlus - там для этих целей в базе есть репозиторий - специальные таблички, откуда эти дела автоматом берутся при открытии набора данных.

Для каждой таблицы и каждого столбца таблицы - Display Label, Visible, Display Width, Display Format, Edit Format, Triggered. Кроме того, для каждого констреинта (первичные ключи, уникальность, внешние ключи, чеки, уникальные индексы) можно определить свой понятный русский мессаже.
Кроме того, для каждого набора данных можно в репозитории держать значения фильтров, имена первичных ключей, гереаторов, SQL - запросов на выборку/изменения, и набор кондиций.

Все очень прозрачно и просто.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / динамический запрос / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]