Raporda tanımlı bileşenler üzerinde (view, richview ve image bileşenleri) ' [[tabloadi."alanadi"]+[COPY(tabloadi."alanadi", 1, 1)]+[tabloadi."alanadi"]] biçiminde scriptler var. Bu scriptleri kaldırdığımda istisna oluşmuyor. Öte yandan, istisnanın TfrxReport bileşeni Calc işlevinde oluştuğunu gördüm. Anladığım kadarıyla, rapordaki bileşenler script ifadelerini raporun Calc işlevine geçiyorlar ve sonucu string tanımlı Text özelliklerine atıyorlar. İşlev bir şekilde, Variant yerine VariantArray döndürüyor ve VariantArray tipi string tipine atanamadığı için de istisna çıkıyor.
Peki neden ? Bu konuda fikri olan varsa, şimdiden teşekkürler ...
Kod: Tümünü seç
function TfrxReport.Calc(const Expr: String; AScript: TfsScript = nil): Variant;
var
ErrorMsg: String;
CalledFromScript: Boolean;
begin
CalledFromScript := False;
if Integer(AScript) = 1 then
begin
AScript := FScript;
CalledFromScript := True;
end;
if AScript = nil then
AScript := FScript;
if not DoGetValue(Expr, Result) then
begin
Result := FExpressionCache.Calc(Expr, ErrorMsg, AScript);
if ErrorMsg <> '' then
begin
if not CalledFromScript then
begin
if FCurObject <> '' then
ErrorMsg := FCurObject + ': ' + ErrorMsg;
FErrors.Add(ErrorMsg);
end
else ErrorMsg := 'Error in Calc expression: ' + ErrorMsg;
raise Exception.Create(ErrorMsg);
end;
end;
end;