0

この手順から rdlc レポートを作成できません。レポート ビューアーを使用していますが、手順を選択すると、列名が表示されませんが、手順は 7 列を返します。レポートの作成方法を教えてください。vb.net でレポートを作成しています

ALTER PROCEDURE Pr_getAcceptedOnDateReport
@date date
AS
SET FMTONLY OFF
DECLARE  @SQL varchar(MAX)
DECLARE  @antiHIV bit
DECLARE  @HBsAg bit
DECLARE  @IGMHBCore bit
DECLARE  @NAT bit
DECLARE  @Malaria bit
DECLARE  @TotalHBCore bit
DECLARE  @Syphilis bit
DECLARE  @HCV bit
DECLARE  @ICT bit
DECLARE  @DCT bit
DECLARE  @Antibody bit

 Select @antiHIV=[HIV1/2 screen Reactive],
@IGMHBCore=[IgM HBcore Reactive], 
@HBsAg=[HBsAg Screen Reactive],
@NAT= [NAT Reactive],
@Malaria=[Malaria Screen Reactive],
@TotalHBCore=[Total HBcore Reactive],
@Syphilis=[Syphilis Screen Reactive],
@HCV=[HCV screen Reactive],
@ICT=[ICT Positive],
@DCT= [DCT Positive],
@Antibody= [Antibody Screen Positive]
 from m_rejectionRules where deleted=0

 DECLARE @sql1 nvarchar(4000)    

 Select @sql1='Select t.donorid, t.donorname, t.sampleid, t.customid,t.bagtype,t.bagnumber, t.segmentno from ttidetail t, m_donor m 
where t.donorid=m.donorid 
AND  CONVERT(date, m.RDate) =''' + cast(@date as varchar(100)) + ''''

IF @antiHIV='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.antiHIV like ' + ''''+ 'Non%Reactive'+''''
END
IF @HBsAg='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.HBsAg like '+ ''''+ 'Non%Reactive'+''''
END
IF @IGMHBCore='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.IGM_antiHBC like '+ ''''+ 'Non%Reactive'+''''
END
IF @NAT='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.NAT_HIV1 like '+ ''''+ 'Non%Reactive'+''''
END
IF @Malaria='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.malariaScreen like '+ ''''+ 'Non%Reactive'+''''
END
IF @TotalHBCore='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.totalAnti_HBC like '+ ''''+ 'Non%Reactive'+''''
END

IF @Syphilis='True' 
BEGIN
SELECT @sql1 = @sql1 + ' AND t.SyphilisScreen like '+ ''''+ 'Non%Reactive'+''''
END


EXEC sp_executesql @sql1
4

1 に答える 1

0

ストアド プロシージャによって返されるフィールドにマップするクラスを作成します。

Public Class ReportData

Property donorid AS Integer = 0
Property donorname as string = string.empty
Property sampleid as integer = 0 
Property customid as integer = 0
Property bagtype as string = string.empty
Property bagnumber as integer = 0
Property segmentno as integer = 0

End Class

上記のクエリを使用してデータセットを返す関数があると仮定して、それを ds と呼びます。

* 最も重要なこと * rdlc レポートを作成するときは、storedprocdure にマップするのではなく、それをオブジェクト データソースにマップし、作成したばかりのクラスを選択します。このクラスのフィールドをレポートのフィールドとして使用します。

ボタン表示レポートでは、次のコードを使用してレポートを表示できます

Private Sub ShowReport()
    Dim dsL As DataSet = New DataSet()
    dsL = GetReportData()  ' Function which will get the data from the SQL Query

    Dim rds As ReportDataSource = New ReportDataSource()
    rds.Name = "ReportDS" ' Change to what you will be using when creating an objectdatasource
    rds.Value = dsL.Tables(0)
    With rvReport   ' Name of the report control on the form
        .Reset()
        .ProcessingMode = ProcessingMode.Local
        .LocalReport.DataSources.Clear()
        .Visible = True
        .LocalReport.ReportPath = reportPath
        .LocalReport.DataSources.Add(rds)


        ' If you have any parameters you can pass them here
        Dim rptParameters As New List(Of ReportParameter)()
        With rptParameters
            .Add(New ReportParameter("Title",
                String.Format("{0} Grid For Period {1} To {2}",
                    gridType,
                    FormatDateTime(startDate, DateFormat.ShortDate),
                    FormatDateTime(endDate, DateFormat.ShortDate))))
            .Add(New ReportParameter("SubTitle", String.Format("Program: {0}", ucProgram.Text)))
            .Add(New ReportParameter("StartDate", startDate))
            .Add(New ReportParameter("EndDate", endDate))
        End With
        .LocalReport.SetParameters(rptParameters)

        .RefreshReport()
    End With

End Sub
于 2012-12-19T23:37:43.043 に答える