Ряд вопросов (наболело)
Использую FastReport 4.6.5 (интегрирован в стороннюю программу). Есть разница в данном случае в функциональности?
Как-то довольно слабовато, многое не устраивает.
1) создал DialogPage, поместил в него ComboBox. Как запретить редактирование списка (Items)?
2) в Code пишу ComboBox1. - почему после точки автоматически не выбираются нужные свойства из выпадающего списка? Это как-то настраивается?
3) почему если выделить текст не вызывается контекстное меню? Например, копирование я могу делать только на горячих клавишах. Я так понимаю о прочих прелестях цивилизации, типа быстрой справки по выделенному (например, для ComboBox1.Items я выделю Items) можно не спрашивать?
4) Как вызвать запрос из кода в нужный момент? Например по нажатию кнопки в DialogPage я хочу записать некие данные в базу. Если создать запрос в Data то он сработает единожды.
5) Сообщения об отсутствии ##table это глюк или фича? Таблица создается в хранимой процедуре вызываемой из одного запроса, и читается в другом запросе. Вот он-то при открытии (для редактирования) отчета ругается что мол нет такой таблицы, конечно ее может не быть, она же временная. Все-бы ничего, да FastReport висит после такого сообщения.
Как-то довольно слабовато, многое не устраивает.
1) создал DialogPage, поместил в него ComboBox. Как запретить редактирование списка (Items)?
2) в Code пишу ComboBox1. - почему после точки автоматически не выбираются нужные свойства из выпадающего списка? Это как-то настраивается?
3) почему если выделить текст не вызывается контекстное меню? Например, копирование я могу делать только на горячих клавишах. Я так понимаю о прочих прелестях цивилизации, типа быстрой справки по выделенному (например, для ComboBox1.Items я выделю Items) можно не спрашивать?
4) Как вызвать запрос из кода в нужный момент? Например по нажатию кнопки в DialogPage я хочу записать некие данные в базу. Если создать запрос в Data то он сработает единожды.
5) Сообщения об отсутствии ##table это глюк или фича? Таблица создается в хранимой процедуре вызываемой из одного запроса, и читается в другом запросе. Вот он-то при открытии (для редактирования) отчета ругается что мол нет такой таблицы, конечно ее может не быть, она же временная. Все-бы ничего, да FastReport висит после такого сообщения.
Комментарии
Без изменения исходников никак.
2-3. У нас упрощенный синтаксис мемо.
4. ExecSQL.
5. Дизайнер заполняет дерево данных при открытии шаблона и естественно для этого пытается обработать датасеты(получить список полей).
Можно пример?
procedure ButtonSaveOnClick(Sender: TfrxComponent); // СОХРАНИТЬ НАСТРОЙКИ
begin
qrySaveConfig.ExecSQL;
end;
DECLARE @S1_B INTEGER -- НАЧАЛО ПЕРВОЙ СМЕНЫ
SET @S1_B=:S1_B
UPDATE Tablica SET S1_B=@S1_B WHERE USERNAME='Администратор'
А вот так записывается 10, т.е. не передается :S1_B
DECLARE @S1_B INTEGER -- НАЧАЛО ПЕРВОЙ СМЕНЫ
SET @S1_B=10
UPDATE Tablica SET S1_B=@S1_B WHERE USERNAME='Администратор'
Просто фантастика! В другом запросе в том же отчете тот же параметр передается как надо. Я уже всяко пробовал, и имена разные и вообще разные переменные передавать, все-равно всегда ноль получаю.
Точно так же, как это делается и в самой Delphi.
Уже простой запрос для проверки создал - qrySaveConfig:
DECLARE @S_INDEX INTEGER -- ИНДЕКС СТРОКИ В СПИСКЕ
SET @S_INDEX=:S_INDEX
SELECT @S_INDEX as S_INDEX
Это в коде:
Обработчик события (выбор из списка):
procedure ComboBox2OnClick(Sender: TfrxComponent);
begin
S_INDEX:=ComboBox2.ItemIndex
end;
Обработчик события (нажатие кнопки):
procedure ButtonSaveOnClick(Sender: TfrxComponent); // СОХРАНИТЬ НАСТРОЙКИ
begin
qrySaveConfig.ExecSQL;
end;
Если не жать кнопку (т.е. не выполняю qrySaveConfig.ExecSQL; ) в бэнде [qrySaveConfig."s_index"] возвращает правильное значение, а вот если нажать всегда получаю ноль. В профайлере смотрю, ноль подставляется. Даже если перед qrySaveConfig.ExecSQL; поставить S_INDEX:=1; В чем проблема? Я уже кучу времени на простые вещи потратил, ужас.
VALUE1:=10;
Query1.SQL.Clear;
Query1.SQL.Add('UPDATE TABLICA SET POLE1='+IntToStr(VALUE1));
Query1.ExecSQL;
Query1.Close;
В принципе, думаю любую переменную можно будет сохранить. Никак иначе не получалось.
Ну что, нельзя было проще сделать? Да уж, далеко вам до 1С...