【问题标题】:Pascal Script Fast ReportsPascal 脚本快速报告
【发布时间】:2017-06-20 03:58:48
【问题描述】:

编辑:

我不得不在快速报告中编辑一些旧的 Pascal 脚本,并且很难只返回不同的记录。任何帮助将不胜感激。

所以基本上,我调用存储过程来返回表中的数据。在这些列之一中,有时会有一个 1 字母代码(A、B、C),用于定义要获取报告的 rtf 文件。

目前它确实会获取相应代码的所有 rtf 文件,但有时代码会重复 (A,A),在这种情况下,我需要它只返回 DISTINCT rtf 文件。所以如果A已经被拉了,不要再拉了,继续在该列中寻找其他代码

我的代码: 注意:在 Memo93 中,我只是插入 (table."Class")

    procedure GroupHeader17OnBeforePrint(Sender: TfrxComponent );
var
       CarGroup: String     ;
       CarGroupLoop: String;  
begin  
                       CarGroup := Memo93.Value;
                       if not(CarGroup = CarGroupLoop) then
                       begin
                               try
                                       GroupHeader17.Visible := TRUE;
                                       rich23.richedit.lines.LoadFromFile('example\'+ trim(Get('@QteLanguage'))+ '\'+ trim(Get('@QteLanguage'))+'_Group_'+ trim(<Table."class">)+ '.rtf');

                               except
                                       GroupHeader17.Visible := FALSE;

                               end;
                       end
                       else
                       begin
                               GroupHeader17.Visible := False;
                       end;

                       CarGroupLoop := <table."Class">;

end;

这似乎已经完成了工作,只带回了不同的 rtf 文件。

procedure GroupHeader17OnBeforePrint(Sender: TfrxComponent );
var
       CarGroup: String     ;
       CarGroupLoop: String;
begin
                       CarGroup := Memo93.Value;
                       CarGroupLoop :=  <table."Class">;
                       if not(CarGroup = CarGroupLoop) then
                       begin
                               try
                                       GroupHeader17.Visible := TRUE;
                                       rich23.richedit.lines.LoadFromFile('example\'+ trim(Get('@QteLanguage'))+ '\'+ trim(Get('@QteLanguage'))+'_Group_'+ trim( <table."Class">)+ '.rtf');

                               except
                                       GroupHeader17.Visible := FALSE;

                               end;
                       end
                       else
                       begin
                               GroupHeader17.Visible := False;
                       end;



end;

【问题讨论】:

  • 听起来您想缓存已加载的文件(其中文件名由从数据集中读取的字符组成)以防止加载相同的文件(对于相同的字符)。但我不明白你提到的循环是什么意思。请您详细说明您的问题吗?
  • 欢迎来到 Stack Overflow。请注意,您忽略了提出问题,因此获得答案将具有挑战性。请edit您的问题准确地阐明您需要回答什么。鉴于目前没有显示循环,您可以先指出您遇到问题的循环。
  • 我基本上需要知道如何使用循环从数据表中的列中获取不同的代码列表。粘贴的代码仍然显示重复。所以我的意思是。我将如何遍历表格的行。

标签: delphi pascal fastreport


【解决方案1】:

尝试在 GroupHeader17OnBeforePrint 事件结束时使用CarGroup := &lt;table."Class"&gt;; 并移动CarGroupLoop := &lt;table."Class"&gt;;

    procedure GroupHeader17OnBeforePrint(Sender: TfrxComponent );
var
       CarGroup: String     ;
       CarGroupLoop: String;  
begin  
                       CarGroup :=  <table."Class">;
                       if not(CarGroup = CarGroupLoop) then
                       begin
                               try
                                       GroupHeader17.Visible := TRUE;
                                       rich23.richedit.lines.LoadFromFile('example\'+ trim(Get('@QteLanguage'))+ '\'+ trim(Get('@QteLanguage'))+'_Group_'+ trim(<Table."class">)+ '.rtf');

                               except
                                       GroupHeader17.Visible := FALSE;

                               end;
                       end
                       else
                       begin
                               GroupHeader17.Visible := False;
                       end;

                       CarGroupLoop := <table."Class">;

end;

【讨论】:

  • 嗨。这就是我第一次拥有它的方式。请参阅我帖子中的第一个代码括号
  • 使用CarGroup := &lt;table."Class"&gt;; 而不是CarGroup := Memo93.Value;
  • 感谢您的尝试。但事实并非如此
  • 创建有问题的小演示项目并发送到support@fast-report.com
  • 我将演示发送给支持
【解决方案2】:

试试

var CarGroup: String;      //global variable

procedure GroupHeader17OnBeforePrint(Sender: TfrxComponent);
var CarGroupLoop: String ;
begin
     CarGroupLoop := trim(<rpt_1_RHINO_Costing_Curr_Totals."SupplierClassCodeTransport">);
     if not(CarGroup = CarGroupLoop) then
       begin
         try
            //rich23.richedit.lines.LoadFromFile('D:\Data\Shares\GlobeTrackNew\QuoteInfo\Suppliers\Bidvest\'+ trim(Get('@QteLanguage'))+ '\'+ trim(Get('@QteLanguage'))+'_Group_'+ trim(<rpt_1_RHINO_Costing_Curr_Totals."SupplierClassCodeTransport">)+ '.rtf');
            GroupHeader17.Visible := TRUE;
            //rich23.richedit.lines.LoadFromFile('D:\Data\Shares\GlobeTrackNew\QuoteInfo\Suppliers\Bidvest\GER\GER_Group_I.rtf');
         except
            GroupHeader17.Visible := FALSE;
         end;
       end
     else
       GroupHeader17.Visible := FALSE;
     CarGroup := trim(<rpt_1_RHINO_Costing_Curr_Totals."SupplierClassCodeTransport">);
end;

procedure SubCarHireOnBeforePrint(Sender: TfrxComponent);
begin
  CarGroup := '';  
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多