国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

汽車業務管理系統(VBMS)使用FastReport設計報表(二)

原創|其它|編輯:郝浩|2012-09-03 14:05:58.000|閱讀 761 次

概述:根據報表需求的不同,你可以利用多種報表方式完成報表。下面我將結合VBMS中已經實現的報表范例講述各種報表的設計方法和思路。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

汽車業務管理系統(VBMS)使用FastReport設計報表(一)

一、 報表設計與范例

根據報表需求的不同,你可以利用多種報表方式完成報表。下面我將結合VBMS中已經實現的報表范例講述各種報表的設計方法和思路。FastReport

1、簡單報表(Simple list)

*報表格式

一般由報表抬頭、頁首、頁腳(或者欄首、欄尾,或者頭、尾)、主項數據組成。

*報表范例

#商品檔案列表

步驟如下

1. 新建數據源(FIB Components->FIB Query),起名tblProduct。(修改Name屬性)

2. 獲取所需數據(tblProduct->SQL)。

3. 依次添加ReportTitle、PageHeader、MastData、PageFooter區域。

4. 設置MastData區域連接的數據源->tblProduct。(雙擊MastData區域)

5. 在ReportTitle中添加文本對象,錄入報表名稱。

6. 在PageHeader中添加若干文本對象,錄入字段中文名稱。

7. 在MastData中添加若干文本對象,并連接該文本對象至對應數據字段。(可以從下拉框中選取)

8. 在PageFooter中添加文本對象,錄入頁碼。(使用FastReport中的系統變量 [Page])

SQL語句:

SELECT * FROM TB_PRODUCT;

《備注:一般報表都是從簡單開始構建,然后逐步細化后得出的。因此可以利用FastReport報表中的新建報表向導功能(菜單->文件->新建…->標準報表向導)快速搭建起一個報表的雛形,而且他會自動將各個字段排列整齊,這樣可以節約一些時間。

如果希望在報表抬頭打印本公司的名稱以及電話等信息,可以使用自定義變量(Custom)中的相關變量,該變量內容為VBMS在參數設置中定義的本公司資料。

在向PageHeader中添加中文欄目和向MastData中添加數據字段時,你可以直接用鼠標從右側的數據列表框中拖拽相應字段到相應的區域中。你可以將欄目和字段一起建立,當然數據列表框下方的多選框要打勾。

可以在PageFooter中添加頁碼(Page)和總頁數(TotalPages)。一般在文本對象中的格式為:共[TotalPages]頁第[Page]頁。但是需要聲明的是,必須將報表設置成兩遍報表(Double pass)模式后TotalPages變量才起作用否則為0。這很好理解,當報表引擎(Engine)執行第一遍時并不知道數據將充滿幾頁紙,只有當第一遍完成后才計算得出,因此需要二遍報表才能打印出總的頁數。因此兩遍報表在FastReport中是一個重要概念,對于某些特殊報表可能會用到。例如:需要將統計的合計值打印在所有明細之前而不是之后。》

技巧

前面說過,你可以利用字段別名修改英文的字段名稱為中文名稱,這樣對于系統不很熟悉的人也可以看得懂報表。這里介紹另一個方法,使用該方法既可以達到修改中文名稱的目的,又可以令報表制作更加快捷。例如還是上面這張商品檔案列表。我們可以直接在SQL語句中加入中文別名。如下所示:

SQL語句(中文別名需要用雙引號包含)

SELECT PRODUCTNUMBER AS "商品編號",

PRODUCTNAME AS "品名規格",

PRODUCTUNIT AS "單位",

SELLPRICE AS "零售價"

FROM TB_PRODUCT

這樣做的好處,一是報表中的數據字段均為中文容易理解,二是在執行上面6、7步驟時,你可以拖拽右側的數據字段同時建立欄目頭和字段,而此時欄目頭中也跟隨著變成了中文,避免了重新修改成中文的麻煩。當然由于vbms中的報表數量龐大,因此并未采用這種方法。

*報表中的變量

FastReport中的變量分為三種。

#系統變量

系統定義的一些與報表打印相關的變量,這里介紹幾個常用的變量。

  • Date --- 系統當前日期
  • Time --- 系統當前時間
  • TotalPages --- 總頁數(必須設置Double pass)
  • Page --- 當前頁碼
  • Line --- 當前行序號
  • Line# --- 也是當前行序號,但區別是在一個新的數據區域(Band)內該變量將重新計數。

#自定義變量(Custom)

自定義變量是由VBMS系統傳入到報表系統中的。

#編程(Code)中使用的全局變量

你可以在Code頁的起始處定義一些需要的全局變量。

例如:

var

S: string;

這里S就成了一個全局的字符型變量,你可以對它進行賦值、取值。也可以在文本對象中引用它,格式為:[<S>]。

《備注:其實在FastReport報表系統中,所有對象諸如頁(Page)、區域(Band)、文本對象(TextObject)、對話框控件、數據源字段、系統變量、自定義變量等,你均可以在文本對象中顯示他們的值,只是引用他們的方式不同罷了。

例如:通過文本對象(TextObject)

打印文本編輯框的內容可以引用Text屬性,格式:[Edit1.Text]。

打印公司名稱可以引用自定義變量,格式:[CompanyName]。

打印數據字段值,格式:[tblProduct."商品編號"]。其實數據字段也可以看成變量。

打印自定義的全局變量,格式:[<S>]。這里S需要用尖括號包含,其實一般情況下對于變量而言均需要用尖括號包含,只是FastReport對于非自定義的變量(不是在Code中定義的)有了一個預先判斷,允許省略尖括號而已,你加上尖括號也不會出錯。但在編程(Code)中所有變量被引用就一定需要有尖括號。

特別提醒:在文本對象中打印所有變量都必須用中括號[]將變量包含起來。》

2、主從報表(Master Detail)

*報表格式

一般由報表抬頭、頁首、頁腳(或者欄首、欄尾,或者頭、尾)、主項數據、細項數據組成。

*報表范例

#銷售單據列表

步驟如下

1. 新建2個數據源(FIB Components->FIB Query),起名tblOrder、tblItem。

2. 獲取所需數據(tblOrder->SQL、tblItem->SQL)。

3. 依次添加ReportTitle、PageHeader、MastData、Header、DetailData、Footer、PageFooter區域。

4. 設置MastData區域連接的數據源->tblOrder,DetailData->tblItem。

5. 在ReportTitle中添加文本對象,錄入報表名稱。

6. 在PageHeader中添加若干文本對象,錄入字段中文名稱(單據頭)。

7. 在MastData中添加若干文本對象,并連接該文本對象至對應數據字段。

8. 在Header中添加若干文本對象,錄入字段中文名稱(單據體)。

9. 在DetailData中添加若干文本對象,并連接該文本對象至對應數據字段。

10. 在Footer中添加System Text對象,用于顯示金額合計。

11. 在PageFooter中添加文本對象,錄入頁碼。(使用FastReport中的系統變量 [Page])

SQL語句:

#tblOrder

SELECT * FROM TB_ORDER WHERE ORDERTYPE='銷售出庫';

#tblItem

SELECT * FROM TB_ITEM WHERE ORDERID=:ORDERID;

《備注:主從報表的關鍵是需要關聯主數據源和從數據源。一般情況需要通過以下方式關聯:

#從數據源的SQL語句中一般需要有用于關聯的關鍵字段(外鍵)。例如上例中的ORDERID=:ORDERID。前面的ORDERID為tblItem的外鍵,即明細數據通過ORDERID與某一條主項數據關聯。而:ORDERID為一個變量(在SQL語句中使用<冒號+變量名稱>表示一個變量)。而一般這個變量的名稱(ORDERID)的定義與tblOrder(主項數據)中的主鍵的名稱相同,即變量名稱定義為:ORDERID而不是:O或者其他。這樣做的目的是系統可以自動進行匹配。

#定義tblItem的屬性Master等于tblOrder。這樣明細數據就被主項數據所控制了。

#定義tblItem的屬性Params中的變量ORDERID的類型為整型(Integer),值為變量<tblOrder."ORDERID">。當你打開Params時,ORDERID變量已經默認存在了,這是因為你在tblItem的SQL中定義了這個變量的緣故。將來你可能會在一個數據源中定義多個變量,操作方法是相同的。設置值等于<tblOrder.&quot;ORDERID">表示當需要獲取:ORDERID變量的值時,將會從主項數據中獲取。這樣當主項數據的ORDERID發生變化時,明細數據也隨之變化。這個值的選取你可以通過按鈕(fx)更方便的獲取》

*SystemText對象

該對象與文本對象(TextObject)基本上相同,區別在于使用SystemText可以更加方便的對一個數據集進行求和或者其他的操作。雖然你也可以直接在文本對象(TextObject)中使用求和函數對數據集進行求和,不過使用SystemText可以令你不需要記憶許多函數,因為它幫你做了,基本上它就是一個構建函數向導的工具。當然如果你對FastReport中的函數比較熟悉,完全可以不必使用SystemText而直接使用TextObject更加快捷。

SystemText的用法如下:

#放置一個SystemText對象到Footer中,用于對銷售明細數據中的金額進行求和。

#系統會立即彈出一個對話向導框。你可以選擇三種方式中的一種:系統變量、求和、文本。這里主要將求和,另外兩種方式很好理解(系統變量用于打印時間、頁碼等,而文本與TextObject中一樣)。

#選擇求和(Ageregate value)。選擇函數->SUM(其他為最大值、最小值、平均值、數量),數據Band->DetailData1(設置你需要求和的數據區域,這里當然是明細數據),數據庫->tblItem(上一步選擇好后,系統自動會設定為該數據區域連接的數據源),下一步你可以從數據字段中選擇需要求和的字段(例如:TotalTaxSum)。或者在表達式中構造更為復雜的求和內容(這里暫不講述)。

#按確定后,SystemText中的文本自動生成為[SUM(<tblDetail."TOTALTAXSUM">;,MasterData2)]。當你再次雙擊該SystemText,你會發現對話框中系統默認為文本,而文本內容就是上面的內容。由此可見,SystemText其實就是TextObject加上函數向導。

《備注:大家如果仔細會發現在求和向導對話框中有兩個選項,一個是";計算不可見Band的數據",一個是"執行總數"。這兩個選項是做什么用的呢?

"計算不可見Band的數據":有時候在報表中我們會對數據源做一些設置,例如滿足某些條件的數據不顯示出來(例如:維修結算單打印中僅打印自付內容)。那么這個選項可以使得系統在求和時只計算可見的數據。

"執行總數":我們知道,對于主從報表中明細的求和,例如銷售明細中商品的銷售金額。該金額是表示本單據的合計。當單據變化時,這個合計值也隨之變化。而有些時候,我們可能不希望這樣,而是希望有一個值一直在累加合計金額,而不是隨著單據的變化這個合計值被重置。那么這個選項可以使得系統一直累計合計值直到最后一張單據。

上面兩個選項對于很多報表是很有用處的。》

*SUM函數

完整定義:SUM(Expr,Band,Flags);

  • Expr:你需要求和的變量或者更加復雜的函數,例如:<tblItem."TOTALTAXSUM">。
  • Band:你需要求和的數據區域名稱,例如:DetailData1。
  • Flags:默認為0,可以省略。

1 --- 計算不可見Band數據

2 --- 執行總數

3 --- 1 并且2(計算不可見Band數據 并且 執行總數)

3、分組報表(Group)

*報表格式

一般由報表抬頭、群組首、主項數據、群組尾組成。

*報表范例

#商品檔案報表(按商品分類分組)

步驟如下

1. 新建1個數據源(FIB Components->FIB Query),起名tblProduct。

2. 獲取所需數據(tblProduct->SQL)。

3. 依次添加ReportTitle、GroupHeader、MastData、GroupFooter區域。

4. 設置MastData區域連接的數據源->tblProduct。

5. 在ReportTitle中添加文本對象,錄入報表名稱。

6. 雙擊GroupHeader,設置分組條件,選擇數據字段tblProduct->PRODUCTSORT。

7. 在MastData中添加若干文本對象,并連接該文本對象至對應數據字段。

8. 在GroupHeader中添加若干文本對象,錄入字段中文名稱。

9. 在GoupHeader中添加一個文本對象,錄入<tblProduct."PRODUCTSORT">。用于顯示商品分類名稱。

10. 在GroupFooter中添加System Text對象,用于顯示合計數。

11. 在PageFooter中添加文本對象,錄入頁碼。(使用FastReport中的系統變量 [Page])

SQL語句:

SELECT * FROM TB_PRODUCT ORDER BY PRODUCTSORT;

《所謂分組報表,就是按某一個字段進行分組顯示,該字段具有相同的值的數據記錄將被歸類顯示在一起。例如:上例中將商品檔案按照商品分類歸類顯示。

要達到分組的目的,其中一個關鍵是該數據集必須按分組條件排序。即SQL語句中一定要有ORDER BY這樣的排序語句,而排序字段就是分組的字段。

分組是可以多級的,也就是可以嵌套分組。例如:商品檔案定義時可能用商品分類表示大類,商品類型表示小類。分組顯示時希望按大類包含小類這樣嵌套方式顯示。那你可以讓數據集按ORDER BY PRODUCTSORT,PRODUCTSTYLE這樣來排序。排序時,排在前面的字段首先被排序,在相同的條件下,對排在后面的字段再進行排序。同樣的這種情況下,你需要增加兩個群組首尾,讓他們嵌套排列。居于外層的設置分組條件為商品分類,居于內層的設為商品類型。》

*分組條件設置中的選項

在你設置GroupHeader的分組條件時,有以下幾個選項,他們的用途如下:

#保持與群組在一起 --- 這個選項表示,FastReport報表系統總是試圖將一個群組的內容打印在一張紙上而不做分割。例如:有一個群組的內容比較多,而這個群組的開始打印位置居于紙的中部,因此本頁將無法將全部該群組的內容顯示完畢。那么FastReport將把這個群組打印在新的一頁上,這樣上頁紙的底部將會留出空白。當然如果這個群組在新的一頁仍然無法顯示完畢,那FastReport就接著顯示,不再做其他處理了。

#換頁 --- 這個選項與上面這個選項基本概念相同,只是他總是將新的分組內容打印在新的一頁上,而不管這個分組的內容有多少。當然這樣紙張的空白也更多更浪費。但這種方式對于某些客戶來說仍然可能是需要的。

#顯示在大綱 --- 如果選擇本選項,那么在你預覽報表時,你可以使用綱要功能(有一個綱要按鈕)。他可以將分組的名稱顯示在左邊的樹型框中,這樣你可以更加方便的定位到相應的分組。

《如果你想預覽時總是顯示綱要(不需要總是按綱要按鈕)。你可以選擇左側Page1中的Report對象,在屬性PreviewOptions->OutlineVisibe設置為True。》

*Reprint On NewPage

如果你選擇GroupHeader區域,然后點擊鼠標右鍵彈出菜單(Context PopupMenu)。你會發現有一個選項Reprint On NewPage,這個在其他區域的右鍵菜單中是沒有的。他是起什么作用呢?

我們知道,一般分組報表設計時,總是將分組條件和中文字段名稱顯示在群組首。這樣打印時,碰到一個新的分組,FastReport先是打印群組首中的內容,例如:商品分類的名稱等。然后再打印該分組的數據。但如果數據較多時不能在一頁中顯示,那么剩余內容將打印在后面的一頁中。這帶來一個問題就是,如果獨立看待后面一頁紙,上面顯示的數據我們不知道是屬于哪一個商品分類的(分組),必須返回去查看上一頁中的群組首才知道。而使用Reprint On NewPage,則FastReport將在新的一頁中將群組首中的內容再打印一遍(Reprint)。這樣你就可以清楚知道本組數據的歸屬了。當然這樣的話,群組首中的內容將可能會被打印超過一遍,這取決于數據的多少。

分欄報表、多列報表、子報表、交叉報表就不詳講了

二、 常用功能及函數

常用功能列舉如下:

*報表設置

什么時候需要兩遍報表(Double pass)?

應用1 用于顯示總的頁數(TotalPages),例如:頁腳顯示第1頁/共20頁。系統第一遍掃描報表時計算出TotalPages,然后第二遍實際生成報表。如果不使用Double pass,則TotalPages返回0。

應用2 用于將明細項的合計值打印在報表起始位置,而不是在末尾。這需要在第一遍掃描報表時計算出然后在第二遍生成報表時顯示在起始位置。

密碼 --- 用于將報表加密,這樣在設計或者顯示報表時需要輸入密碼。

*頁面設置

分欄 --- 可以將報表在一張紙上分成若干列來打印,比較利于節省紙張。這與在主項數據的Band中設置多個列(Column)不同,分欄打印順序是從上往下,然后從左往右。多列打印順序是從左往右,再從上往下。

函數

ListValue --- 根據SQL語句自動填充一個列表的值;

procedure ListValue(ASQL: string;AList: TStrings);

begin

tblList.Close;

tblList.SQL.Text := ASQL;

tblList.Open;

tblList.First;

while not tblList.Eof do

begin

AList.Add(tblList.Fields[0].AsString);

tblList.Next;

end;

end;

ShowLoginSector --- 登陸分公司列表自動選擇,如果不是管理部門則不允許選擇;

procedure ShowLoginSector(L: TfrxComboBoxControl);

var

S: string;

begin

S := VarToStr(Get('LoginSector'));

if S = '' then S := '管理部門';

L.ItemIndex := L.Items.IndexOf(S);

L.Enabled := S = '管理部門';

end;

報表設計中常用技巧:

A 為系統數據源增加自定義數據源,達到擴展數據的目的

在VBMS中的報表中心我們可以自己設計數據源然后設計自己需要的報表。其實,我們在其他的模塊中一樣可以自己設計數據源(原來以為不可以)。

設計方法與報表中心中是一樣的。

下面我舉一個例子:

在客戶檔案模塊中的打印報表中,增加每個客戶的對應的車輛資料的顯示。

原報表中已經有了一個系統傳入的數據源dsCustomer。

1. FIB->FIB Query,新增一個數據源 dsVehicle。

SQL語句為:

SELECT * FROM TB_VEHICLE WHERE CLIENTID=:CLIENTID;

其中:CLIENTID為變量,是隨著dsCustomer的變化而變化的。

(注意:如果你希望這個變量由主數據源來控制,則該變量的命名必須與主數據源中的字段名稱一致。)

2. 設置dsVehicle的如下屬性:

Master -> dsCustomer;(設置主數據源)

Params -> CLIENTID,數據類型 Integer,值 <dsCustomer."CLIENTID">;

(設置參數:設置值時可以選擇按鈕fx來選擇)

3. 插入一個Band(明細數據)。

設置連接數據庫為dsVehicle。然后放入相關的字段(Text Object)。

4. 鼠標右鍵設置MastData1的 Print if Detail Empty。目的是如果該客戶沒有車輛依然需要打印出來。

總結:

現在,我們既可以在報表中心,也可以在任何位置的打印報表中設計自己的數據源,并且可以將自己的數據源與vbms系統傳入的數據源進行關聯。這樣的應用可以使報表設計更加靈活、更加強大。

B 為報表增加分組顯示功能

在vbms系統的設計報表功能中,有一個群組頭、群組尾的功能。

如果將群組頭和群組尾分別置于主項數據的上面和下面,則可以對該主項數據進行分組統計功能,設置群組頭時,系統會詢問對哪一個字段進行分組。然后你可以在該群組頭上放置一個該字段的TextObject來顯示分組內容,在群組尾放置一個用于求和的SystemText。這樣就可以按照該字段來分組統計了。

注意:要讓相同組別的記錄顯示在一起,必須使數據源按該字段排序。因此,在一般報表中,如果你希望按照某個字段來分組統計,必須在打印所在的窗體上點擊數據列表的該字段項(即排序,可以正排和逆排),然后再進入打印對話框來打印;如果是在報表中心中設計的報表,則在SQL中必須加上ORDER BY語句來排序。

另外,在群組頭的屬性中有一個OutLine,如果等于True。則可以在預覽中使用列表導航。

C 將對話框(DialogForm)中的信息顯示在報表中。

例如:對話框中錄入開始日期和結束日期,你希望將該時間范圍顯示在報表頭上。

方法是,在報表頭上加一個Text Object,然后錄入[edtBD.Text];edtBD就是開始日期編輯框的Name,記住要用中括號括起來。其他的類推。

*在對話框中的下拉框中顯示一個列表。

例如,在對話框中你可能需要用一個下拉框讓用戶選擇某一個供應商,下拉框中存儲了所有供應商。

方法是,首先建一個數據源(tblProvider),該數據源返回了所有供應商。在對話框中放一個下拉框(cmbClientName),在對話框的OnShow事件中編寫如下代碼:

tblProvider.Open;

tblProvider.First;

while not tblProvder.Eof do

begin

cmbClientName.Items.Add(tblProvider.FieldByName('CLIENTNAME').AsString);

tblProvder.Next;

end;

該方法通用,只需要替換相應的數據源就可以實現其他的內容。

D 在分組腳或者欄尾顯示多個數據項的合計。

例如,對于導購人員統計表,有銷售金額、項目金額、其他金額三項,我希望在欄尾顯示三項的合計值(不是每一項的合計)。

如果要分別統計每一項的合計,你只需這樣。

SUM(<tblBMAccount."SELLSUM"&gt;)就可以統計銷售金額了。

將三項加起來,則寫如下代碼

SUM(<tblBMAccount.&quot;SELLSUM";>+<tblBMAccount."SERVICESUM">+<tblBMAccount."OTHERSUM">)

*這里講一下一些語法格式。

取一個字段的格式,

格式:TableName."FieldName"

表名+逗號+字段名,字段名用雙引號引起來。

如果你希望在一個TextObject中顯示某一個字段內容,

格式是:[TableName."FieldName"]

用中括號括起來,中間是字段。

如果該字段內容作為參數參加運算或者作為一個函數的參數,則需要用<>尖括號將字段括起來。

格式:SUM(<TableName."FieldName">)

比如:SUM(<tblBMAccount."SELLSUM">);

或者 <tblBMAccount.";SELLSUM">+<tblBMAccount."SERVICESUM">;

同樣的,如果希望將他們放在Text Object中顯示,還必須加上中括號。

例如:[SUM(<TableName."FieldName">)]

這里關鍵記住,如果想在TextObject中顯示要用[]中括號,要在函數的參數中引用字段或者使用字段進行運算,需要用<>尖括號將字段括起來。

E 如何將報表底部的合計顯示在報表頭

如果直接將合計的TextObject放在主項數據的前面,將不能統計值,因為此時尚未解析出所有數據。

利用FastReport的兩遍報表和臨時變量功能實現。

首先設置該報表為兩遍報表(Double Pass)。

在底部的某一個Band中的OnBeforePrint事件中加入以下代碼:

例如:

Set(<tblBMAccount."BM">,SUM(<tblBMAccount."SELLSUM">+<tblBMAccount."SERVICESUM">;+<tblBMAccount."OTHERSUM">));

說明:Set是一個函數,他將一個值存入了一個變量中。

Set(var,value);其中變量var可以利用數據表中的某一個字段,Value是你的合計值。

在主項數據(MastData)的上面的某一個Band中放一個TextObject(例如:memTotal)

然后在該TextObject的OnBeforePrint事件中加入如下代碼:

例如:

if Engine.FinalPass then

memTotal.Text := Format('%8.2f',[Get(<tblBMAccount."BM">)]);

說明:Engine是FastReport管理報表的對象,FinalPass表示最后一遍報表。

Get(var)將變量var的值返回。Format是一個格式化數字的函數。

F 在底部顯示多個數據源某個字段的合計值

例如:將三個明細的合計相加后顯示總的合計。

方法一:

公式如下:

[SUM(<dsServiceItem."TOTALTAXSUM">,MasterData1)+SUM(&lt;dsProductItem."TOTALTAXSUM">,MasterData2)+SUM(<dsOtherItem."TOTALTAXSUM">,MasterData3)]

但有一個問題是,當三個明細不是全部存在時,打印時會發生Variant Operate操作錯誤。

我分析該錯誤產生的的原因是當其中一個明細不存在時,此時SUM后的結果為NULL(空值)而不是0,所以當一個NULL值與其他一個數值相加時會發生上述錯誤。

解決的方法是,判斷一下:如果SUM后為NULL,則給它賦值0。恰好FastReport中有一個函數IIF(Expression,TureValue,FalseValue);該函數可以通過判斷條件,如果條件為True,則返回True值,為False則返回False值。

所以將上述表達式進行一些改造。

IIF(SUM(<dsServiceItem."TOTALTAXSUM&quot;>,MasterData1)<>null,SUM(<dsServiceItem."TOTALTAXSUM">,MasterData1),0)

上面這個表達式表示:如果合計值不為空,則返回合計值,否則返回0。

因此,整個表達式如下:

[IIF(SUM(<dsServiceItem."TOTALTAXSUM">,MasterData1)<>null,SUM(<dsServiceItem."TOTALTAXSUM">,MasterData1),0)+IIF(SUM(<dsProductItem."TOTALTAXSUM">,MasterData2)<>null,SUM(<dsProductItem."TOTALTAXSUM">,MasterData2),0)+IIF(SUM(<dsOtherItem."TOTALTAXSUM">,MasterData3)<;>null,SUM(<dsOtherItem."TOTALTAXSUM">,MasterData3),0)]

方法二:

在Code頁的最頂部定義三個變量,例如:

var

V1,V2,V3: Double;

在每個數據源的主項腳的OnBeforePrint的事件中分別錄入:

主項腳1的OnBeforePrint:

V1 := SUM(<dsServiceItem.&quot;TOTALTAXSUM">,MasterData1);

主項腳2的OnBeforePrint:

V2 := SUM(<dsProductItem."TOTALTAXSUM">,MasterData2);

主項腳3的OnBeforePrint:

V3 := SUM(<dsOtherItem."TOTALTAXSUM">,MasterData3);

在需要顯示合計的TextObject中使用:

[<V1>]或者[<V2>]或者[<V3>]或者[<V1+V2+V3>]即可。

G 在報表中引入自己的數據源

有客戶需求:希望打印條碼時同時打印出商品的品名規格和零售價(或其它商品相關信息),但條碼庫數據表中沒有相應的數據字段。如何進行設計呢?

其實利用條碼庫數據表中的商品序號(ProductID),可以自己增加一個數據源(dsBarCodeEx),通過ProductID作為主鍵來連接數據表TB_BARCODE和TB_PRODUCT,將TB_PRODUCT表中的某些字段引入(根據需要)。

數據源可能是如下內容:

SELECT

TB_BARCODE.PRODUCTID,

TB_BARCODE.BARCODE,

TB_PRODUCT.PRODUCTNUMBER,

TB_PRODUCT.PRODUCTNAME,

TB_PRODUCT.SELLPRICE

FROM

TB_BARCODE

LEFT JOIN TB_PRODUCT

ON TB_PRODUCT.PRODUCTID=TB_BARCODE.PRODUCTID

這樣,你可以利用自己設計的數據源(原來的數據源dsBarCode不去管他)設計出相應的條碼打印報表(可以打印零售價等)。

H 在報表中實現可變數據源

在報表中可以根據對話框中的條件實時調整數據源中的參數。

例如:在庫存狀況表中導出到條碼庫后(所有商品均導出),有時需要只打印某些商品的條碼。你可以設計一個對話框,可以按照商品編號篩選,如果篩選條件為空,則打印所有商品,否則打印篩選出的商品。

設計數據源如下:

SELECT

BA.PRODUCTID,

BA.BARCODE,

PR.PRODUCTNUMBER,

PR.PRODUCTNAME,

PR.SELLPRICE

FROM

TB_BARCODE BA

LEFT JOIN TB_PRODUCT PR

ON PR.PRODUCTID=BA.PRODUCTID

WHERE PR.PRODUCTNUMBER = :N

然后在數據源的Params中設置N的參數。

此時,如果篩選條件為空,則查詢出來的數據也為空。

這是因為條件 WHERE PR.PRODUCTNUMBER = :N 導致的。

篩選條件為空時,數據源應該去掉該條件。此時需要根據條件動態調整數據源。

在btnOK(對話框中的確定按鈕)的OnClick事件中加入以下代碼:

procedure btnOKOnClick(Sender: TfrxComponent);

var

S: string;

begin

S := 'SELECT BA.PRODUCTID,BA.BARCODE,PR.PRODUCTNUMBER,PR.PRODUCTNAME,PR.SELLPRICE'+

' FROM TB_BARCODE BA'+

' LEFT JOIN TB_PRODUCT PR'+

' ON PR.PRODUCTID=BA.PRODUCTID';

if edtProductNumber.Text<>'' then

begin

S := S + ' WHERE PR.PRODUCTNUMBER = :N';

dsBarCodeEx.ParamByName('N').Value := edtProductNumber.Text;

end;

dsBarCodeEx.SQL.Text := S;

end;

該代碼根據篩選條件不同,對數據源的SQL語句進行不同的設置。

這樣就可以達到要求了。

I 在對話框中,顯示開始日期和結束日期。

在DialogPage1的OnShow事件中加入以下代碼:

方式1:

procedure DialogPage1OnShow(Sender: TfrxComponent);

begin

edtBD.Text := DateToStr(Date);

edtED.Text := DateToStr(Date);

end;

說明:

edtBD,edtED為開始日期、結束日期的編輯框。

DateToStr()函數將日期型變量轉為字符串。

現在,開始日期和結束日期默認為今日。

方式2:

procedure DialogPage1OnShow(Sender: TfrxComponent);

var

Y,M,D: Integer;

begin

Y := YearOf(Date);

M := MonthOf(Date);

D := DaysInMonth(Y,M);

edtBD.Text := DateToStr(EnCodeDate(Y,M,1));

edtED.Text := DateToStr(EnCodeDate(Y,M,D));

end;

說明:

YearOf()函數返回某個日期的年份;

MonthOf()函數返回某個日期的月份;

DaysInMonth()函數返回某月的天數;

EnCodeDate()函數將年、月、日整型數轉為日期型;

現在,開始日期為本月的1號,結束日期為本月的最后一天。

J 在對話框DialogPage1中使用警告框提醒輸入相關內容

例如:你可能需要用戶必須錄入某些查詢內容,否則提醒用戶輸入。

在btnOK(確定按鈕)的OnClick事件中加入以下代碼:

procedure btnOKOnClick(Sender: TfrxComponent);

begin

if edtDepotName.Text = '' then

begin

ShowMessage('請輸入倉庫!');

edtDepotName.SetFocus;

DialogPage1.ModalResult := mrNone;

Exit;

end else

DialogPage1.ModalResult := mrOK;

end;

說明:

ShowMessage()函數用于顯示一條警告信息。

edtDepotName.SetFocus 表示該編輯框獲取輸入焦點;

DialogPage1.ModalResult := mrOK 表示通過;

DialogPage1.ModalResult := mrNone 表示不通過;

K 單據打印中如何實現空表格填滿剩余的空行,達到指定的行數。

在原來的報表基礎上,增加一個子Band(Child1),在這個Band上設計空白行。

可以將Footer1的高度Height設置為0;

在Code頁中錄入以下代碼:

var

PageLine: Integer; //在現在頁打印到第幾行

PageMaxRow: Integer = 8; //指定的每頁固定行數 你可以修改

//在MasterData1的OnBeforePrint事件中加入以下內容

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

PageLine := <Line#> mod PageMaxRow;

if (PageLine = 1) and (<Line#> > 1) then

Engine.NewPage;

end;

//在Footer1的OnBeforePrint事件中加入以下內容

procedure Footer1OnBeforePrint(Sender: TfrxComponent);

var

i: Integer;

begin

i := iif(PageLine=0,PageMaxRow,PageLine);

while i < PageMaxRow do

begin

i := i + 1;

Engine.ShowBand(Child1); //增加一個子Band,在該Band上設計空白的行

end;

end;

L 在報表中使用金額大寫

在FastReport的設計模式下,在Code頁中加入以下函數:

function SumToCaps(const Value : Double): string;

const

d = '零壹貳叁肆伍陸柒捌玖分角元拾佰仟萬拾佰仟億';

var

m,k : string;

j : Integer;

begin

k :='';

m :=FloatToStr(int(Value*100));

for j:=length(m) downto 1 do

k := k+d[(strtoint(m[Length(m)-j+1])+1)*2-1]+

d[(strtoint(m[Length(m)-j+1])+1)*2]+d[(10+j)*2-1]+d[(10+j)*2];

result := k;

end;

當你需要將一個金額轉換為金額大寫時可以如下操作:

1、在Code頁的開始處定義一個字符串。

Var

TOTALSUM_CAPS: string;

2、在相應的事件(可能是OnBeforePrint)中加入

TOTALSUM_CAPS := SumToCaps(TOTALSUM);

注:這里的TOTALSUM可能是一個變量,也可以是數據源中的字段或者合計值。例如:

<tblMaster."TOTALSUM">或者SUM(<tblMaster."TOTALSUM",MasterData1,1>)。

3、在需要顯示大寫金額的TextObject中鍵入[<TOTALSUM_CAPS>]。

M 如何隱藏某些主項數據記錄

通常當某個數值為零時,我們不希望這條記錄被打印或者顯示。

步驟如下:

1、選擇主項數據MastData1的OnBeforePrint時間。

2、在OnBeforePrint事件中填寫代碼

if <tblMaster."TotalSum">=0 then

MastData1.Visible := False else

MastData1.Visible := True;

其中<tblMaster."TotalSum">=0是條件,你可以定義為自己的條件。

N 如何強調某些主項數據的內容

有時我們希望當滿足一定條件時,某些數據的字體或者顏色顯示不同,以達到強調的目的。

步驟如下:

1 選擇需要強調的TextObject。

2 選擇工具欄中的強調按鈕。

3 在對話框中錄入需要強調時的條件。例如:<tblMasterData.";TotalSum"> >= 1000

4 選擇強調的字體,顏色。


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:網絡轉載

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
相關產品
控件
  • 產品功能:報表
  • 源 碼:非開源
  • 產品編號:10233
  • 當前版本:v25.2.2 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Fast Reports 正式授權
  • ">FastReport VCL

    用于快速高效地生成報表的附加組件

    控件
  • 產品功能:報表
  • 源 碼:非開源
  • 產品編號:10235
  • 當前版本:v2.3 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Fast Reports 正式授權
  • ">FASTREPORT SERVER

    FastReport Server是一個全方位的公司報表解決方案,它包括所有創建和提供報表的必要工具。

    控件
  • 產品功能:報表
  • 源 碼:非開源
  • 產品編號:10732
  • 當前版本:v4.9 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Fast Reports 正式授權
  • ">FASTREPORT for COM/ActiveX

    FastReport Studio是一款功能強大的報表設計方案并包含眾多報表事例的控件。

    控件
  • 產品功能:報表
  • 源 碼:非開源
  • 產品編號:11861
  • 當前版本:v2025.2 [銷售以商家最新版為準,如需其他版本,請來電咨詢]
  • 開 發 商: Fast Reports 正式授權
  • ">FastReport .Net

    一款全功能的Windows Forms、ASP.NET和MVC報表分析解決方案。

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    亚洲乱色伦图片区小说 | 亚洲综合极品香蕉久久网 | 欧美性生交大片免费看a片 欧美性受xxxx黑人xyx性爽 | 亚洲av成人精品日韩在线播放 | 人人澡超碰碰中文字幕 | 亚洲av中文无码乱人伦在线观看 | 中文字幕一区二区三区在线观看 | 91麻豆天美精东蜜桃传媒老 | 亚洲av无码乱 | 日韩成人av在线一区二区三区 | 国产激情综合在线看 | 久久99九九| 国产va欧美va在线观看 | 日本成熟丰满老妇xxxx | 午夜亚洲 | 无码国产精品一区二区高潮 | 国产成人精品综合久久久免费观看 | 一区二区国产馆 | 亚洲一区免费在线观看 | 99久久婷婷免费国产综合精品 | 精品一区二区三区四区在线观 | 91在线精品无码秘?入口九色 | 国产精品初高中在线播放 | 国产欧美日韩一区二区三区在线 | 欧美色欧美亚洲高清在线观看 | 精品精品国产高清a毛片 | 最新国产在线拍揄自揄视频 | 国偷自产av一区二区三区接 | 日本无遮| 亚洲精品电影网 | 91麻豆天美精东蜜桃传媒老 | 办公室大战高跟丝袜秘书经理ol | 成人夜色视频网站在线观看 | 91精品国产99久久久久久 | 午夜爽爽爽男女免费观看影院 | 91香蕉污| 爆乳国产在线正在播放 | 精品入口 | 99久久五月天婷婷中文字幕精品 | 93精品国产成人观看 | 国产一区二区三区福利姬在线观看 | 国产一级特黄在线播放 | 无码免费婬av片在线观看 | 91av在线电影 | 91在线视精品在亚洲 | av映画旗袍戒色无码网址 | 欧美深夜福利网 | 国产公开免费人成视频 | 国产精品成人一区二区三区电影 | 无遮挡国产高潮视频免费观看 | 亚洲国产成人精品久久久 | 欧美颜射内射中出口爆在线 | 国产精品自产拍高潮在线观看 | 午夜小电影 | 亚洲av无码久久精品蜜桃播放 | 成人高清视频51 | 欧美一区二区免费 | 国产女白丝脚交视频播放 | 日本免费黄色片网站 | 日韩av无码一区二区三区无码 | 日韩欧美国产中文字幕 | 午夜不卡影院 | 亚洲国产综合人 | 亚洲午夜精品无码专区在线播放 | 国产精品爆乳奶水无码视频 | 国产麻豆md传媒视频 | 色碰视频 | 亚洲av无码一区二区三 | 91网视频网 | 国产精品99久久久久人中文网介绍 | 精品动漫一区 | 国产www久久久久久久 | 另类专区精品 | 九一伦理 | av无码中文字幕无码 | 亚洲精品无码午夜福利理论片 | 91人妻一区二区三区久久 | 高清无码在线观看了a | 国产亚洲免费在线观看 | 亚洲国产精品一区二区不卡 | 国产精品国产三级国产专不∫ | 国产日本在线播放 | 成人无码h免费动漫在线观看 | 人妻夜夜爽爽88888视频 | 在线免费观欧美一级片 | 98国产精品综合一区二区三区 | 毛片久久久久久久久 | www在线观看视频 | 91极品女神嫩模在线播放 | 国产精品亚洲一区二区在线观看 | 国产精品成久 | 国产又色又爽又刺激在线播放 | 亚洲国产成人久久综合区 | 国产一区二区在线免费观看视频 | 国内精品久久 | 精品国产一区二区三区不卡 | 国产精品日本欧美一区二区 | 亚洲乱码无人区卡1卡2卡3 | 国产成人aⅴ国产在线观看 国产成人aⅴ在线免费观看 | 精品久久久 | 国产一区二区三区免费高清在线播放 | 91在线日| 日韩精品人成在线播放 | 欧美日本在线视频 | 国产裸体裸美女无遮挡网站 | 成人午夜看片 | 亚洲精品无码久久久久av麻豆 | 亚洲精品永久在线观看 | 日韩av第一页| 国产精品人妻一区二区三区四 | 3d动漫精品啪啪一区二区免费 | 无码午夜福利 | 国产看黄网站又黄又爽又色 | 国产三级毛视频在线观看 | 超薄丝袜足j好爽在线观看 超薄丝袜足j一区二区 | 日韩无码人妻精品视频 | 国精产品一区二区三区四区糖 | 婷婷亚洲久悠悠色悠在线播 | 午夜影院 | 亚洲欧美人成电影在线观看 | 亚洲精品高清国产一线久久 | 国产尤物av尤物在线观看 | 日本特黄特色aaa大片免费 | 91在线精品亚 | 禁止18点击进入在线观看尤物 | 亚洲日韩精品第 | 国产一区二区视频在线观看 | 99久久国产综合色婷婷 | 日本一姐rapper太多 | 国产成人喷潮在线观看 | 日本大片免a费观看视频老师 | 国产现实无码av | 九一香蕉 | 精品人妻伦一二三区久久 | 在线亚洲精品福利网址导航 | 亚洲av无码不卡在线观看 | 99久久国语露脸精品国产 | 91视频手机版app下载 | 成人羞羞在线观看网站下载 | 91久久另 | 国产91九色在线 | 国产女人高潮抽搐喷水视频 | 成人午夜a级毛片免费 | 国产综合久久久久久鬼色 | 亚洲日韩在线观看不卡 | 精品久久亚洲中文无码 | 91探花精品偷拍在线播放 | 91视频91自拍国产自拍在线观看 | 成人欧美精品久久久久影院 | 国产久久九九精品无码免费 | 亚洲av极品视觉盛宴分类 | 91久久久久国产一区二区 | 高清无码不卡视频 | 日韩中文字幕在线 | 亚洲av无码国产精品麻豆天美 | 国产精品嫩草影院av蜜臀 | 亚洲av无码1区2区久久 | 午夜福利理论片高清在线 | 国内自拍视频在 | 日本三级日产三级国产三级 | 91免费视频播放 | 天天干天天拍 | 天天谢天天干 | 天美麻豆成人av精品视频 | 国产天堂在线丝袜一区 | 99精品国产自在现线10页 | 国产va在线观看免费 | 亚洲精品无码久久久影院相关影片 | 日本精品久久久久中文字幕 | 亚洲国产av无码精品 | 国产成人精品久久一区二区三区 | 私拍一区二区三区 | 国产一卡二卡三卡四高清 | 在线日韩欧美日本国产 | 国产精品鲁一鲁 | 国产成人午夜高潮毛片 | 国产精品美女久久久久av超清 | 国产成人精品午夜在线播放 | av无码精品一区二区三区宅噜噜 | 国产曰韩ai一区二区三区 | 成人妇女免费播放久久久 | 午夜大胆裸体a级人体片 | 国产成人a∨影院 | 国产精品99精品无码视亚 | 亚洲综合色aaa成人无码 | 国产无码高清在线观看 | 亚洲精品天堂在线 | 国产喷水在线观看 | 国产a级毛片久久久久久精品 | 亚洲av无码专区国产乱码不卡 | 国产91色综合| 午夜视频在线观看 | 丰满人妻熟妇乱又伦 | 国产免费一区二区视频 | 国产免费永久视频观看 | 国产亚洲av人片在线观看 | www.操操操| 日韩欧美亚洲一区二区综合 | 欧日韩在线不卡视 | 亚洲欧美成人 | 国产午夜无码片在线观看网站 | 按着她的腰疯狂的撞击闷哼 | 国产蜜桃av视频一区二区 | 成人午夜精品网站在线观看 | 九九精品免 | 丰满av无码久久不卡 | 一区二区三区高清视频在线观看 | 91青青视频| 午夜精品久久久久久久99热蜜桃 | 羞羞动漫成人a片在线观看 羞羞麻豆国产精品1区2区3区 | 97久久久精品综 | 国产成人无码a区在线观看视频不卡 | 午夜毛片不卡免费观看视频 | 国内精品91少妇在线播放 | 在线播放无码高潮的视频 | 欧美日韩视费观看视频 | 丰满少妇一级毛片亚洲日韩 | 91极品蜜桃臀在线播放 | 91老司机深夜福利精品视频在线 | 国产成人精品无码播放 | 精品亚洲成a人在线观看青青 | 亚洲国产精品嫩草影院久久 | 日本aⅴ精品一区二区三区久久 | 亚洲精品无码专区国产乱码 | 亚洲av无码成人精品区明星换面 | 一级特黄国产免费大片 | 亚洲日韩一二三区 | 国产亚洲欧美日韩在线观 | 日韩精品午夜视频一区二区三区 | 91香焦国产线观看免费香蕉直播 | 国产97在线视 | 欧美尤物精品国产中文 | 欧美性猛交xxxx | 国产乱人伦av在线a最新 | 国产原创中文av | 亚洲成α人片在线观看欧美在线视频 | 成人妇女免费播放久久久 | 中文字幕在线不卡一区二区 | 国产高清不卡在线观看 | 亚洲另类国产精品无码 | 成人第四色 | 日韩经典精品无码一区 | 国产欧美一区二区精品久久久 | 亚洲成av人在| 国产一级特黄aaa大片 | 国产极品美女扒开粉嫩小泬91 | 欧美日韩一区二区视频免费看 | 国产精品无码mv在线观看 | 97超碰国产一区二区三区 | 色噜噜亚洲精品中文字幕 | 亚洲成人亲热国产精品 | 无码精品a∨在线观看中文 无码精品va在线观看蜜桃 | 国内自拍视频在 | 黄色电影免费看 | 国产成人无码精品久久久 | 一区二区精品在线 | 99爱精品视频公开免费观看 | 无码人妻久久久一区二区三区 | 国产熟人av一二三区 | 亚洲成人啦啦啦大 | 中文字幕亚洲综合久久青草 | 亚洲精品nv久久久久久久久 | 麻豆国产女教师一区二区三区 | 日韩精品无码中文字幕一区二区 | 国产午夜激无码αv毛片久久 | 亚洲无线码1003亚洲无线码 | 国产片av国语在线观看手机版 | 亚洲精品成人久久久影院 | 精品国产人成亚洲区 | 91精品国产高清久久久久久 | 欧美久久久久久精品一区 | 精品一区二区三区影院在线 | 精品国产性色无码av网站 | 欧洲va亚洲va韩国va | 伊人小蛇婷婷色香综合缴缴情 | 国产精品不卡高清在线观看 | 国产福利在线观看精品 | 午夜dv内射一区二区 | 欧美日本一区二区三区在线 | 91在线无精精品秘?入口 | 国产激情一区二区三区四区 | 国产欧美日韩高清在线不卡 | 99re热有精品视频国产 | 国产男女无遮挡猛进猛出 | 国产口爆吞精在线视频 | 自在自线国产精品 | 亚洲日韩v无码中文字幕 | 中文字幕中字幕亚洲 | 国产激情久久久久影院 | 九九热线精品视频首页 | 国产女人叫床高潮大片 | 中文字幕亚洲乱码熟女一区二区 | 国产理论在线 | av网址导航精品 | 亚洲视频无码在线观看 | 亚洲av福利无码无一区二区 | 久久er热视频在这里精品 | 91国内| 亚洲成av人在线观看片 | 禁止18点击进入在线观看尤物 | 国产高清成人片免费播放18禁 | 国产成人一区二区三区精品综合 | 精品午夜久久福利大片免费 | 99热这里只有成人精品国产 | 在线观看黄色网站wwwcom | 午夜福利93波多野结衣 | 99久久久国产精 | 黄色成年人视频在线 | 日本高清一级婬片a级中文字幕 | 3d动漫精品啪啪一 | 中文精品久久久久国产网址 | 人人爽人人爽人人爽 | 亚洲成a人片777777 | 免费无码成人av在线播放不卡 | 国产亚洲精品成人a在线 | 91成人爽a毛片一区二区动漫 | 亚洲无码成人最 | 偷窥性别瘾xxxxx | 国产精品成人无码久久久久久 | 国产片91为何成为电影行业新宠 | 无码a√毛片一区二区三区 无码aⅴ精 | 国产aaaaa毛片高清视频 | 麻豆最新国产剧情av原创免费 | 国产成人精品亚洲日本在线 | 99精品久久久久久久婷婷 | 国产精品高清一区二区 | 狠狠色丁香久久婷婷综合五月 | 性推油按摩av无码专区 | av在线亚洲欧洲日产一区二区 | 成年免费大片黄在线观看岛国 | 精品一区二区三区在线观看 | 欧美一区二区三区日韩精品 | 国产精品原巨作av无遮挡 | 亚洲av无码影视久久乐第一区 | 国产精品巨作av无遮挡 | 91国内精品久久久久毛片精华液 | 国产一区二区不卡 | 国产免费无码av片在线观看不 | 国产精品久久久久精品三级a | 国内一级| 91久久视频平台是否值得尝试 | 日本高清一区二区三区中文字幕 | 91无人区卡一卡二卡三乱码 | 国产成人精品无码免费播放 | 黄色网页大全在线免费观看啊啊啊啊 | 岛国大片在线观看 | 性欧美长视频免费观看不卡 | 丰满的少妇一区二区三区 | 97精品伊人久久久大 | 国产天天视频天天看片 | 欧美高清熟妇啪啪内射不卡自拍 | 国产中文字幕免费不卡 | 国产精品厕所电影 | 在线精品免费 | 综合在线无码一 | 99精品视频在线观看免费 | 国产精品视频第一区二区三区 | 精品国产群3p在线观看91 | www.深夜成人网站在线观看 | 韩国日本亚洲欧洲一区二区三区 | 国产在线无码视频观看草草视频 | 九九热在线精品 | 亚洲一区免费在线观看 | 午夜视频体内 | 欧美日韩国产一级久久忘忧草 | 欧美日韩在线视频一区 | 毛片网站在线观看 | 国产激情一区二区三区成人 | 激情欧美日韩一区二区 | av福利院| 无码不卡一区二区三区在线观看 | 国产人妖网站视频 | 亚洲综合色一区二区三区另类 | 国产v一区二区综合 | 亚洲国产成人av手机在线观看 | 国产午夜福利 | 91人妻无码精品一区二区三区 | 亚洲午夜一区二区三区久久久久 | 牛牛影视亚洲av片在线播放 | 久久99久久精品久久久久久 | 国内高清 | 欧美乱色伦图片区小说 | 爆乳国产中文在线观看 | 国内亚洲综合自拍110页 | 国产一区二区三区不卡观 | 国产欧美日韩在线观看影院 | 国产成人精选在线不卡 | 亚洲精品成人a | 中文字幕福利在线观看 | 国产精品久线在线观看 | 97影院午夜在线影国产 | 91久久香蕉国产线看观看软件 | 欧美精品aⅴ在线视频 | 色欲av永久无码精品无码 | 国产精品午睡沙发系列 | 日日夜夜操天天干 | 九九九九九九伊人 | 中文字幕日产乱码一区 | 一级做a爱全免费视频免费 一级做a爰片 | 无码一区二区三三精品视频久久久 | 午夜成人 | 国产亚洲精品线观看 | 国产精品福利一区二区久久 | 日本最新一区二区三区免费看 | 91免费视频观看 | 日本三级网站在线观看 | 国产成人综合高清 | 亚洲精品午夜久久aaa级久久久 | 精品亚洲无码一区 | 日本高清视频www | 国产三级精品三级在线专 | 欧洲熟妇色xxxx欧美老妇免费 | 黄片中文字幕 | 丰满人妻一区二区三区无码av | 日本女优久久久啊的黄色视频 | 亚洲午夜精品aaa级久久久久 | 中文字幕乱码亚洲∧v日本1 | 欧美精品中文字幕亚洲专区 | 91久久网 | 亚洲欧美日本国产一区二区三区 | 亚洲精品字幕在线观看 | 97超开公碰在线视频 | 欧美风情亚洲 | av无码不卡一区二区三区 | 国外自产拍无码精品视频在线观 | 麻豆精品秘国产传媒mv | 午夜免费观看福利片 | 国产黄a三级三级三级看三级 | 亚洲视频东京热无码二区 | 国产亚洲精品久久久久久无几年桃 | 亚洲国产成人手机在线观看 | 久久成年人视频 | 色综合av男人的天堂伊人 | 免费无码av片在线观看中文 | 99热视 | 国产白丝护士av在线网站 | 日本精品a在线观看 | 国产福利麻豆精品一区 | 亚洲国产精品无码久久电影 | 91久久国产口精品久久久久 | 欧美精品91久久久 | 国产精品碰碰人人a久久 | 精品永久久福利一区二区 | 色色色色色色视频 | 日本乱偷人妻中文字 | 成人一区二区三区免费视频 | 国产一区国产精品精品三 | a片杏仁| 91制片厂制作果冻传媒八夷兔子 | 亚洲一区二区三区精品动漫在线登录 | 亚洲精品午夜久久久伊人 | 亚洲av成人精品日韩在线播放 | 午夜不卡无码中文字幕影院 | 色综合久久久久久久久久 | 精品97国产免费人成视频 | 成人女人爽到高潮的a片羞羞动漫 | 国产乱子伦午夜视频观看 | 99在线精品免费视频九九视 | 国产日韩欧美一区 | 午夜肉伦伦影院 | 中文精品视频一 | 丰满大爆乳波霸奶 | 91人妻成人精品一区二区 | 欧美熟妇性开放 | 欧美午夜精品久久久久免费视 | a性色生活片久久毛片牛牛 a亚洲欧美中文日韩在线v日本 | 欧美一区二区在线刺激视频 | 成人欧美精品久久久久影院 | 91精品一区二区三区在 | 国产精品亚洲欧美一区麻豆 | 九九九精品成人免费视频 | 欧美成人精品高清在线观看 | 国内精品久久久久久中文字幕 | 亚洲精品麻豆视频 | 精品99午夜福利影院 | 在线看片无码永久免费aⅴ 在线看日韩人妻视频 | 人妻体内射精一区二区三区 | 国产精品精品综合在线网 | 日产亚洲一区二区三区 | 日韩成人国产精品秘片多多 | 国产va免费精品观看精品 | 亚洲成a人片在线天堂 | 91嫩草亚洲精品 | 97久久人妻精品中文无码 | 99无套内射中出生娃视频 | 99热这里只有精品首页精品 | 亚洲sss整片av在线播放 | 在线观看国产高清免费 | 无码人妻av一二区二区三区 | 亚洲午夜福利院在线观看 | 国产97久久久久久免费 | αv天堂亚洲一区二区三区 αv天堂在线观看免费αⅴ | 麻豆成人久久精品二区三区免费 | 99精品国产福利在线观看 | 99在线精品国产不卡在线观看 | 国产精品一区二区久久精品 | 亚洲熟妇视频在线观看 | 欧美视频一区二区三区 | 欧美精品白浆一区二区三区 | 国产成a人亚洲精ⅴ品无码樱花 | 亚洲国产成人精品无码 | 午夜精品久久久久久仙踪林 | 亚洲a∨天堂无码麻豆电影 亚洲a∨无码成人精品区在线观看 | 国产码在线成人网站 | 91精品国产色综合久久久蜜臀 | 亚洲成a | 白浆免费视频国产精品视频 | 亚洲av成人综合网久久 | 久久99热国产精品免费 | 99re热视频这里只精品 | 亚洲av无码专区一级婬片毛片 | 亚洲性线免费观看视频成熟 | 亚洲精品97 | 日一卡2卡3卡4卡新区乱码久久 | 国产精品高清一区二区三区 | 亚洲九九爱 | 在线视频一卡二卡 | 免费无码又爽又刺激高潮的视频 | 97在线观看 | 91精品国产91久久久久久青草 | 麻豆污板app | 国产精品久 | 99久久er热在这里都是精品66 | 在线观看黄色网站 | 在线免费观欧美一级片 | 日韩一区二区久久久久久久久 | 成人麻豆亚洲综合无码精品产 | 精品粉嫩 | 国产a久久精品一区二区三区 | 亚洲av永久无码天堂网手机版 | 性色av一区二区三区 | 99精品高清在线播放 | 十八禁无码免费视频在线观看 | www.黄色网址 | 亚洲av无一区二区三区久久 | 成年福利片在线观看 | 99xxxx综合| 精品久久久久久亚 | 国产免费一区二区三区最新 | 久久99久久| 在线成年女人免费视频播放器 | 日韩精品成人av高清在线观看 | 日韩免费a片奶头 | 国产suv精品一 | 精品一区二区三区四区在线 | 99久久精品国产高清一区二区 | 国产一区二区精品尤物 | 91专区视频| 狠狠躁夜夜躁青青草原 | 精品久久一区二区三区av | 日本在线观看精品 | 韩国无码一区二区三区在线观看 | 亚洲精品熟女国产 | 日本黄页网站免费大全 | 久久99精品久久久久久 | 亚洲成在人线av壁咚影院 | 91蜜桃传媒精品久久久一区二区 | 日日爱夜夜爽 | 精品伊人久久大线蕉色首 | 色综合色综合色综合色综合 | 在线不卡的亚洲av | 狠狠涩尤物 | 国产精品青青青高清在线 | 99久久久无码国产精品试看 | 亚洲乱码中文字幕精品久久 | 国产香港日本三级在线观看 | 91视频入口| 99精品国产高清一区二区三区香蕉 | 精品在线看 | 国产无遮挡 | 91精品视频在线平台优势解析 | 亚洲日韩aa特黄毛片试看 | 日韩精品中文字幕 | 午夜无码视频一区二区三区 | a级精品国产片在线观看 | 国产在线一区二区三区欧美 | 日韩经典欧美一区二区三区 | 欧美又粗又大又爽又色片 | 91精品国产91久无码网站 | 成人爱做日本视 | 99精品电影一区二区免费看 | 国产一级a毛一级a看免 | 国产精品爽爽v在线观看无码 | 国产99在线播放 | 欧美精品色婷婷五月综合 | 日本强伦姧人妻一区二区免费 | 亚洲精品成人久久久 | 91无人区卡一卡二卡三乱码 | 99re6这里精品视频精品 | 亚洲综合日韩无码一区二区 | 午夜蜜桃视频 | 国产漂亮白嫩美女在线观看 | 亚洲国产综合久久久精品 | 在线a毛片免费视频观 | 在线亚洲精品福利网址导航 | 国产欧美亚洲精品下载第二区 | 亚洲欧美日韩国产高清在线播放 | 国产日韩综合在线视频 | 99re热有精品视频国产 | 91精品国产福利尤物 | 精品一区二区三区无码免费直 | 亚洲欧美日韩v中文在线 | 成人涩涩小片视频日本 | 国产一区二区三区专区精品 | 精品欧美一区二区三区四区 | 在线观看91精品国产入口 | 国产一卡2卡三卡4卡精 | 日本黄页网址在线看免费不卡 | 国产成人福利美女观看 | 欧美亚洲精 | 日韩精品电影亚洲一区 | 中文字幕亚洲乱码熟女一区二区 | av在线播放不卡 | 国产高清在线观看av片 | 在线观看国产精品 | 日本精品在线亚洲视频看看 | 国产黄色在线播放 | 9lporm自拍 | 亚洲影院天堂中文av色 | 国产av一区二区三区无码野战 | 99久久精品费精品国产一区二区 | 成年黄页网站大全免费 | 麻豆污板app | 欧美日韩一区二区高清不卡 | 免费无遮挡又黄又爽网站 | 中文字幕欧美日 | 欧美午夜不卡在线观看 | 亚洲精品一区中文字幕乱码 | 精品一区二区三 | 午夜十八岁禁 | 高潮久久精品美女 | 亚洲精品无码日韩国产不卡av | 国产成人久久一区二区三区 | 九九热在线视频观看 | 日本欧美国产 | 欧美aaaaaaaa| 中文亚洲av片在线1观看 | 黄色软件在线观看 | 国产精品青草久久久久福利99 | 国产精品69毛片高清亚洲 | 精品无码午夜一 | 国产做无码视频在线观看浪潮 | www.香蕉| 精品一区二区三区四区视频 | 99riav精品视频在线观看 | 国产曰韩ai一区二区三区 | 精品国产免费 | 国产精品自在在线午夜免费 | 91久久精品夜夜躁日日躁欧美 | 午夜精品免费视频观看在线 | 欧洲吸奶大片在线看 | 国产刺激对白国产情侣 | 精品无码国产社区野花在线观 | 国产精品丝袜黑色高跟鞋 | 精品免费无码一区二区三区 | 国语精品91自产拍在线 | 日韩成人国产精品秘片多多 | 亚洲乱亚洲乱妇无码 | 成全视频在线观看在线 | 国产av无码专区亚洲a∨毛片 | 亚洲欧美国产va | 国产成人午夜福利小电影 | 人妻斩无码正片免费视频 | 69精华国产精华精华液好用吗 | 在线播放国 | 色综合天天综合网天 | 亚洲一区二区三区av在线观看 | 国产天天视频天天看片 | 国产肥熟女视频一区二区 | 国产不卡视频在线观看 | 亚洲蜜桃精久久久久久久久久久久 | 福利精品一区二区三区久久久久 | 精品在线视频免费观看 | 国产真实乱了伦对白视频 | 国产熟妇无码a片aaa毛片视频 | 日韩av无码久久区二区三区 | 日韩成人av在线一区二区三区 | 美奶福利视频一区二区三区 | 天天躁日日躁狠 | 91人成亚洲高清在线观看 | 午夜性色福利视频 | 97国产婷婷视频 | 国产精品99久久99久久久不卡 | 国产美女91呻吟求 | 99精品国产aⅴv8在线观看 | 亚洲六区| 毛片成人永久免费视频 | 3p国产对白刺激在线视频 | 国产各种高潮合集在线观看mp4 | 91久久综合亚洲鲁鲁五月天 | 国产永久 | 国语自产偷拍精品视频 | 老熟女网站 | 99热这里有 | 欧美日韩国产自在自线 | 日本一区四区不卡视频 | 色综合网站av综合无码综合网 | 妇女精品一二区 | 精品久久久久亚洲国产 | 欧美交性又色又爽又黄麻豆 | 欧美一区二区 | 久久国产a级久久美女毛片 久久国产v一级毛多内射 | 97人妻在线免费视频 | 二区三区成人片在线 | 91久久久无码国产精品免费 | 欧美日韩在线观看 | 国产女精品视 | 99久久这里只精品国产免费 | 中文无码精品一区二区三区 | 成人免费一级纶理 | 91香蕉成人污污污 | 日韩版码免费福利视频 | 亚洲无码 | 亚洲国产精品无码 | 日韩精品青青精品视频 | 三级成年网站在线观看 | 国产真人无码作爱免费视频 | 日日夜夜爽歪 | 国产欧美精品区 | 日韩黄色网站在线观看 | 麻豆精品国产自产在线观看 | av片在| 欧美日韩国产一级 | 午夜福利av无码 | 午夜理理伦三级在线观看 | 国产aⅴ激情无码久久久无码 | 日本久久久久亚洲中字幕 | 国产精品一区蜜臀91 | 亚洲熟妇无码八av在线播放 | 91爱爱视频 | 精品无码视频 | 色综合久久久久久久久久 | 国产成人无卡在线观看 | 麻豆精品一区入口在线观看 | 中文精品久久久久国产不卡 | 精品久久久久久无码一区二区 | 日本一区二区三区在线观看网站 | 亚洲国产精品无码第一区 | 九一影院 | 91欧美激情一区二区三区成 | 在线观看黄网视频免费播放 | 免费午夜爽爽爽www视频 | 欧美va天堂v国产综合 | 国产成人午夜福利在线观看视 | 国产精品色婷婷亚洲综合看片 | 最新欧美日韩在线 | 国产女人aaa级久 | 羞羞影院午夜男女爽爽 | 国产强奷在线播放免 | 国产精品成 | 色综合伊人色综合网站 | 人妻中文字幕乱人伦在线 | 午夜欧美日韩精品久久久久久 | 99久久久无码国产精品古装 | 黄色网址视 | 国产精品一级国产精品片 | 国产剧情中文巨作md | 高潮喷水在线观看免费 | 欧美剧大全高清全集免费在线观看 | 色一情一乱一交一二三区 | 99久久精品免费 | 成人福利在线观看免费视频 | 国产精品臀控福利在线观看 | 在线精品无码不不卡 | 人妻少妇看a偷人无码精品视频 | 亚洲av无码久久久久久精品同性 | 日本少妇高 | 91精品国产自产在线观看永久 | 亚洲一级av影视在线观看 | 99热国产这里只有精品 | 变态sm天堂无码专区 | 午夜视频体内射.c | 日本91视频 | 99久久精品成人一区二区三区 | 国产亚洲精品久 | 办公室爆乳女秘在线hd | 超碰人人超碰人人 | 熟妇高潮精品一区二区三区 | 国产老熟女精品一区免费观看全集 | 欧美视频一区 | 国产aaaa| 精品久久久久久中文字幕一区 | 欧美日韩精品视频一区二区在线观看 | 亚洲精品乱码97久久久久久丝袜 | 亚洲va国产日韩欧美精品 | 99精品无人区乱码1区2区3区 | 国产精品一区中文字幕 | 中文字幕av王 | 偷拍久久国产视频免费2025 | a级国产乱理伦片在线观看 a级国产乱理伦片在线观看al | 香蕉久久一区二区三区电影 | 丰满少妇 | 中文字幕久久久久 | 国产主播精品一区 | 中文字幕人妻系列乱码 | 国产亚洲欧美 | 国产成人女人视频在线观看 | 中文亚洲成a人片在线观看 中文亚洲日韩精品字幕不卡 | 国产精品一级二级三级 |