ProjectForStudy

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

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

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

    [LV.1]NewBie

    104

    กระทู้

    507

    โพสต์

    1หมื่น

    เครดิต

    ผู้ดูแลระบบ

    Rank: 9Rank: 9Rank: 9

    เครดิต
    12069
    Ticket
    9673
    จิตพิสัย
    2396

    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
  • อารมณ์วันนี้
    ง่วง
    2019-10-23 20:49
  • เช็คชื่อแล้ว: 166 วัน

    [LV.7]JuniorIII

    23

    กระทู้

    268

    โพสต์

    421

    เครดิต

    CodeDragon

    Rank: 2

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

    [LV.7]JuniorIII

    2

    กระทู้

    210

    โพสต์

    1131

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    1131
    Ticket
    340
    จิตพิสัย
    791
    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 คือไรครับ
  • อารมณ์วันนี้
    เหนื่อย
    เมื่อวานซืน 11:13
  • เช็คชื่อแล้ว: 35 วัน

    [LV.5]JuniorI

    4

    กระทู้

    71

    โพสต์

    183

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    183
    Ticket
    24
    จิตพิสัย
    159
    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
  • อารมณ์วันนี้
    สู้
    6 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 148 วัน

    [LV.7]JuniorIII

    23

    กระทู้

    189

    โพสต์

    990

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    990
    Ticket
    165
    จิตพิสัย
    825
    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-11-14 19:19 , Processed in 0.063609 second(s), 29 queries .

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

    © 2001-2013 Comsenz Inc.

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