मैं डेल्फी प्रोग्रामर नहीं हूं, लेकिन मुझे एक पुराना डेल्फी 7 एप्लिकेशन मिला है जिसे मुझे ठीक करने की आवश्यकता है और यह एडीओ का उपयोग कर रहा है।डेल्फी एडीओ को पूरी तालिका को स्मृति में लोड करने से कैसे रोकें?
डेटाबेस तालिका (एमएस एक्सेस) में +100,000 पंक्तियां होती हैं और जब मैं ADOTable.Active = true सेट करता हूं तो यह पूरी तालिका को रैम में लोड करना शुरू कर देता है और इसमें बहुत सारी स्मृति और समय लगता है।
मैं एडीओ को पूरी तालिका लोड करने के लिए कैसे रोक सकता हूं? मैंने मैक्स रिकॉर्ड्स सेट करने की कोशिश की लेकिन यह मदद नहीं करता है।
मूल रूप से सब हम करते हैं att कार्यक्रम स्टार्टअप है:
// Connect to database
DataModule.MyADOConnection.Connected:=true;
DataModule.MeasurementsADOTable.MaxRecords:=1;
// Open datatables
DataModule.MeasurementsADOTable.Active:=true;
की स्थापना सक्रिय करने के बाद = सच यह रैम में पूरे माप लोड करने के लिए शुरू होता है और समय लगता है!
हम MSDASQL.1 प्रदाता का उपयोग कर रहे हैं। शायद यह MaxRecords संपत्ति का समर्थन नहीं करता है?
मैं इस डेटा ऑब्जेक्ट में केवल "माप से शीर्ष 1 * लोड" करने के लिए कुछ सीमित क्वेरी कैसे जोड़ूं?
कैसे मैं अपने MSACCESS साथ TCLientDataset कनेक्ट करते हैं? क्या आपके पास कुछ नमूना कोड है जिसे आप साझा कर सकते हैं? – Vlad
@Vlad: प्रक्रिया हमेशा एक ही होती है: TDatasetProvider (डीएसपी) के साथ TClientDataset (सीडीएस) को कनेक्ट करें, उस बिंदु के बाद संपत्ति DSP.DataSet गुण ADOQuery पर आप डेटा ला रहे हैं। डेल्फी सेक्शन में आप हजारों उदाहरण और एम्बरकेडेरो डॉकविकी में भी पा सकते हैं। –
धन्यवाद, मैं एक नमूना प्रोजेक्ट बनाने की कोशिश करूंगा, लेकिन फिर भी "सर्वर (कर्सर स्थान?) ओपनफॉरवर्ड के साथ एक डेमो केवल कर्सर और पैकेट रीकॉर्डर्स के साथ एक टीसीएलआईन्ट डेटासेट गैर-मूल्य मान पर सेट होगा" बहुत अच्छा होगा! ;) – Vlad