2013-03-12 10 views
21

के लिए डेटा रीडर नहीं बना सकता है मैंने रिपोर्ट विज़ार्ड और डेटा स्रोत और डेटासेट का उपयोग करके वीएस 2012 के तहत एक .rdlc-रिपोर्ट बनाई है। जब मैं नीचे मैं त्रुटि संदेश निम्न पाने कोड का उपयोग कर रिपोर्ट प्रस्तुत करने के लिए प्रयास करें: "। डाटासेट 'DataSet1' के लिए एक डेटा पाठक नहीं बना सकता".rdlc रिपोर्ट - डेटासेट 'डेटासेट 1'

bytes = localReport.Render("PDF", sdeviceinfo, out smimetype, out sencoding, out sfilenameextension, out streamids, out myWarnings); 

किसी भी सुझाव के लिए अग्रिम धन्यवाद!

उत्तर

1

1) सुनिश्चित करें कि आप व्यवस्थापक मोड पर चल रहे हैं और आपके पास एसएसआरएस सर्वर तक पहुंच है।

2) सत्यापित करें कि आपने सही डेटासेट नाम सेट किया है या यदि आप इसे ठीक से लोड कर रहे हैं और इसे असाइन कर रहे हैं।

कृपया एमएसडीएन पर this नमूना देखें।

शुभकामनाएं!

51

मैं

जवाब ReportDataSource (स्ट्रिंग xxx, yyy DataTable)

आप सही नाम का उपयोग करना चाहिए है एक ही समस्या है कि "नहीं 'zzz' डेटासेट के लिए एक डेटा पाठक बना सकता है"। xxx होना चाहिए

+2

धन्यवाद, यह मेरे लिए काफी डिबगिंग का एक बहुत बचाया। – Sharbel

+1

और 'localReport.DataSources.Add()' 'ReportDataSource' जोड़ें - यह मेरा मुद्दा था। –

+0

पूरी तरह से काम किया! –

3

आप ReportViewer बनाने और सही डेटासेट प्रदान करने में असमर्थ हैं। संभव है कि आप तकनीक प्रदान करने वाले पैरामीटर के कारण त्रुटि प्राप्त कर रहे हों। आप इस तरह से कोशिश कर सकते हैं। मैं इस तरह से हल करके हल किया।

protected void btnPdf_Click(object sender, EventArgs e) 
    { 
    ReportViewer viwer = new ReportViewer(); 
    ObjectDataSource ob = new ObjectDataSource("dataset.YourTableAdapter", "GetData"); 
    dataset.YourTableAdapter ds = new dataset.YourTableAdapter(); 

    string PDF = "PDF"; 
    string ReportType = "ReportType"; 
    Warning[] warnings = null; 
    string[] streamIds = null; 
    string mimeType = string.Empty; 
    string encoding = string.Empty; 
    string extension = string.Empty; 
    string filetype = string.Empty; 



    viwer.SizeToReportContent = true; 
    viwer.LocalReport.ReportPath = "reports/report/report.rdlc"; 
    viwer.ProcessingMode = ProcessingMode.Local; 
    ob.SelectParameters.Clear(); 
    ob.SelectParameters.Add(QueryStringEnum.CompanyID, CurrentCompanyID.ToString()); 

    ReportDataSource rds = new ReportDataSource("datasetname", (object) ds.GetData((long?)CurrentCompanyID.ToInt64()); 

    viwer.LocalReport.DataSources.Add(rds); 
    viwer.LocalReport.Refresh(); 

    byte[] bytes = viwer.LocalReport.Render("PDF", null, 
    out mimeType, out encoding, out extension, out streamIds, out warnings); 




} 
8

मेरा 'गॉचा' यह खोज था कि डेटासेट डेटासेट के समान नहीं था।

(हाँ, मुझे लगता है कि मैं वास्तव में एक सार्वजनिक मंच पर यह स्वीकार कर रहा हूँ के रूप में मुझे उम्मीद है कि किसी और को इस मूर्खतापूर्ण गलती से बच सकते हैं)

1

मैं समस्या हल - मेरी कोडिंग त्रुटि - मैं लोप था SqlServerDataSource के रूप में इस प्रकार के लिए aspx कोड से 'उचित' पैरामीटर मान ...

सूचना पैरामीटर-नाम = "p_CSV_VEHICLES"

और के लिए नहीं तो DefaultValueXML है (यह पता चला) कि दो पैरामीटर (= "p_CSV_VGROUPS" और = "p_CSV_VEHICLES") एक खाली-स्ट्रिंग को "" डिफ़ॉल्ट मान के रूप में पास नहीं कर सका - खाली-स्ट्रिंग चुनिंदा सह में अमान्य है इन दो पैरामीटर के लिए ntext।

जब मैंने डिफ़ॉल्ट वैल्यू जोड़ा और प्रत्येक पैरामीटर के लिए डिफ़ॉल्ट स्ट्रिंग मानों के लिए डिफ़ॉल्ट वैल्यू सेट किया, तो रिपोर्ट मेरे वेब पेज पर ReportViewer नियंत्रण में पूरी तरह से दिखाई दी।

यहां मूल (काम नहीं कर रहा है) एएसपीएक्स-कोड है।

 <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:FCI_WebMainConnectionString %>" 
     SelectCommand="uspRPT_CostDetailFleet" SelectCommandType="StoredProcedure"> 
     <SelectParameters> 
      <asp:Parameter DefaultValue="5" Name="p_UID_DIVISION" Type="Int32" /> 
      <asp:Parameter DefaultValue="85" Name="p_UID_CUSTOMER" Type="Int32" /> 
      <asp:Parameter DefaultValue="FCIFLEETGRP" Name="p_SORT_ORDER" Type="String" /> 
      <asp:Parameter DefaultValue="" Name="p_CSV_VGROUPS" Type="String" /> 
      <asp:Parameter Name="p_CSV_VEHICLES" Type="String" /> 
      <asp:Parameter DbType="Date" DefaultValue="#01/01/2013#" Name="p_dtStart0" /> 
      <asp:Parameter DbType="Date" DefaultValue="#12/31/2013#" Name="p_dtEnd0" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 
0

मुझे भी यही समस्या थी।मेरे अवलोकनों के बाद मैंने पहचान की कि, आरडीएलसी रिपोर्टों को डेटासेट की आवश्यकता होती है या तो इसमें कुछ रिकॉर्ड होना चाहिए या खाली ऑब्जेक्ट (खाली ऑब्जेक्ट में मेटा डेटा होगा)

तो सर्वोत्तम अभ्यास हमेशा खाली ऑब्जेक्ट के साथ एक डेटासेट लौटाता है (Null या nothing) या इसमें कुछ रिकॉर्ड के साथ नहीं।

0
reportviewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", ObjectDataSource1)) 

बेहतर है कि आप अपना कोड पोस्ट करते हैं कि आप रिपोर्ट में अपना डेटा स्रोत कैसे सेट करते हैं।

0

दिखा त्रुटि DataSet1 का सेट डेटा के लिए डेटा पाठक नहीं बना सकते:

private void frm_report_Load(object sender, EventArgs e) 
{ 

    this.reportViewer1.RefreshReport(); 
    reportViewer1.LocalReport.Refresh(); 
    reportViewer1.LocalReport.DataSources.Clear(); 
    reportViewer1.LocalReport.ReportEmbeddedResource = "cruds_reports.Report1.rdlc"; 

    SqlCommand cmd = new SqlCommand("select * from tbl_info",con); 
    SqlDataAdapter da = new SqlDataAdapter(); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    DataTable dt = new DataTable(); 
    dt = ds.Tables[0]; 
    if (dt.Rows.Count>0) 
    { 
     rds = new ReportDataSource("DataSet1", dt); 
     reportViewer1.LocalReport.DataSources.Add(rds); 
     rds.Value = dt; 
     reportViewer1.LocalReport.Refresh(); 
     reportViewer1.RefreshReport(); 
    } 
    else 
    { 
     return; 
    } 

}