I have a report parameter with Allow null value checked (and also Allow blank value). The report works as expected when viewed in Visual Studio, i.e. if I don't supply a value for the parameter, the report still renders. However, when I try to view this report through the web ReportViewer I get the error message "The X parameter is missing a value". It works fine when a value is supplied but I want that parameter to be optional.
Any idea what's going wrong here?
Thanks.
All parameters must have a value. In your case, it sounds like you want the default value to be null (or maybe empty string). Have you specified this as the default value? Can you post a sample RDL?
|||This is the parameter:
<ReportParameter Name="Group1">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>Group1</Prompt>
</ReportParameter>
In VS, Null is selected as the default value.
In the code that sets up the ReportViewer, I've tried both excluding the SetQueryParameter call for that parameter and also passing an empty string and both result in that error message.
|||This all looks ok. Will you post your code that sets the report definition and any other parameters?|||Microsoft.Samples.ReportingServices.ReportViewer rv = new Microsoft.Samples.ReportingServices.ReportViewer();
rv.ServerUrl = "http://localhost/ReportServer$SQL2005";
rv.ReportPath = "GroupedReport";
rv.Width = Unit.Percentage(100);
rv.Height = Unit.Percentage(100);
rv.Parameters = Microsoft.Samples.ReportingServices.ReportViewer.multiState.False;
//several parameters are added via
rv.SetQueryParameter("ParamName", ParamValue);
Then for this particular parameter, I've tried just leaving out the set parameter call and also tried doing this:
rv.SetQueryParameter("Group1", "");
and
rv.SetQueryParameter("Group1", null);
Neither of which worked.
And then of course:
plhReport.Controls.Add(rv);
Thanks for your help.
|||I didn't realize you were using the viewer sample. Since you are using SQL 2005, have you considered using the ReportViewer control that ships with Visual Studio 2005? It provides a lot more functionality than the sample and offers much better integration with your application.
You can get a lot of good information on the control from www.gotreportviewer.com.
|||Yeah, I'm in the process of converting the code to that new control and it seems to get rid of this problem.
Thanks.
|||Please help guys i posted in this forum yesterday and no one has replied. I cant even seem to get my report woking at all?
My form is very simple at the moment and has a drop down list that when a service is selected fires of a postback!
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc1:Combobox ID="Combobox1" runat="server" CSSOptionIcon="ico" AutoPostbackEnable="true"
FolderStyle="./combobox/styles/blueGray" Height="500" InnerWidth="500" Width="500">
</cc1:Combobox>
</div>
<div>
<rsweb:ReportViewer ID="SRViewer" runat="server" Visible="false" Height="600px" Width="600px" Font-Names="Verdana" Font-Size="8pt">
</rsweb:ReportViewer>
</div>
</form>
</body>
</html>
when fired the form databinds the report to a dataset / table that is returned based on drop down selection and year. for now i phisivcally put in '2007'
Protected Sub SRViewer_DataBinding(ByVal sender As Object, ByVal e As EventArgs) Handles SRViewer.DataBinding
Dim dt As DataTable = New DataTable
dt = ServiceReport(Combobox1.Text, "2007").Tables(0)
Dim DR As DataColumnCollection = dt.Columns
Dim FD As DataColumn = dt.Columns("No_of_Complaints")
Dim tD As DataColumn = dt.Columns("MonthName")
Dim bindDs_name As String = "dt"
Dim reportName As String = "Service Report"
Dim reportPath As String = "Report1.rdlc"
Dim fullReportPath As String = reportPath + reportName
Dim txtReportTitle As String = "Service Report"
If Session("fullReport") Is Nothing Then
Session.Add("fullReport", reportPath + reportName)
Else
Session.Remove("fullReport")
Session.Add("fullReport", reportPath + reportName)
End If
SRViewer.LocalReport.DisplayName = "Service Report"
SRViewer.LocalReport.ReportPath = "Report1.rdlc"
Dim No_of_Complaints As ReportParameter = New ReportParameter
Dim Month_Name As ReportParameter = New ReportParameter
No_of_Complaints.Name = "No_of_Complaints"
Month_Name.Name = "Month_Name"
For Each FD In DR
No_of_Complaints.Values.Add(FD.ToString())
Month_Name.Values.Add(tD.ToString())
Next
Dim myReportParams As ReportParameter() = New ReportParameter() {No_of_Complaints, Month_Name}
SRViewer.LocalReport.SetParameters(myReportParams)
If Not (dt Is Nothing) Then
SRViewer.LocalReport.DataSources.Clear()
SRViewer.LocalReport.DataSources.Add(New ReportDataSource(bindDs_name.Trim, dt))
dt.Dispose()
End If
End Sub
my report viewer wouldnt even compile without me addind a dataset and some parameters to it!! I dunno why i even need these parameters? i've downloaded numerous examples and cant actually ubderstand the logic behind this particuar control...
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="dt" targetNamespace="http://tempuri.org/dt.xsd" xmlns:mstns="http://tempuri.org/dt.xsd" xmlns="http://tempuri.org/dt.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="connString" ConnectionStringObject="" IsAppSettingsProperty="True" Modifier="Assembly" Name="connString (Web.config)" ParameterPrefix="@." PropertyReference="AppConfig.System.Configuration.ConfigurationManager.0.ConnectionStrings.connString.ConnectionString" Provider="System.Data.SqlClient">
</Connection>
</Connections>
<Tables>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="SelectServiceReportTableAdapter" GeneratorDataComponentClassName="SelectServiceReportTableAdapter" Name="SelectServiceReport" UserDataComponentName="SelectServiceReportTableAdapter">
<MainSource>
<DbSource ConnectionRef="connString (Web.config)" DbObjectName="TestComplaints.TestComplaint.SelectServiceReport" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="False" GeneratorGetMethodName="GetServiceData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetServiceData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="False" UserGetMethodName="GetServiceData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="False">
<CommandText>TestComplaint.SelectServiceReport</CommandText>
<Parameters>
<Parameter AllowDbNull="True" AutogeneratedName="" DataSourceName="dt" DbType="Int32" Direction="ReturnValue" ParameterName="@.RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="False" SourceVersion="Current">
</Parameter>
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="Total" DataSetColumn="Total" />
<Mapping SourceColumn="MonthName" DataSetColumn="MonthName" />
</Mappings>
<Sources>
</Sources>
</TableAdapter>
</Tables>
<Sources>
</Sources>
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="dt" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="dt" msprop:Generator_DataSetName="_dt">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="dt" msprop:Generator_UserTableName="dt" msprop:Generator_RowDeletedName="dtRowDeleted" msprop:Generator_TableClassName="dtDataTable" msprop:Generator_RowChangedName="dtRowChanged" msprop:Generator_RowClassName="dtRow" msprop:Generator_RowChangingName="dtRowChanging" msprop:Generator_RowEvArgName="dtRowChangeEvent" msprop:Generator_RowEvHandlerName="dtRowChangeEventHandler" msprop:Generator_TablePropName="dt" msprop:Generator_TableVarName="tabledt" msprop:Generator_RowDeletingName="dtRowDeleting">
<xs:complexType>
<xs:sequence>
<xs:element name="Total" msprop:Generator_UserColumnName="Total" msprop:Generator_ColumnPropNameInRow="Total" msprop:Generator_ColumnVarNameInTable="columnTotal" msprop:Generator_ColumnPropNameInTable="TotalColumn" type="xs:string" minOccurs="0" />
<xs:element name="MonthName" msprop:Generator_UserColumnName="MonthName" msprop:Generator_ColumnPropNameInRow="MonthName" msprop:Generator_ColumnVarNameInTable="columnMonthName" msprop:Generator_ColumnPropNameInTable="MonthNameColumn" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SelectServiceReport" msprop:Generator_UserTableName="SelectServiceReport" msprop:Generator_RowDeletedName="SelectServiceReportRowDeleted" msprop:Generator_TableClassName="SelectServiceReportDataTable" msprop:Generator_RowChangedName="SelectServiceReportRowChanged" msprop:Generator_RowClassName="SelectServiceReportRow" msprop:Generator_RowChangingName="SelectServiceReportRowChanging" msprop:Generator_RowEvArgName="SelectServiceReportRowChangeEvent" msprop:Generator_RowEvHandlerName="SelectServiceReportRowChangeEventHandler" msprop:Generator_TablePropName="SelectServiceReport" msprop:Generator_TableVarName="tableSelectServiceReport" msprop:Generator_RowDeletingName="SelectServiceReportRowDeleting">
<xs:complexType>
<xs:sequence>
<xs:element name="Total" msdata:ReadOnly="true" msprop:Generator_UserColumnName="Total" msprop:Generator_ColumnPropNameInRow="Total" msprop:Generator_ColumnVarNameInTable="columnTotal" msprop:Generator_ColumnPropNameInTable="TotalColumn" type="xs:int" minOccurs="0" />
<xs:element name="MonthName" msdata:ReadOnly="true" msprop:Generator_UserColumnName="MonthName" msprop:Generator_ColumnPropNameInRow="MonthName" msprop:Generator_ColumnVarNameInTable="columnMonthName" msprop:Generator_ColumnPropNameInTable="MonthNameColumn" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="30" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
I have no clue why i should use this dataset? The data i need comes from
Public Function ServiceReport(ByVal Service As String, ByVal Year As String) As DataSet
Dim SR As New DataSet
Dim db As New Database
Try
db.CommandText = "SELECT sum([Total])as No_of_Complaints,[MonthName]" & _
"FROM [TestComplaints].[dbo].[servicereport]" & _
"where [Service] = '" + Service + "' and DatePart(yy, [ReceivedDate]) = '" + Year + "'" & _
"GROUP By [MonthName]"
SR = db.ReturnDataSet(conn)
Catch ex As Exception
Throw ex
End Try
Return SR
End Function
where i have classes like database in my project that return tables etc.
when i run this in sql all i retrieve is what i want to present in the 3D type charts..
5 April
2 August
3 December
4 February
7 January
3 July
6 June
5 March
10 May
1 November
6 October
my x-m axis showing the months and y axis the total value..
I wont probably hear from anyone but thought to post anyways.
No comments:
Post a Comment