FRM отчет и временная таблица

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

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

Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение Deinis »

edd писал(а):И как описать таблицу в проекте?
#Include путь_к_файлу_с_таблицей\сам_файл
#make "путь_к_FRM\Frm"
Больше ничего добавлять не надо или я что-то не так написал? Не видит таблицу и всё...
Создаем на диске папку с проектом. Папка называется "An_Sld".
В папке An_Sld создаем файл vip.cfg следующего содержания:

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

#INCLUDE \\GalMSK\D585$\vip.cfg
 [System]
   // для компиляции формы аналитики по группам счетов
   OpenResources=\\Galmsk\Gal58502$\EXE\Buh.res
 [Compilers]
   IncludesPath = INC
   OutputResourceName=D:\RES\An_Sld.res
Путь до res-файл пишешь свой. Также свой путь до общего файла vip.cfg (ежли таковой имеется).

В этой же папке создаем файл vip.bat следующего содержания:

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

Del Vip_Res.log

\\GalMSK\Gal58502$\EXE\vip.exe /c=vip.cfg An_Sld.prj /E=2 /L+

Del atlantis.res
Del leakage.log
Del *.tmp
RD HwDir
Путь до vip.exe прописать свой собственный.

Здесь же создаем еще один файл An_Sld.prj следующего содержания:

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

// подключим описание типов данных для некоторых таблиц в памяти (table struct)
#INCLUDE DicTypes.def
// подключим описание самих таблиц в памяти (table struct)
#INCLUDE DefTables_An_Sld.vpp

CONST
  coSaldoNM        = 8002 ; // системный код таблицы SaldoNM
  cgPick_Schet     = 65532; // счета без субсчетов, сохраняемые при выборе в PickBuh.KodTable
  cgPick_SubSch    = 65531; // счета с субсчетами, сохраняемые при выборе в PickBuh.KodTable
  // Вид оборотов
  VidOb_Db         = 1    ; // Записи в SaldoNM по ДЕБЕТУ  (SaldoNM.ViOb)
  VidOb_Kr         = 2    ; // Записи в SaldoNM по КРЕДИТУ (SaldoNM.ViOb)
  #INCLUDE KauConst.inc
  // действия, производимые интерфейсом 'DefTables_An_Sld' с таблицами в памяти
  InitTables       = 1    ;
  ClearTables      = 2    ;
END

#MAKE '*.vip'
#MAKE '*.rtf'
Здесь же создаем еще один файл DefTables_An_Sld.vip следующего содержания:

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

Interface DefTables_An_Sld 'Инициализация/очистка таблиц в памяти (Table Struct)' AlwaysReturn ;
   // AlwaysReturn - вернуть значения, даже если интерфейс завершился командой Abort

create view 
Var Action : word ; // действие с таблицами в памяти
as select *
from
      mtKatOrg
     ,mtDogovor
;

Parameters Action ;

HandleEvent
cmInit : {
           case Action of
             InitTables  : {
                             DELETE All From mtKatOrg  ;
                             DELETE All From mtDogovor ;
                             mtChangeRefCount( #mtKatOrg ,  1 );
                             mtChangeRefCount( #mtDogovor,  1 );
                           }
             ClearTables : {
                             DELETE All From mtKatOrg  ;
                             DELETE All From mtDogovor ;
                             mtChangeRefCount( #mtKatOrg ,  -1 );
                             mtChangeRefCount( #mtDogovor,  -1 );
                           }
           end; // case
           // mtChangeRefCount - увеличение/уменьшение кол-ва ссылок на мои Table struct - таблицы в памяти,
           // увеличение кол-ва ссылок - чтобы таблицами можно было пользоваться во всех других интерфейсах
           // уменьшение кол-ва ссылок - "грохнуть" таблицы из оперативной памяти
           Abort; // Чтобы не открывалось окошко интерфейса
         }
End;

END.
В начале твоего отчета (Link или ARD) ты пишешь

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

.begin
RunInterface('DefTables_An_Sld',InitTables);
end.
В конце твоего отчета (Link или ARD) ты пишешь

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

.begin
RunInterface('DefTables_An_Sld',ClearTables);
end.
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

а компилить, простите, FRM файл где при этом? В гале или в атлантисе? Или разницы никакой??
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение Deinis »

edd писал(а):а компилить, простите, FRM файл где при этом? В гале или в атлантисе? Или разницы никакой??
Запуском файла vip.bat
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

В принципе таблицу можно описать в самом проекте
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Лады, спасиб.
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Maverick писал(а):В принципе таблицу можно описать в самом проекте
Тогда у меня "таблица отстутсвует в словаре"..
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

прошу привести содержание файла проекта
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Maverick писал(а):прошу привести содержание файла проекта
Да он приведен вроде в самом верху
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Не пойму, для чего в папке проекта нужен описанные вами файлы vip.cfg и Vip.bat
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

И на строку #INCLUDE DicTypes.def компилятор говорит, что "тип уже определен: TNREC"
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение Deinis »

edd писал(а):И на строку #INCLUDE DicTypes.def компилятор говорит, что "тип уже определен: TNREC"
Edd, ты подстрой под себя эти файлы. Может тебе такая куча инклюдов не нужна. Я привел пример со своего проекта, реального. Мне эти инклюды были нужны.
Deinis
Местный житель
Сообщения: 783
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

Сообщение Deinis »

edd писал(а):Не пойму, для чего в папке проекта нужен описанные вами файлы vip.cfg и Vip.bat
vip.bat нужен для запуска компилятора. Я мог бы каждый раз писать, чтобы откомпилировать проект
__путь_до_vip.exe имя_файла_для_компиляции /R:_имя_выходного_файла.res и дальше куча других параметров
И что, такую строку набирать вручную каждый раз, как только захочу что-то отредактировать и запустить перекомпиляцию? Ты это предлагаешь? Хе, ну флаг в руки.... Проще написать батник, запускающий компиляцию, что я и сделал.

Затем
vip.cfg
Батник мы запустим, он в свою очередь запустит vip.exe, а где компилятор увидит настройки компиляции? Где он прочитает название выходного res-файла, где прописываются разные пути для включения??? Вот для этого при запуске vip.exe в батнике предусмотрен параметр "/c", который говорит, что конфигурацию смотреть в файле vip.cfg в текущем каталоге. Теоретически я мог бы в запускающей строке написать "/с=C:\tra_ta_ta.123", но это нужно???? проще ведь написать /c=vip.cfg, ведь так???
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Deinis писал(а):
edd писал(а):И на строку #INCLUDE DicTypes.def компилятор говорит, что "тип уже определен: TNREC"
Edd, ты подстрой под себя эти файлы. Может тебе такая куча инклюдов не нужна. Я привел пример со своего проекта, реального. Мне эти инклюды были нужны.
Согласен с этим, уже поговорил об этом, не нужны, так что сорри. :wink:
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Deinis писал(а): vip.bat нужен для запуска компилятора. Я мог бы каждый раз писать, чтобы откомпилировать проект
__путь_до_vip.exe имя_файла_для_компиляции /R:_имя_выходного_файла.res и дальше куча других параметров
И что, такую строку набирать вручную каждый раз, как только захочу что-то отредактировать и запустить перекомпиляцию? Ты это предлагаешь? Хе, ну флаг в руки.... Проще написать батник, запускающий компиляцию, что я и сделал.
Ну что за люди...Барабан на шею не хотел мне повесить ещё к тому же? Нет, я понимаю, что это правильный подход к работе, но че так грубо то? Если говорить о проще...
Deinis писал(а): Затем
vip.cfg
Батник мы запустим, он в свою очередь запустит vip.exe, а где компилятор увидит настройки компиляции? Где он прочитает название выходного res-файла, где прописываются разные пути для включения??? Вот для этого при запуске vip.exe в батнике предусмотрен параметр "/c", который говорит, что конфигурацию смотреть в файле vip.cfg в текущем каталоге. Теоретически я мог бы в запускающей строке написать "/с=C:\tra_ta_ta.123", но это нужно???? проще ведь написать /c=vip.cfg, ведь так???
Если говорить о проще, то название выходного файла Res он прочитает в общем для всего випа (на все времена) Vip.cfg в разделе [Compilers], который будет меняться в зависимости от задачи. Далее, если говорить опять же проще, зачем писать
Deinis писал(а): [System]
// для компиляции формы аналитики по группам счетов
OpenResources=\\Galmsk\Gal58502$\EXE\Buh.res
, если можно написать сразу OpenResources=\\Galmsk\Gal58502$\EXE\*.res, много времени для запуска это не займет. Опять же в общем, для всех запусков, vip.bat-файле, один раз, достаточно написать
Del atlantis.res
del *.tmp /q /s
del *.tmp /q /s /ah
del *.tmp /q /s /as

В FAR-e достаточно написать vip, перейти на файл проекта, нажать Ctrl+f для вставки в запускающую строчку и вперед. Компиляция в Res-файл началась.
Может что-то упустил ещё, но система та же.
Потому му я и спросил, зачем. Подход, повторюсь, замечательный, но не надо думать, что это единственно возможное решение. Только что такое "/E=2 /L+ " я не знаю ) Может пояснишь?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

насчет *.res категорически не согласен.
во первых не следует подрубать compdata.res и несколько других ресов.
во вторых нужно строго указать порядок подключения ресов, поскоку потом могут быть троблы с присоединенками, объектными фейсами и прочей пересекающейся бодягой.
Ответить