Выборка данных из таблицы в памяти

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

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

Ответить
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Выборка данных из таблицы в памяти

Сообщение Espada »

Доброго времени суток. Подскажите пожалуйста такой вопрос: Разрабатываю интерфейс, хочу выгрузить данные из интерфейса в таблицу в памяти. Есть ли возможность обратиться к этой таблице из frm формы? Структура prj:

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

#include "g:\Рабочая папка\TablesForUPLMC.tbl"

#make 'g:\Рабочая папка\интерфейс Замены МЦ.vip'
#make 'g:\Рабочая папка\КатМЦ_Замена МЦ(УПЛ).frm' 
в TablesForUPLMC.tbl - структура, в интерфейс Замены МЦ.vip идёт запись данных в таблицу, в КатМЦ_Замена МЦ(УПЛ).frm хотелось бы использовать данные...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Выборка данных из таблицы в памяти

Сообщение RAJAH »

Описать в файле таблицу table struct, включить этот файл по #include в проект и можно использовать.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: Выборка данных из таблицы в памяти

Сообщение Espada »

RAJAH писал(а): 28 ноя 2023, 14:43 Описать в файле таблицу table struct, включить этот файл по #include в проект и можно использовать.
пробую так сделать, описал структуру:

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

Table Struct mt_All
(
Nrec          : comp, 
...)
в проекте прописал #include "g:\Рабочая папка\TablesForUPLMC.tbl"
в интерфейсе записал данные в таблицу, закрываю интерфейс, потом идёт запрос из frm файла:

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

.create view _MT
from mt_All
;
пишу вывод:

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

if(_MT.getfirst mt_All = tsOk)
{
  Message('1:  ' + _MT.mt_All.OsnMC_Name + ' -- ' +  _MT.mt_All.ZamMC_Name);
}; 
но ничего не происходит, такое чувство что таблица очищается после закрытия интерфейса, либо я что-то делаю не так :cry:
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Выборка данных из таблицы в памяти

Сообщение RAJAH »

Espada писал(а): 28 ноя 2023, 15:14 if(_MT.getfirst mt_All
Если без указания таблицы, просто getfirst?
KVS
Новичок
Сообщения: 27
Зарегистрирован: 03 фев 2020, 10:38

Re: Выборка данных из таблицы в памяти

Сообщение KVS »

Если вы закроете все фейсы, которые открыли таблицу в памяти, она уничтожится.
Чтобы этого не произошло, следует увеличить счётчик ссылок на таблицу: function mtChangeRefCount(iTable, iCount: integer): longInt;
После окончания работы с таблицей, соответственно установить значение счётчика на 0.

Второй способ: запускать сначала frm, в которой через runinterface запускать фейс, который заполнит ТП;
Третий способ: табличные объекты/врапперы;
Четвёртый способ: sqlCreateTmpTableAs + ReinitTableAsTmp(позволит ТП превратить в полноценную таблицу, как будно она существует в словаре)
Последний раз редактировалось KVS 28 ноя 2023, 17:47, всего редактировалось 2 раза.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: Выборка данных из таблицы в памяти

Сообщение Espada »

RAJAH писал(а): 28 ноя 2023, 16:37
Espada писал(а): 28 ноя 2023, 15:14 if(_MT.getfirst mt_All
Если без указания таблицы, просто getfirst?
тоже не отрабатывало, переделал через цикл:

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

_MT._loop mt_All
{
  Message('1:  ' + _MT.mt_All.OsnMC_Name + ' -- ' +  _MT.mt_All.ZamMC_Name);
}; 
но вот что интересно, код сам запускается из каталога МЦ. когда я помечаю одну позицию и запускаю код, проявляется эта проблема. но если я помечаю несколько позиций, то начиная со второй позиции всё работает нормально! т.е. запускается ещё раз интерфейс, записываю даттые в таблицу в памяти, и потом в frm они видны... а с первой позицией что-то не так...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Irina_
Местный житель
Сообщения: 547
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Выборка данных из таблицы в памяти

Сообщение Irina_ »

Посмотрите заполнение ТП. Возможно, у Вас стоят какие-то условия на вставку записей. Можно параллельно вывести в протокол все записи, которые вставляете в ТП.
oiko
Местный житель
Сообщения: 417
Зарегистрирован: 29 мар 2005, 17:49

Re: Выборка данных из таблицы в памяти

Сообщение oiko »

Не мучайтесь, а прикрутите форму к интерфейсу, тогда передадите в форму любой нужный вам массив данных.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

Re: Выборка данных из таблицы в памяти

Сообщение Espada »

не знаю, что произошло, но после очередного компилирования, всё заработало :grin:
всем спасибо за помощь)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Ответить