fields table

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

fields table

Сообщение n0where »

Код: Выделить всё

    browse b_Error_4 'blabla';
    table
      tmp_error_4;
    fields
       tmp_error_4.DOC_dcr'Дескр'         : [4], protect;
       tmp_error_4.eInfo  'ФИО'           : [10], protect;
       tmp_error_4.DOC_t  'Тип'           : [10], protect;
       tmp_error_4.DOC_n  'Номер'         : [10], protect;
       tmp_error_4.DOC_d  'Дата'          : [8], protect;
       tmp_error_4.eRRoR  'Ошибка'        : [10], protect;
    end;
Как получить 'Дескр', 'ФИО' , 'Тип' и тп.

Никак не могу найти как получить данные.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: fields table

Сообщение Алексей »

что значит как получить ? что-то я не понял вопроса.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: fields table

Сообщение n0where »

Ну в прямом - как в какой-нибудь функции получить значения.

грубо говоря типо:

Код: Выделить всё

for (i:=1; i<=COUNTFIELDS; i++) {
 s := GETITEMFIELDS(i);
 // s => 'Дескр', 'ФИО', etc
}
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: fields table

Сообщение edward_K »

s:=tmp_error_4.eInfo не покатит?
тогда
function LotExpressionFunc (fild : string | Memo;
err : string
) : string;
либо вам все видится чуть сложнее чем есть на самом деле, либо вы спрашиваете не том языке.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: fields table

Сообщение n0where »

Я хочу получить не данные в таблице а заголовок. Если это понятнее
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: fields table

Сообщение Vik »

Например, функционалом конфигуратора:

Код: Выделить всё

Назначение
Функция cfsGetProp выдает значение свойства aPropName объекта aObjName.
Функция cfsGetPropArray выдает массив значений свойства-массива aPropName объекта aObjName.
Описание
function cfsGetProp (aObjName : string | longInt,
    aPropName : string | longInt,
    var aField : anyType
                    ) : longInt;
function cfsGetPropArray (aObjName : string | longInt;
    aPropName : string | longInt;
    var aField : array of ...
                         ) : longInt;
Примеры по работе с функцией на форуме есть. Установить можно проще:

Код: Выделить всё

SetColumnTitle (iВrows : longInt;
                          fld : longInt;
                          title : string);
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: fields table

Сообщение n0where »

Смысле такой - есть много таблиц отдельных. Хочу для каждой сделать экспорт в ексель, но не хочу для каждой прописывать одно и тоже. Хочу просто указал таблицу - функция сама взяла данные с заголовком и поместила в эксель. )
Вобщем так.

2Vit
Не смог найти свойство объекта которое бы мне помогло. юзал cfpEnumValues etc
Примеры по работе с функцией на форуме есть. Установить можно проще:
Эту функцию я видел, была бы обратная.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: fields table

Сообщение Алексей »

много отдельных таблиц в памяти ?
для стандартных наверное нужную информацию можно из словаря вытащить.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: fields table

Сообщение n0where »

Таблицы свои.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: fields table

Сообщение Vik »

Не догоняю, откуда надо данные тянуть. Если из заголовков колонок броуза, то я ясно написал, как это сделать.
n0where писал(а):Не смог найти свойство объекта которое бы мне помогло. юзал cfpEnumValues etc
Плохо искали. Свойство cfpTitle. Описание языка Vip - Приложения - Свойства объектов, используемых в API конфигуратора - Полный список свойств объектов
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: fields table

Сообщение Den »

...а если таблицы свои и словарные, то X$FILES&X$FIELDS как сказал Алексей
Если же у Вас что то экзотическое, аля свои таблицы в памяти, набитые данными в фейсе, то конфигуратором, как Vik...
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: fields table

Сообщение n0where »

cfpTitle
От неё нет толку, если я не смогу получить массив columns, придется вручную писать типа

Код: Выделить всё

cfsGetProp(tmp_error_4.DOC_dcr, cfpTitle, result_string);
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: fields table

Сообщение edward_K »

А кнопка Fastreport в тулбаре как то умеет.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: fields table

Сообщение Vik »

Ну хоть убейте, никак не могу увидеть тут проблемы! Что значит "вручную писать"? Вот вам простой пример, как вытянуть тайтлы для всех колонок в интерфейсе.

Код: Выделить всё

Interface BLABLA;
.....

function GetColumnTitle(p_lCl : longint): string;
{
   if (cfsGetProp (p_lCl, cfpTitle, result) != cfOk)
      result := '';
}

function isColumn(p_Name: string; var p_lCl: longint): boolean;
var
   sFullName
 , conteiner
 , objType
 , sTitle : string;
{
   result := false;
   if (cfsGetObjInfo(p_Name, sFullName, p_lCl, conteiner, objType) = cfOk)
    {
       result := (objType = 'Column');
    }
   if (not result)
      p_lCl := 0;
}

function ShowTitlesForAllBrowsers: void;
var l, l1 : longint
var
  listObj: array [1..1] of string;
var
  iCnt
, i : integer;
{
   l  := cfsEnumObjects('BLABLA', listObj, true);
   iCnt := Count(listObj);
   for (i := 1; i <= iCnt; i++)
    {
      if (isColumn(listObj[i], l1))
       {
          Message(GetColumnTitle(l1));
       }
    }
}

.....
HandleEvent
cmInit :
{
    ShowTitlesForAllBrowsers();
}
end;
end.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: fields table

Сообщение n0where »

Вы не совсем меня поняли.
Вот задание:
написать экспорт в эксель таблицы.
таблиц 4. расположены они на 4 вкладках.

Чтобы не писать для каждой таблицы отдельно нужно сделать функцию типа
ExportToExcel( xTable: integer );
Которая бы вывела мне все поля со всеми данными, конечно с шапкой.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Ответить