ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 277|ตอบกลับ: 16

[แบ่งปัน] [VB.NET] วิธีสร้าง Report RDLC ให้แสดงรายงานตามข้อมูลที่มีอยู่ใน DataGridView ณ ขณะรันโปรแกรม

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    แฮปปี้
    2017-6-25 18:59
  • เช็คชื่อแล้ว: 2 วัน

    [LV.1]NewBie

    104

    กระทู้

    507

    โพสต์

    9671

    เครดิต

    ผู้ดูแลระบบ

    Rank: 9Rank: 9Rank: 9

    เครดิต
    9671
    Ticket
    8019
    จิตพิสัย
    1652

    Expert OnlineExpert Post

    [VB.NET] Create RDLC Report dynamically at run-time from a DataGridView
    [VB.NET] วิธีสร้าง Report RDLC ให้แสดงรายงานตามข้อมูลที่มีอยู่ใน DataGridView ณ ขณะรันโปรแกรม


    Source Code

    1. สร้าง Form ใหม่ หรือ Rename ฟอร์มแรกเป็น FrmMain จากนั้น ดับเบิ้ลคลิกที่ฟอร์ม วางโค้ดนี้ลงไป
    1.         Dim dt As New DataTable()
    2.         dt.Columns.Add("No")
    3.         dt.Columns.Add("Name")
    4.         dt.Columns.Add("LastName")

    5.         dt.Rows.Add("1", "Aran", "Surgeo")
    6.         dt.Rows.Add("2", "Brian", "Lanov")
    7.         dt.Rows.Add("3", "Catereen", "Samuel")
    8.         dt.Rows.Add("4", "Doctor", "Monster")

    9.         DataGridView1.DataSource = dt
    คัดลอกไปที่คลิปบอร์ด


    2. ลากปุ่มมาวางบนฟอร์ม แก้ .Text =  Print Button ดับเบิ้ลคลิกที่ปุ่ม และวางโค้ด

    1. Dim reportColumns As List(Of ReportColumn) = DataGridView1.Columns.Cast(Of DataGridViewColumn).Select(Function(x) New ReportColumn(x.DataPropertyName) With
    2.                       {.Title = x.HeaderText, .Name = x.Name, .Width = x.Width}).ToList()
    3. Dim reportData As Object = DataGridView1.DataSource
    4. ReportForm.Print(reportColumns, reportData)
    คัดลอกไปที่คลิปบอร์ด


    3. สร้างฟอร์มใหม่ ชื่อ ReportForm ดับเบิ้ลคลิกที่ฟอร์มและวางโค้ดนี้ลงไป

    1. Imports System.IO
    2. Imports DataGridViewRDLCReport.My.Templates


    3. Public Sub Print(ByVal reportColumns As List(Of ReportColumn), ByVal reportData As Object)
    4.         Dim report = New DynamicReport()
    5.         report.Session = New Dictionary(Of String, Object)()
    6.         report.Session("Model") = reportColumns
    7.         report.Initialize()
    8.         Dim rds = New Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", reportData)
    9.         ReportViewer1.LocalReport.DataSources.Clear()
    10.         ReportViewer1.LocalReport.DataSources.Add(rds)
    11.         Dim reportContent = System.Text.Encoding.UTF8.GetBytes(report.TransformText())

    12.         Using stream = New MemoryStream(reportContent)
    13.             ReportViewer1.LocalReport.LoadReportDefinition(stream)
    14.         End Using

    15.         ReportViewer1.RefreshReport()
    16.         ShowDialog()
    17. End Sub
    คัดลอกไปที่คลิปบอร์ด


    3. สร้างไฟล์ DynamicReport.tt (Runtime Text Template)

    1. <#@ template language="VB" #>
    2. <#@ import namespace="System.Linq" #>
    3. <#@ import namespace="System.Collections.Generic" #>
    4. <#@ parameter name="Model" type="System.Collections.Generic.List(Of ReportColumn)"#>
    5. <?xml version="1.0" encoding="utf-8"?>
    6. <Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">
    7.   <DataSources>
    8.     <DataSource Name="DataSource1">
    9.       <ConnectionProperties>
    10.         <DataProvider>System.Data.DataSet</DataProvider>
    11.         <ConnectString>/* Local Connection */</ConnectString>
    12.       </ConnectionProperties>
    13.       <rd:DataSourceID>e9784bb0-a630-49cc-b7f9-8495aca23a6c</rd:DataSourceID>
    14.     </DataSource>
    15.   </DataSources>
    16.   <DataSets>
    17.     <DataSet Name="DataSet1">
    18.       <Fields>
    19. <#    For Each column As ReportColumn in Model #>
    20.         <Field Name="<#=column.Name#>">
    21.           <DataField><#=column.Name#></DataField>
    22.           <rd:TypeName><#=column.Type.Name#></rd:TypeName>
    23.         </Field>
    24. <#  Next #>
    25.       </Fields>
    26.       <Query>
    27.         <DataSourceName>DataSource1</DataSourceName>
    28.         <CommandText>/* Local Query */</CommandText>
    29.       </Query>
    30.       <rd:DataSetInfo>
    31.         <rd:DataSetName />
    32.         <rd:TableName />
    33.         <rd:ObjectDataSourceType />
    34.       </rd:DataSetInfo>
    35.     </DataSet>
    36.   </DataSets>
    37.   <Body>
    38.     <ReportItems>
    39.       <Tablix Name="Tablix1">
    40.         <TablixBody>
    41.           <TablixColumns>
    42. <#    For Each column As ReportColumn in Model #>
    43.             <TablixColumn>
    44.               <Width><#=column.WidthInInch#>in</Width>
    45.             </TablixColumn>
    46. <# Next #>
    47.           </TablixColumns>
    48.           <TablixRows>
    49.             <TablixRow>
    50.               <Height>0.25in</Height>
    51.               <TablixCells>
    52. <#    For Each column As ReportColumn in Model #>
    53.                 <TablixCell>
    54.                   <CellContents>
    55.                     <Textbox Name="<#=column.Name#>TextBox">
    56.                       <CanGrow>true</CanGrow>
    57.                       <KeepTogether>true</KeepTogether>
    58.                       <Paragraphs>
    59.                         <Paragraph>
    60.                           <TextRuns>
    61.                             <TextRun>
    62.                               <Value><#=column.Title#></Value>
    63.                               <Style />
    64.                             </TextRun>
    65.                           </TextRuns>
    66.                           <Style />
    67.                         </Paragraph>
    68.                       </Paragraphs>
    69.                       <rd:DefaultName><#=column.Name#>TextBox</rd:DefaultName>
    70.                       <Style>
    71.                         <Border>
    72.                           <Color>LightGrey</Color>
    73.                           <Style>Solid</Style>
    74.                         </Border>
    75.                         <BackgroundColor><#=column.HeaderBackColorInHtml#></BackgroundColor>
    76.                         <PaddingLeft>2pt</PaddingLeft>
    77.                         <PaddingRight>2pt</PaddingRight>
    78.                         <PaddingTop>2pt</PaddingTop>
    79.                         <PaddingBottom>2pt</PaddingBottom>
    80.                       </Style>
    81.                     </Textbox>
    82.                   </CellContents>
    83.                 </TablixCell>
    84. <#  Next #>
    85.               </TablixCells>
    86.             </TablixRow>
    87.             <TablixRow>
    88.               <Height>0.25in</Height>
    89.               <TablixCells>
    90. <#    For Each column As ReportColumn in Model #>
    91.                 <TablixCell>
    92.                   <CellContents>
    93.                     <Textbox Name="<#=column.Name#>">
    94.                       <CanGrow>true</CanGrow>
    95.                       <KeepTogether>true</KeepTogether>
    96.                       <Paragraphs>
    97.                         <Paragraph>
    98.                           <TextRuns>
    99.                             <TextRun>
    100.                               <Value><#=column.Expression#></Value>
    101.                               <Style />
    102.                             </TextRun>
    103.                           </TextRuns>
    104.                           <Style />
    105.                         </Paragraph>
    106.                       </Paragraphs>
    107.                       <rd:DefaultName><#=column.Name#></rd:DefaultName>
    108.                       <Style>
    109.                         <Border>
    110.                           <Color>LightGrey</Color>
    111.                           <Style>Solid</Style>
    112.                         </Border>
    113.                         <PaddingLeft>2pt</PaddingLeft>
    114.                         <PaddingRight>2pt</PaddingRight>
    115.                         <PaddingTop>2pt</PaddingTop>
    116.                         <PaddingBottom>2pt</PaddingBottom>
    117.                       </Style>
    118.                     </Textbox>
    119.                   </CellContents>
    120.                 </TablixCell>
    121. <#  Next  #>
    122.               </TablixCells>
    123.             </TablixRow>
    124.           </TablixRows>
    125.         </TablixBody>
    126.         <TablixColumnHierarchy>
    127.           <TablixMembers>
    128. <#    For Each column As ReportColumn in Model #>
    129.             <TablixMember />
    130. <#  Next #>
    131.           </TablixMembers>
    132.         </TablixColumnHierarchy>
    133.         <TablixRowHierarchy>
    134.           <TablixMembers>
    135.             <TablixMember>
    136.               <KeepWithGroup>After</KeepWithGroup>
    137.             </TablixMember>
    138.             <TablixMember>
    139.               <Group Name="Details" />
    140.             </TablixMember>
    141.           </TablixMembers>
    142.         </TablixRowHierarchy>
    143.         <DataSetName>DataSet1</DataSetName>
    144.         <Top>0.15625in</Top>
    145.         <Left>0.125in</Left>
    146.         <Height>0.5in</Height>
    147.         <Width>2in</Width>
    148.         <Style>
    149.           <Border>
    150.             <Style>None</Style>
    151.           </Border>
    152.         </Style>
    153.       </Tablix>
    154.     </ReportItems>
    155.     <Height>0.82292in</Height>
    156.     <Style />
    157.   </Body>
    158.   <Width>6.5in</Width>
    159.   <Page>
    160.     <LeftMargin>1in</LeftMargin>
    161.     <RightMargin>1in</RightMargin>
    162.     <TopMargin>1in</TopMargin>
    163.     <BottomMargin>1in</BottomMargin>
    164.     <Style />
    165.   </Page>
    166.   <rd:ReportID>60987c40-62b1-463b-b670-f3fa81914e33</rd:ReportID>
    167.   <rd:ReportUnitType>Inch</rd:ReportUnitType>
    168. </Report>
    คัดลอกไปที่คลิปบอร์ด


    Download Project
    ผู้เข้าชมเนื้อหาถูกซ่อนไว้ คุณจะต้องแสดงความคิดเห็นก่อนจึงจะสามารถมองเห็นเนื้อหาส่วนที่ถูกซ่อนนี้ได้


    Reference (C# Code) :
    1. https://stackoverflow.com/questions/40362991/create-rdlc-report-dynamically-at-run-time-from-a-datagridview
    คัดลอกไปที่คลิปบอร์ด


    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    เหนื่อย
    เมื่อวาน 09:13
  • เช็คชื่อแล้ว: 150 วัน

    [LV.7]JuniorIII

    19

    กระทู้

    235

    โพสต์

    493

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    493
    Ticket
    326
    จิตพิสัย
    167
    as.rockchat โพสต์ 2019-5-14 23:26:41 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
    as.rockchat
  • อารมณ์วันนี้
    แฮปปี้
    1 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 79 วัน

    [LV.6]JuniorII

    2

    กระทู้

    128

    โพสต์

    463

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    463
    Ticket
    134
    จิตพิสัย
    329
    jenaum โพสต์ 2019-5-15 07:45:14 | ดูโพสต์ทั้งหมด
    ดีมากเลยครับ
  • อารมณ์วันนี้
    แฮปปี้
    2019-5-15 09:19
  • เช็คชื่อแล้ว: 2 วัน

    [LV.1]NewBie

    0

    กระทู้

    7

    โพสต์

    32

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    32
    Ticket
    19
    จิตพิสัย
    13
    tonynhkdark โพสต์ 2019-5-15 09:21:43 | ดูโพสต์ทั้งหมด
    DynamicReport.tt คือไรครับ
  • อารมณ์วันนี้
    ง่วง
    เมื่อวานซืน 20:28
  • เช็คชื่อแล้ว: 22 วัน

    [LV.4]BeginnerIII

    4

    กระทู้

    50

    โพสต์

    125

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    125
    Ticket
    27
    จิตพิสัย
    98
    anna โพสต์ 2019-5-15 21:28:52 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    ขี้เกียจ
    2019-6-5 07:30
  • เช็คชื่อแล้ว: 4 วัน

    [LV.2]BeginnerI

    1

    กระทู้

    42

    โพสต์

    7

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    7
    Ticket
    3
    จิตพิสัย
    4
    boualavanh โพสต์ 2019-5-15 23:28:39 | ดูโพสต์ทั้งหมด
    ขอบคุฌครับ
  • อารมณ์วันนี้
    สู้
    2019-5-16 11:39
  • เช็คชื่อแล้ว: 264 วัน

    [LV.8]ConquerorI

    9

    กระทู้

    212

    โพสต์

    506

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    506
    Ticket
    505
    จิตพิสัย
    1
    prachak โพสต์ 2019-5-16 11:43:42 | ดูโพสต์ทั้งหมด
    ขอเรียนด้วยครับ
  • อารมณ์วันนี้
    แฮปปี้
    2019-5-16 12:36
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    0

    กระทู้

    20

    โพสต์

    6

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    6
    Ticket
    6
    จิตพิสัย
    0
    phounakhone โพสต์ 2019-5-16 13:02:09 | ดูโพสต์ทั้งหมด
    regregregregregregreg
  • อารมณ์วันนี้
    แฮปปี้
    7 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 83 วัน

    [LV.6]JuniorII

    14

    กระทู้

    118

    โพสต์

    582

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    582
    Ticket
    140
    จิตพิสัย
    442
    optimized โพสต์ 2019-6-13 02:54:14 | ดูโพสต์ทั้งหมด
    gggggggggggggg
  • อารมณ์วันนี้
    เศร้า
    2019-6-16 20:54
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    0

    กระทู้

    97

    โพสต์

    103

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    103
    Ticket
    1
    จิตพิสัย
    102
    kandrew โพสต์ 2019-6-16 21:14:40 | ดูโพสต์ทั้งหมด

    ขอบคุณมากๆเลยครับ
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2019-7-19 09:31 , Processed in 0.059846 second(s), 27 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้