2017-06-06 73 views
0

编辑:Pascal脚本快速报告

林到快餐报告编辑一些老Pascal脚本和正处于一个艰难的时间只返回重复的记录。任何帮助,将不胜感激。

所以基本上,我打电话一个存储过程返回表中的数据。在其中一列中,有时会有一个字母代码(A,B,C),它定义了要为报告提取哪个rtf文件。

目前它确实去获取各自代码的所有rtf文件,但有时代码重复(A,A),在这种情况下,我需要它只返回DISTINCT rtf文件。因此,如果是allready拉,不要再拉和携带该列中

我的代码寻找其他代码: 注:(表“类”)在Memo93我只是插入

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; 
+0

听起来要缓存(该文件名是由已经加载的文件由从数据集读取的字符),以防止加载相同的文件(对于相同的字符)。但是我不明白你提到的循环的意思。你能详细说明一下你的问题吗? – Victoria

+1

欢迎来到Stack Overflow。请注意,您已经忽略了提出问题,因此获得答案将证明具有挑战性。请[编辑]你的问题,以明确你需要的答案。考虑到现在没有显示循环,你可以先指出你遇到什么问题。 –

+0

我基本上需要知道如何通过使用循环从数据表中的列中获取不同的代码列表。粘贴的代码仍然显示重复。所以我的意思是。我将如何循环遍历表的行。 –

回答

0

尝试使用CarGroup := <table."Class">;和GroupHeader17OnBeforePrint事件

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; 
+0

嗨。那是我先拿到的。见我的帖子第一个代码括号 –

+0

使用'CarGroup:= <表。“类”>;'而不是'CarGroup:= Memo93.Value;' – gpi

+0

感谢您的试用。但不是那个 –

0

年底移动CarGroupLoop := <table."Class">;尝试

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;