【发布时间】:2012-05-17 05:18:16
【问题描述】:
我使用Delphi 7 的Crystal Reports VCL 从Delphi 运行Crystal Reports。我想从此 Delphi 应用程序设置当前参数值。我成功地为数字或字符串参数发送了这个值。但现在我正在努力处理将Allow Ranges 设置为True 的日期参数。
我得到的错误是:305:Error converting string to ValueInfo - ParamFields[2].CurrentValues.Add <StrToValueInfo>
我正在使用这个代码,就像我说的那样适用于 no Range 参数。在下面的代码中,参数PARAM_DATE 是一个允许范围的日期参数。知道如何传递范围值吗?
procedure TReportFrame.btnExecuteReportClick(Sender: TObject);
var
Crpe1 : TCrpe;
varArr : variant;
i : integer;
a : TCrpeParamFieldRangesItem;
b : TCrpeParamFieldCurrentValuesItem;
begin
SetCurrentDir( GetCommonFilesPath );
try
Crpe1 := TCrpe.Create(Self);
Crpe1.DiscardSavedData();
Crpe1.ReportName := getReportBasePath() + reportFileName;
Crpe1.IgnoreKnownProblems := true;
Crpe1.LoadEngineOnUse := true;
Crpe1.Connect.Clear;
Crpe1.Tables[0].ConnectBuffer := glbDBMan.GetConnectionString;
Crpe1.ParamByName('PARAM_SORTING_TYPE', EmptyStr).CurrentValue := VarToStr( paramSposobSortowania.getSelectedValue());
varArr := parameterOsobaOdpowiedzialna.getSelectedValues();
for i := VarArrayLowBound(varArr,1) to VarArrayHighBound(varArr,1) do
begin
Crpe1.ParamByName('PARAM_PERSON', EmptyStr).CurrentValues.Add(VarToStr( varArr[i]));
end;
// Crpe1.ParamByName('PARAM_DATA_ZLOZENIA_WNIOSKU', EmptyStr).CurrentValues.Add('2012-4-1');
// a := TCrpeParamFieldRangesItem.Create;
// a.RangeStart := '2012-4-1';
// a.RangeEnd := '2012-4-6';
// Crpe1.ParamByName('PARAM_DATE', EmptyStr).Ranges.Add();
// Crpe1.ParamByName('PARAM_DATE', EmptyStr).Ranges[0].RangeStart := '2012-4-1';
// Crpe1.ParamByName('PARAM_DATE', EmptyStr).Ranges[0].RangeEnd := '2012-4-6';
// Crpe1.ParamByName('PARAM_DATE', EmptyStr).CurrentValues.Add('2012-4-1');
//PARAM_DATE is a DATE Range
Crpe1.ParamByName('PARAM_DATE', EmptyStr).CurrentValues.Add('2012-4-1');
Crpe1.ParamByName('PARAM_DATE', EmptyStr).CurrentValues.Add('2012-4-6');
if Crpe1.Connect.Test then
Crpe1.Show
else
ShowMessage('Error Connecting');
Crpe1.DiscardSavedData;
finally
SetCurrentDir( ExtractFileDir(ParamStr(0)) );
end;
end;
【问题讨论】:
-
好的,我发现如果我输入的日期是这种格式 2012,4,7(逗号而不是减号)它可以工作。但是这样我只能传递一个值。我仍然无法通过范围...
-
在delphi项目中使用FastReport代替Crystal Report。FastReport比CR更简单快捷。
标签: delphi parameters crystal-reports report vcl