Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport - передача переменной в отчет / 11 сообщений из 11, страница 1 из 1
25.04.2019, 11:12
    #39806067
ECMAScriptNinja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
Добрый день! Подскажите по вопросу:

Пытаюсь передать в отчет переменную и получаю ошибку с "could not convert variant of type (string) into type (boolean)".
Может подскажете в чем дело?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
procedure TfrGurnal_instruktag.VDG3Click(Sender: TObject);
var
i,j,NOM_ABON: Integer;
begin
 //--очищаем временную таблицу
 dmProc.DEL_TABLE('z_test2');
 for i := 0 to cxINSTRUKTAG.Controller.SelectedRecordCount -1 do
  begin
     j:=cxINSTRUKTAG.Controller.SelectedRecords[i].RecordIndex;
     NOM_ABON:=cxINSTRUKTAG.DataController.Values[j, 1];   //Получаю переменную которую планирую передать
  end;
  with dmOne.ibIBSQL_DOP do
      begin
        Report.LoadFromFile(ReportPath + '3VDG.fr3', False);
        Report.Variables['NOM_ABON'] := '''' + inttostr(NOM_ABON) + '''';  //Передаю переменную и явно преобразую в строку
        Report.ShowReport;
    end;

end;
...
Рейтинг: 0 / 0
25.04.2019, 11:18
    #39806074
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
нужно передавать как 1 или 0

Report.Variables['NOM_ABON'] := 1;

Report.Variables['NOM_ABON'] := 0;
...
Рейтинг: 0 / 0
25.04.2019, 11:21
    #39806077
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
пардон, как строку, но без кавычек

Report.Variables['NOM_ABON'] := '1';

Report.Variables['NOM_ABON'] := '0';
...
Рейтинг: 0 / 0
25.04.2019, 11:21
    #39806079
ECMAScriptNinja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
Кроик Семённужно передавать как 1 или 0

Report.Variables['NOM_ABON'] := 1;

Report.Variables['NOM_ABON'] := 0;

В переменной NOM_ABON будет значение от 1-6 символов типа int...мне нужно передать это значение к примеру '22345'.
...
Рейтинг: 0 / 0
25.04.2019, 11:28
    #39806087
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
судя по "could not convert variant of type (string) into type (boolean)" переменная NOM_ABON объявлена как boolean
...
Рейтинг: 0 / 0
25.04.2019, 11:31
    #39806092
ECMAScriptNinja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
Кроик Семёнсудя по "could not convert variant of type (string) into type (boolean)" переменная NOM_ABON объявлена как boolean

Вот и я думаю в чем подвох ведь переменная объявлена в integer в начале процедуры.
i,j,NOM_ABON: Integer;

На соседней форме все отлично работает...на этой же все что-то с чем-то......
...
Рейтинг: 0 / 0
25.04.2019, 11:37
    #39806099
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
Что значит "в начале процедуры"? Она должна быть глобальная в скрипте, только тогда её можно инициализировать из кода извне


OFF
Из своего опыта:

раньше активно использовал переменные для передачи в FR, например, текста в заголовке, или еще каких-нибудь на лету сгенеририванных параметров. Сегодня отошел от этой практики, использую in-memory Dataset с единственной строкой, в котором каждое поле и есть то, что я раньше делал переменной. In-memory Dataset'ов много бывает: TClientDataset, TVirtualTable (от DevArt), TdxMemData (от DevExpress) и т.д. Или тот же TfrxUserDataset (от FastReport) можно было бы использовать.
...
Рейтинг: 0 / 0
25.04.2019, 11:47
    #39806112
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
P.S.
...
Рейтинг: 0 / 0
25.04.2019, 11:50
    #39806116
ECMAScriptNinja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
Кроик СемёнЧто значит "в начале процедуры"? Она должна быть глобальная в скрипте, только тогда её можно инициализировать из кода извне


OFF
Из своего опыта:

раньше активно использовал переменные для передачи в FR, например, текста в заголовке, или еще каких-нибудь на лету сгенеририванных параметров. Сегодня отошел от этой практики, использую in-memory Dataset с единственной строкой, в котором каждое поле и есть то, что я раньше делал переменной. In-memory Dataset'ов много бывает: TClientDataset, TVirtualTable (от DevArt), TdxMemData (от DevExpress) и т.д. Или тот же TfrxUserDataset (от FastReport) можно было бы использовать.

Благодарю! Посмотрю. Только начал работать с делфи, поэтому из вашего сообщения мало чего понял...Но законспектировал(на будущее).

прошелся отладчиком оказалось что в переменную не записалось значение....
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
procedure TfrGurnal_instruktag.VDG3Click(Sender: TObject);
var
i,j: Integer;
begin
 //--очищаем временную таблицу
 dmProc.DEL_TABLE('z_test2');
 for i := 0 to cxINSTRUKTAG.Controller.SelectedRecordCount -1 do
  begin
     j:=cxINSTRUKTAG.Controller.SelectedRecords[i].RecordIndex;
     NOM_ABON:=cxINSTRUKTAG.DataController.Values[j, 1];  // Не записывается значение
  end;
  with dmOne.ibIBSQL_DOP do
      begin
        Report.LoadFromFile(ReportPath + '3VDG.fr3', False);
        Report.Variables['NOM_ABON']:= '''' + inttostr(NOM_ABON) + '''';
        Report.ShowReport;
    end;
  end;



Может подскажете почему? Что не так? NOM_ABON объявил глобально. Может что в свойствах упустил самой таблицы TcxGrid?
...
Рейтинг: 0 / 0
25.04.2019, 11:59
    #39806124
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
я подзабыл, сейчас взглянул: есть 2 типа глобальных переменных.
Первые объявляются в коде скрипта, как я показал на скриншоте, вторые в дизайнере в разделе "переменные"

И инициализация их извне по-разному:

Код: pascal
1.
2.
   Report.Variables.Variables['NOM_ABON']:=....
   Report.Script.Variables['NOM_ABON']:=....
...
Рейтинг: 0 / 0
25.04.2019, 12:06
    #39806132
ECMAScriptNinja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport - передача переменной в отчет
Кроик Семёня подзабыл, сейчас взглянул: есть 2 типа глобальных переменных.
Первые объявляются в коде скрипта, как я показал на скриншоте, вторые в дизайнере в разделе "переменные"

И инициализация их извне по-разному:

Код: pascal
1.
2.
   Report.Variables.Variables['NOM_ABON']:=....
   Report.Script.Variables['NOM_ABON']:=....



Благодарю за помощь!
Разобрался. Сейчас сижу на чужом проекте и дорабатываю его. Делфи слабо знаю. Оказалось что я в переменную integer пытался впихнуть данные string(правда ошибки почему-то не показывало). Когда я циклом проходил по TcxGrid я выбирал при присваивании не то поле(визуально это была первая колонка, а по факту оказалась 5я).
На самом деле вы мне очень помогли с тем вопросом который у меня витал с самого начала работы с делфи и не знал с какой стороны подойти.

Проблему решил, все красиво.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport - передача переменной в отчет / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]