2017-06-06 58 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;