ProjectForStudy

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

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

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

    [LV.1]NewBie

    104

    กระทู้

    507

    โพสต์

    1หมื่น

    เครดิต

    ผู้ดูแลระบบ

    Rank: 9Rank: 9Rank: 9

    เครดิต
    10886
    Ticket
    8939
    จิตพิสัย
    1947

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

    [LV.7]JuniorIII

    23

    กระทู้

    265

    โพสต์

    492

    เครดิต

    TeenLion

    Rank: 3Rank: 3

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

    [LV.7]JuniorIII

    2

    กระทู้

    175

    โพสต์

    815

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    815
    Ticket
    234
    จิตพิสัย
    581
    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 คือไรครับ
  • อารมณ์วันนี้
    ง่วง
    5 วันที่แล้ว
  • เช็คชื่อแล้ว: 31 วัน

    [LV.5]JuniorI

    4

    กระทู้

    65

    โพสต์

    198

    เครดิต

    CodeDragon

    Rank: 2

    เครดิต
    198
    Ticket
    55
    จิตพิสัย
    143
    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
  • อารมณ์วันนี้
    สู้
    เมื่อวานซืน 02:05
  • เช็คชื่อแล้ว: 110 วัน

    [LV.6]JuniorII

    18

    กระทู้

    151

    โพสต์

    656

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    656
    Ticket
    69
    จิตพิสัย
    587
    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-9-22 09:28 , Processed in 0.066566 second(s), 27 queries .

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

    © 2001-2013 Comsenz Inc.

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