Пользовательские функции

отредактировано 16:26 Раздел: FastReport Studio
суть:

в проекте на c#
подключаю пользовательскую функции:

InitReport(TfrxReportClass frx)
{
...

frx.AddFunction("function FindRecord(sql:string,Title: string): Long", "User functions", "sql - запрос ;Title - Заголовок окна, на выходе либо номер записи, либо -1, если ничего не найдено");
frx.AddFunction("function IntToNumStr(Value:ulong,Sex:int): String", "User functions", "value - Целое число, Sex - 1 - муж. 0 - жен. род, на выходе - число прописью");
frx.AddFunction("function toStr(Value:object): String", "User functions", "value - Varifyn,на выходе - строка");
frx.OnUserFunction += new IfrxReportEventDispatcher_OnUserFunctionEventHandler(OnUserFunction);
...
}

определяю обработчик


private void OnUserFunction(string FunctionName, object Argument, out object ResultValue)
{
System.Array arg = (Array)Argument;
long ret=-1;
string s="";
switch (FunctionName)
{
case "FINDRECORD":
try
{
if (!select_form.SelectValue(null, dbu.readSQLTable(parseVariable(arg, 0).ToString(), "Table"), "", out s, out ret, "", parseVariable(arg, 1).ToString()))
ret = -1;
}
catch { }
ResultValue = ret;
break;
case "TOSTR":
ResultValue= parseVariable(arg, 1).ToString();
break;
case "INTTONUMSTR":
ulong l = Convert.ToUInt64(parseVariable(arg, 0));
bool b = Convert.ToBoolean(parseVariable(arg, 1));
ResultValue = NumByWords.NumPhrase(l, :) ;
break;
default:
ResultValue = "Undefined user function: " + FunctionName;
break;
}
}

private object parseVariable(Array a, int i)
{
object r;
try
{
r = ((Array)a.GetValue(i)).GetValue(0);
}
catch
{
r = a.GetValue(i);
}
return r;
}


в теле отета делаю вызовы

[IntToNumStr([1234567890],[1])]

[toStr([1234567890])]

отрабатывают нормально

добавляю запрос
select num from table
выпечатываю поле NUM из запроса -
[q."num"]
- все пока работает.

А потом добавляю на мастердате вот такую фигню:
[toStr([q."num"])]

и все взрывается, не доходя до обработчика пользовательских функций : Error ni expression 'toStr(q."num")':Identificator exspected


Что бы это значило?




Комментарии

  • отредактировано 16:26
    написал:
    А потом добавляю на мастердате вот такую фигню:
    [toStr([q."num"])]
    В таком виде должно работать:
    [toStr(<q."num">)]

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.