2012-04-03 3 views
6

मुझे एक टीटीबल घटक मिला है जो डीबीएस तालिका का उपयोग करने के लिए बीडीई का उपयोग करता है। तालिका पर कोई अनुक्रमणिका नहीं है, इसलिए सॉर्ट ऑर्डर तालिका में रिकॉर्ड्स का भौतिक क्रम है। अगर मैं रिकनो संपत्ति पढ़ता हूं, तो इसमें वर्तमान रिकॉर्ड के लिए अपेक्षित संख्या शामिल है।तालिका की रिकनो संपत्ति को सेट करने से उस रिकॉर्ड में क्यों नहीं बढ़ता है?

मैं इस धारणा के तहत था कि इस नक्षत्र (बीडीई + डीबेस) के साथ रिकॉनो प्रॉपर्टी को इसी रिकॉर्ड में स्थानांतरित करना भी संभव है। लेकिन जाहिर है यह मेरे कार्यक्रम में काम नहीं करता है।

तो: क्या मुझे यह गलत तरीके से याद है? या क्या काम करने के लिए मुझे कुछ खास करने की ज़रूरत है?

(कृपया BDE छोड़ने के बारे में सलाह देने के लिए नहीं है। मैं अपने मुद्दों के बारे में पता कर रहा हूँ और हम पहले से ही इससे दूर पलायन कर रहे हैं।)

उत्तर

8

TBDEDataSet लागू करता है केवल Paradox (नहीं DBase) के लिए RecNo सेटर।

unit DBTables; 
... 
procedure TBDEDataSet.SetRecNo(Value: Integer); 
begin 
    CheckBrowseMode; 
    if (FRecNoStatus = rnParadox) and (Value <> RecNo) then 
    begin 
    DoBeforeScroll; 
    if DbiSetToSeqNo(Handle, Value) = DBIERR_NONE then 
    begin 
     Resync([rmCenter]); 
     DoAfterScroll; 
    end; 
    end; 
end; 

आप कुछ इस तरह सामान्य करने की कोशिश करना चाहते हो सकता है:

procedure SetRecNo(DataSet: TDataSet; const RecNo: Integer); 
var 
    ActiveRecNo, Distance: Integer; 
begin 
    if (RecNo > 0) then 
    begin 
    ActiveRecNo := DataSet.RecNo; 
    if (RecNo <> ActiveRecNo) then 
    begin 
     DataSet.DisableControls; 
     try 
     Distance := RecNo - ActiveRecNo; 
     DataSet.MoveBy(Distance); 
     finally 
     DataSet.EnableControls; 
     end; 
    end; 
    end; 
end; 
+0

वरना इसका प्राथमिक कुंजी [dbase] द्वारा कुछ खोजें। या प्राथमिक कुंजी [एसक्यूएल] पर पूछताछ। –

संबंधित मुद्दे

 संबंधित मुद्दे