Вываливает таблицу остатков у которых период меньше заданного
РегТовар.period < @ВыбДата
Таким способом можно получить остатки ТОЛЬКО на ТА или на конец периода (если периодичность - "месяц", значит на конец месяца).
И еще парочка советов:
- в строке
ДатаФормат = СокрЛП(Формат(ВыбКонПериода,"ДГГГГММДД"));
нет необходимости
-
Запрос.ВыполнитьЗапрос("create virtual table Рег using dbeng(РегистрИтоги.ОстаткиТоваров)");
тоже лишняя, достаточно в запросе указать имя этой таблице и она автоматом подключется, если не была подключена ранее
Должно получиться примерно так:
базаДанных.Открыть(":memory:");
базаДанных.УложитьОбъекты(ВыбТМЦ,"ВыбрТовар",0,"Номенклатура");
Запрос = базаДанных.НовыйЗапрос();
запрос.ВыполнитьЗапрос("PRAGMA journal_mode = OFF");
текст="
|SELECT
| РегТовар.Фирма [Фирма :Справочник.Фирмы]
| ,РегТовар.Склад [Склад :Справочник.МестаХранения]
| ,РегТовар.Товар [Товар :Справочник.Номенклатура]
| ,РегТовар.period
| ,РегТовар.ОстатокТовара
|FROM [РегистрИтоги.ОстаткиТоваров] РегТовар
|WHERE РегТовар.period = @ВыбДата
| AND РегТовар.Фирма = @ВыбФирма AND РегТовар.Склад = @ВыбСклад
| AND РегТовар.Товар in (select val from ВыбрТовар)
|";
Запрос.Подготовить(текст);
запрос.УстановитьПараметр("@ВыбДата", ВыбКонПериода);
запрос.УстановитьПараметр("@ВыбФирма", ВыбФирма);
запрос.УстановитьПараметр("@ВыбСклад", ВыбСклад);
И еще вопрос. Тебе именно параметризованный запрос нужен?