【问题标题】:How to display selected rows in datagridview to crystal report如何将datagridview中的选定行显示为水晶报表
【发布时间】:2016-02-07 04:42:43
【问题描述】:

这是我第一次使用 Crystal 报表。我有一个存储过程,我想要做的是当我突出显示 datagridview 中的一行并单击报表按钮时,只有突出显示的行被发送到报表查看器页面。我在这里尝试了一些解决方案,但没有运气。

举报按钮代码

Imports System.Data.SqlClient
Imports System.IO
Imports CrystalDecisions.CrystalReports.Engine

Public Class frmView
    Dim cn As New SqlConnection("Data Source=.;Initial Catalog=DBSAS;Integrated Security=True")
    Dim cmd As New SqlCommand
    Dim da As New SqlDataAdapter
    Dim dt As New DataTable
    Dim i As Integer
    Dim a As New OpenFileDialog

    Private Sub btnRep_Click(sender As Object, e As EventArgs) Handles btnRep.Click 
            cn.Open()
        Dim report As New ReportDocument
        da.SelectCommand = New SqlCommand("EXEC usplatestDateEnrolled ", cn)
        report.RecordSelectionFormula = "{@studID}" & dgv1.SelectedRows(0).Cells(0).Value
        report.Load("C:\users\agent_edx44\My Documents\Visual studio 2012\projects\SASApp\Rep.rpt")
        frmReport.CrystalReportViewer1.ReportSource = report
        frmReport.CrystalReportViewer1.Refresh()
        frmReport.Show()
            cn.Close()
    End Sub

End Class

存储过程代码

USE [DbSAS]
GO
/****** Object:  StoredProcedure [dbo].[uspLatestDateEnrolled]    Script Date: 02/07/2016 12:35:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[uspLatestDateEnrolled]
    -- Add the parameters for the stored procedure here

@studID INT = NULL


AS
BEGIN

    SET NOCOUNT ON;
SELECT sh.SchoolYear,
        sh.Levels,sh.Section, sh.DateEnrolled ,
        SI.StudentID,SI.Surname,SI.FirstName,SI.MiddleName, SI.StudAddress , 
        SI.BirthDay,SI.Gender, SI.Nationality, SI.BirthPlace,
        SI.TelNum,SI.SchoolWhereGraduated , 
        SI.DatesWhenGraduated, SI.SchoolLastAttended,
        SI.SchoolAddress, SI.Note,SI.StudImage,
        PI.Father_FirstName,PI.Father_LastName,
        PI.Father_MI,PI.Father_Occupation, 
        PI.Father_TelNUm, PI.Mother_FirstName, PI.Mother_LastName,
        PI.Mother_MI,PI.Mother_Occupation,PI.Mother_TelNum,
        PI.Contact_FirstName,PI.Contact_LastName,PI.Contact_MI,
        PI.Contact_Mobile,PI.Contact_TelNum,PI.Contact_Address  
        FROM StudentInformation SI 
        JOIN StudentHistory SH  
            ON SI.StudentID = SH.StudentID
        JOIN ParentInformation PI
        ON PI.ParentID = SI.ParentID
        WHERE si.StudentID = @studID
        ORDER BY DateEnrolled DESC

            SELECT * FROM StudentHistory WHERE StudentID = @studID
                ORDER BY DateEnrolled DESC
            SELECT TOP 1 SchoolYear,
                Levels,Section, DateEnrolled as LatestDate
                FROM StudentHistory
                WHERE studentID = @studID
                ORDER BY DateEnrolled DESC

当我运行这段代码时,它会说

此行中的报告文件路径无效

report.RecordSelectionFormula = "{@studID}" & dgv1.SelectedRows(0).Cells(0).Value

谁能帮我修复我的代码。我被困在这里将近一个小时。提前致谢

【问题讨论】:

  • 你在哪里将值传递给存储过程?
  • @Siva 我想将它传递给我的水晶报表,这样只有选定的数据才会出现在我的水晶报表查看器页面上。你能帮我做吗?
  • 我不精通代码,但这可能会对您有所帮助..像这样尝试....report.RecordSelectionFormula = "{@studID}" & "-" & dgv1.SelectedRows(0) .Cells(0).Value
  • @Siva 感谢您的回复,但它产生了同样的错误。我在这里呆了将近 10 个小时。我希望有人可以帮助我解决这个问题。
  • 我犯了一个错误,现在试试 report.RecordSelectionFormula = "{@studID}" & "= & dgv1.SelectedRows(0).Cells(0).Value

标签: sql-server vb.net sql-server-2008 datagridview crystal-reports


【解决方案1】:

尝试在此行末尾添加 .ToString:

report.RecordSelectionFormula = "{@studID}" & dgv1.SelectedRows(0).Cells(0).Value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多