2011-12-06 22 views
5

मुझे इस समस्या का सामना करना पड़ रहा है। मेरे पास एक संग्रहीत प्रक्रिया है जो इसे निष्पादित करते समय 6 पंक्तियां देता है।आईडीटाइडर एक पंक्ति क्यों खो देता है?

लेकिन जब मैं ExecuteReader का उपयोग करके अपने ऐप में पंक्तियों को पुनर्प्राप्त कर रहा हूं, तो यह केवल 5 पंक्तियां देता है। यह एक पंक्ति क्यों खो रहा है ??

dbase.AddInParameter(cmd, "@LoginUser", DbType.String, UserID); 

    try 
    { 
     using (IDataReader dr = dbase.ExecuteReader(cmd)) 
     if (dr.Read()) 
     { 
     dt = new DataTable("DashBoard"); 
     dt.Load(dr); 
     } 
    } 

dbase मेरी डेटाबेस वस्तु है:

मेरे संग्रहीत प्रक्रिया 5 संघ बयान जो एक एकल तालिका से भरा जा रहा है के होते हैं। और cmdSqlCommand संग्रहीत प्रक्रिया को कॉल करने के लिए उपयोग किया जाता है।

ALTER PROCEDURE [dbo].[USP_ViewAdminDashBoard](@LoginUser varchar(75)) 
    -- Add the parameters for the stored procedure here 
AS 
BEGIN 

    SET NOCOUNT ON; 
    SET DATEFORMAT DMY; 
    DECLARE @LastLoginDate as DateTime 

     Select @LastLoginDate = dbo.UDF_GetLastLoginByUser(@LoginUser) 
    Select 'Last Login Date', convert(varchar(12),@LastLoginDate,105) 

    Union 
    Select 'Nos. Records pending for Upload' as Title, convert(varchar(5),COUNT(s.BatchID)) Total from dbo.BREGISTRATIONENTRY s, Dbo.TBL_iBATCH B 
    where B.BatchID = s.BatchID And b.Forwarded = 0 and b.isBatchClosed = 1 
END 
+3

दिखाने के लिए कृपया अपना कोड। –

+1

कृपया हमें संग्रहीत प्रक्रिया भी दिखाएं। – Fischermaen

उत्तर

12

आपका पहला dr.Read पहली पंक्ति के लिए आगे बढ़ रहा है:

UserID पैरामीटर गुजर रहा है

संग्रहित प्रक्रिया संहिता है। पहले परीक्षण के बिना

बस DataTable लोड: DataTable.Load शेष पंक्तियों नहीं बल्कि पहली पंक्ति

उपयोग HasRows अस्तित्व के लिए परीक्षण करने के लिए और इससे पहले कि DataTable.Load

संपादित Read का उपयोग नहीं करते पढ़ रही है : फिर डेटाटेबल पर परीक्षण करें। IDataReader इंटरफ़ेस में कोई हैसरो नहीं है।

+0

धन्यवाद पाल मैं मूलभूत – joshua

+1

दुर्भाग्य से याद करता हूं, 'आईडीटाइडर' में 'हैसरो' नहीं है, इसलिए मुझे लगता है कि आप केवल 'डेटाटेबल' बना सकते हैं और जांच सकते हैं कि परिणाम के बजाय पंक्तियां हैं या नहीं। –

+0

@ C.Evenhuis: आह हाँ, – gbn

0

आईडीटाइडर एक आगे पाठक है, इसका मतलब है कि जब आप एक पंक्ति पढ़ते हैं, तो उस पंक्ति को पाठक से हटा दिया जाएगा और आप इसे पाठक से और नहीं प्राप्त कर सकते हैं।

+0

यह एक पाठक का मूल व्यवहार है – joshua

0

जोशुआ मुझे एंटरप्राइज़ लाइब्रेरी का उपयोग करते समय भी दो बार से अधिक समस्या का उपयोग करते हुए भी समस्या है, लेकिन मैं अपने स्टोर प्रक्रिया में कोई समस्या पाता हूं, लेकिन मुझे क्वेरी में कोई गलत चयन होना चाहिए या किसी और चीज को डीबी सर्वर का पता लगाने नहीं है और मैं इसे हल करने और मेरी IDataReader सभी पंक्तियों को चुनें और भी उसी तरह का उपयोग के रूप में प्रयोग द्वारा 'GBN' का सुझाव (IDataReader डॉ = oDb.ExecuteReader (p_oDbCommand)) {

   if (dr != null) 
       { 

        ds.Tables[0].Load(dr); 
       } 

      } 
      return dt; 
संबंधित मुद्दे