ProjectForStudy

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

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

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

    [LV.1]NewBie

    107

    กระทู้

    513

    โพสต์

    1หมื่น

    เครดิต

    ผู้ดูแลระบบ

    Rank: 9Rank: 9Rank: 9

    เครดิต
    15170
    Ticket
    11312
    จิตพิสัย
    3858

    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
  • อารมณ์วันนี้
    โกรธ
    2020-6-30 16:33
  • เช็คชื่อแล้ว: 175 วัน

    [LV.7]JuniorIII

    23

    กระทู้

    281

    โพสต์

    395

    เครดิต

    CodeDragon

    Rank: 2

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

    [LV.8]ConquerorI

    2

    กระทู้

    354

    โพสต์

    2236

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    2236
    Ticket
    601
    จิตพิสัย
    1635
    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 คือไรครับ
  • อารมณ์วันนี้
    เหนื่อย
    2020-4-8 18:14
  • เช็คชื่อแล้ว: 46 วัน

    [LV.5]JuniorI

    5

    กระทู้

    86

    โพสต์

    266

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    266
    Ticket
    50
    จิตพิสัย
    216
    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 | ดูโพสต์ทั้งหมด
    ขอบคุฌครับ
  • อารมณ์วันนี้
    แฮปปี้
    2020-6-26 08:08
  • เช็คชื่อแล้ว: 265 วัน

    [LV.8]ConquerorI

    9

    กระทู้

    214

    โพสต์

    472

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    472
    Ticket
    469
    จิตพิสัย
    3
    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
  • อารมณ์วันนี้
    สู้
    เมื่อวาน 23:00
  • เช็คชื่อแล้ว: 327 วัน

    [LV.8]ConquerorI

    39

    กระทู้

    370

    โพสต์

    2334

    เครดิต

    RapterClaw

    Rank: 5Rank: 5

    เครดิต
    2334
    Ticket
    483
    จิตพิสัย
    1851
    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, 2020-8-13 22:13 , Processed in 0.073072 second(s), 28 queries .

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

    © 2001-2013 Comsenz Inc.

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