मैं एक ASP.Net ऐप को वीएस 2003 से वीएस 2005 में शुरुआती बिंदु के रूप में परिवर्तित कर रहा हूं। ऐप क्रिस्टल रिपोर्ट्स का उपयोग करता है और दृढ़ता से टाइप किए गए डेटासेट (एक्सएसडी) के लिए ADO.Net का उपयोग करके बांधता है। क्रिस्टल के नए संस्करण के साथ काम करने के लिए मुझे कुछ क्रिस्टल कोड बदलना पड़ा। अब, जब मैं पृष्ठ चलाता हूं, तो रिपोर्ट उत्पन्न होती है, लेकिन कोई भी फ़ील्ड नहीं भरता है। मैंने देखा है कि बहुत से लोगों को एक ही समस्या है और वहां कोई वास्तविक समाधान नहीं है। मैंने एक नई परियोजना बनाने का फैसला किया जो समस्या के संभावित कारण के रूप में वीएस 2003 से 2005 तक बातचीत को हटाने के लिए वही काम करता है। तो मेरे नमूना कार्यक्रम में एक बटन है जो एक क्वेरी चलाता है, डेटासेट भरता है और इसे रिपोर्ट में असाइन करता है। रिपोर्ट केवल शीर्षलेख प्रदर्शित करती है। कोड नीचे है। मुझे नहीं पता कि आगे क्या प्रयास करना है।

    DataSet1 ds = new DataSet1();

    SqlConnection conn = 
       new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

    SqlDataAdapter da = new SqlDataAdapter("select * from mytable", conn);
    da.Fill(ds);

    ReportDocument rep = new ReportDocument();
    rep.Load(Server.MapPath("crystalreport.rpt"));
    rep.SetDataSource(ds);

    CrystalReportViewer1.ReportSource = rep;
    CrystalReportViewer1.RefreshReport();

मैंने उसी MYTABLE तालिका के आधार पर DataSet1.XSD भी बनाया। मुझे कोई त्रुटि नहीं मिलती है या कोई संकेत मिलता है कि कुछ भी गलत है सिवाय इसके कि रिपोर्ट में फ़ील्ड पॉप्युलेट नहीं होते हैं।

0
John Virgolino 1 जुलाई 2011, 03:55

1 उत्तर

सबसे बढ़िया उत्तर

यह सुनिश्चित करने के लिए कुछ डिबगिंग करना होगा कि यह आपके लिए क्यों काम नहीं कर रहा है। क्या आपने परिणामी डेटासेट को डिबगिंग सत्र में देखा है, और देखा है कि यह सही ढंग से भरता है या नहीं?

यहां से काम करने की विधि का एक अच्छा उदाहरण दिया गया है।

SqlConnection cnn;
string connectionString = null;
string sql = null;

connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user id=USERNAME;password=PASSWORD;";
cnn = new SqlConnection(connectionString);
cnn.Open();
sql = "select * from mytable";
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
DataSet1 ds = new DataSet1();
dscmd.Fill(ds, "mytable");
cnn.Close();

CrystalReport1 objRpt = new CrystalReport1();
objRpt.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
1
Precious Roy 1 जुलाई 2011, 04:11
पहली नज़र में आपका कोड मेरे जैसा ही है, एक छोटे से विवरण को छोड़कर ... आप सेटडेटा स्रोत में स्पष्ट तालिका निर्दिष्ट करते हैं जहां मैंने रिपोर्ट को संपूर्ण डेटासेट भेजा था। एक बार जब मैंने इसे तालिका संदर्भ में बदल दिया, तो सब कुछ अच्छी तरह से भर गया। धन्यवाद।
 – 
John Virgolino
1 जुलाई 2011, 23:04
मुझे लगा कि शायद यही कुंजी थी कि यह काम क्यों नहीं कर रहा था। मैं एक बड़ा कॉपी/पेस्ट लड़का हूं, इसलिए मुझे निर्माण के लिए पूर्ण उदाहरण पसंद हैं क्योंकि मैं हमेशा इस तरह के छोटे विवरणों को भूल जाता हूं। खुशी है कि इससे मदद मिली।
 – 
Precious Roy
1 जुलाई 2011, 23:57