Страница 1 из 1
Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 13:55
Espada
Доброго времени суток. Подскажите пожалуйста такой вопрос: Разрабатываю интерфейс, хочу выгрузить данные из интерфейса в таблицу в памяти. Есть ли возможность обратиться к этой таблице из frm формы? Структура prj:
Код: Выделить всё
#include "g:\Рабочая папка\TablesForUPLMC.tbl"
#make 'g:\Рабочая папка\интерфейс Замены МЦ.vip'
#make 'g:\Рабочая папка\КатМЦ_Замена МЦ(УПЛ).frm'
в TablesForUPLMC.tbl - структура, в интерфейс Замены МЦ.vip идёт запись данных в таблицу, в КатМЦ_Замена МЦ(УПЛ).frm хотелось бы использовать данные...
Re: Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 14:43
RAJAH
Описать в файле таблицу table struct, включить этот файл по #include в проект и можно использовать.
Re: Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 15:14
Espada
RAJAH писал(а): ↑28 ноя 2023, 14:43
Описать в файле таблицу
table struct, включить этот файл по #include в проект и можно использовать.
пробую так сделать, описал структуру:
в проекте прописал #include "g:\Рабочая папка\TablesForUPLMC.tbl"
в интерфейсе записал данные в таблицу, закрываю интерфейс, потом идёт запрос из frm файла:
пишу вывод:
Код: Выделить всё
if(_MT.getfirst mt_All = tsOk)
{
Message('1: ' + _MT.mt_All.OsnMC_Name + ' -- ' + _MT.mt_All.ZamMC_Name);
};
но ничего не происходит, такое чувство что таблица очищается после закрытия интерфейса, либо я что-то делаю не так
Re: Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 16:37
RAJAH
Espada писал(а): ↑28 ноя 2023, 15:14
if(_MT.getfirst mt_All
Если без указания таблицы, просто
getfirst?
Re: Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 17:42
KVS
Если вы закроете все фейсы, которые открыли таблицу в памяти, она уничтожится.
Чтобы этого не произошло, следует увеличить счётчик ссылок на таблицу: function mtChangeRefCount(iTable, iCount: integer): longInt;
После окончания работы с таблицей, соответственно установить значение счётчика на 0.
Второй способ: запускать сначала frm, в которой через runinterface запускать фейс, который заполнит ТП;
Третий способ: табличные объекты/врапперы;
Четвёртый способ: sqlCreateTmpTableAs + ReinitTableAsTmp(позволит ТП превратить в полноценную таблицу, как будно она существует в словаре)
Re: Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 17:42
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 они видны... а с первой позицией что-то не так...
Re: Выборка данных из таблицы в памяти
Добавлено: 28 ноя 2023, 18:14
Irina_
Посмотрите заполнение ТП. Возможно, у Вас стоят какие-то условия на вставку записей. Можно параллельно вывести в протокол все записи, которые вставляете в ТП.
Re: Выборка данных из таблицы в памяти
Добавлено: 29 ноя 2023, 12:11
oiko
Не мучайтесь, а прикрутите форму к интерфейсу, тогда передадите в форму любой нужный вам массив данных.
Re: Выборка данных из таблицы в памяти
Добавлено: 29 ноя 2023, 15:10
Espada
не знаю, что произошло, но после очередного компилирования, всё заработало
всем спасибо за помощь)