ProjectForStudy

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

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

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

    [LV.1]NewBie

    104

    กระทู้

    506

    โพสต์

    8533

    เครดิต

    ผู้ดูแลระบบ

    Rank: 9Rank: 9Rank: 9

    เครดิต
    8533
    Ticket
    7413
    จิตพิสัย
    1120

    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
  • อารมณ์วันนี้
    โกรธ
    4 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 140 วัน

    [LV.7]JuniorIII

    18

    กระทู้

    225

    โพสต์

    411

    เครดิต

    CodeDragon

    Rank: 2

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

    [LV.5]JuniorI

    1

    กระทู้

    79

    โพสต์

    165

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    165
    Ticket
    49
    จิตพิสัย
    116
    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 คือไรครับ
  • อารมณ์วันนี้
    เศร้า
    เมื่อวาน 23:34
  • เช็คชื่อแล้ว: 14 วัน

    [LV.3]BeginnerII

    4

    กระทู้

    40

    โพสต์

    79

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    79
    Ticket
    25
    จิตพิสัย
    54
    anna โพสต์ 2019-5-15 21:28:52 | ดูโพสต์ทั้งหมด
    ขอบคุณครับ
  • อารมณ์วันนี้
    แฮปปี้
    2019-5-15 23:17
  • เช็คชื่อแล้ว: 1 วัน

    [LV.1]NewBie

    1

    กระทู้

    13

    โพสต์

    5

    เครดิต

    BabyGhost

    Rank: 1

    เครดิต
    5
    Ticket
    5
    จิตพิสัย
    0
    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
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

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

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

    GMT+7, 2019-5-24 05:01 , Processed in 0.063444 second(s), 40 queries .

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

    © 2001-2013 Comsenz Inc.

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