घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

नीचे

अनुकूलन के बारे में एक सार सवाल। इसी तरह की शाखाएँ खोजें


Котелок   (2001-11-30 02:16) [0]

सवाल यह है ...

नीचे दिए गए कोड को किसी भी तरह से अनुकूलित किया जा सकता है .... ???

और फिर उसने लिखा था और मैं आदी हो गया। मैं कुछ और नहीं सोच सकता ....: - ((

प्रक्रिया TFSearch.BitBtn3Click (प्रेषक: TObject);
था
s: स्ट्रिंग;
कटीआईड, स्ट्राइड: पूर्णांक;
filt: स्ट्रिंग;
शुरू करना
अगर edit2.text <> "" तब
शुरू करना
dm1.q1.close;
dm1.q1.sql.clear;
dm1.q1.sql.add ("सड़कों का चयन करें जहां नाम =: नाम");
dm1.q1.prepare;
dm1.q1.ParamByName ("नाम")। asstring: = edit2.text;
dm1.q1.open;
strId: = dm1.q1.fieldbyname ("idstreet")। एसेन्ज़र;
अंत;

अगर edit3.text <> "" तब
शुरू करना
dm1.q1.close;
dm1.q1.sql.clear;
dm1.q1.sql.add ("kategor से जहां नाम =: name" का चयन करें);
dm1.q1.prepare;
dm1.q1.ParamByName ("नाम")। asstring: = edit3.text;
dm1.q1.open;
katId: = dm1.q1.fieldbyname ("idkat")। असिनटैगर;
अंत;

sqlsearch: = "चुनें" +
"otd.predpr," +
"ओट.डॉटिड," +
"pre.idPredpr," +
"otd.name को otdname के रूप में," +
"ओट.फोन," +
"प्री.कॉस्टिक्स," +
"otd.kindid," +
"पूर्व नाम के रूप में orgname," +
"ओट.होम," +
"ओट.ऑफ़िस," +
"str.name सड़क के रूप में," +
"(क्रम से नाम का चयन करें जहाँ Idkat = pre.katalog) को katal के रूप में," +
"kat.name as kateg" +
"से +
"ओटेल ओट," +
"प्रीप्र प्री," +
"सड़कों पर, कटेगोर केट"
"जहां otd.predpr = pre.IdPredpr और otd.kindId = kat.idkat और otd.streetId = str.IdStreet";

अगर edit1.text <> "" तब
शुरू करना
sqlsearch: = sqlsearch + "और pre.name जैसे" + "" "* + edit1.text +" * "" ";
अंत;
अगर edit4.text <> "" तब
sqlsearch: = sqlsearch + "और otd.home =" + "" "" + edit4.text + "" "";
अगर edit5.text <> "" तब
sqlsearch: = sqlsearch + "और otd.office =" + "" "" + edit5.text + "" "";
अगर edit6.text <> "" तब
sqlsearch: = sqlsearch + "और otd.name जैसे" + "" "*" + edit6.text + "*" ";
अगर edit7.text <> "" तब
sqlsearch: = sqlsearch + "और otd.phone जैसे" + "" "*" + edit7.text + "*" ";

dm1.qSearch.close;
dm1.qSearch.sql.clear;
dm1.qSearch.sql.add (sqlsearch);
dm1.qSearch.Prepare;

filt: = "";
अगर edit2.text <> "" तब
filt: = "street =" "" + edit2.text + "" "";
अगर (edit3.text <> "") और (edit2.text <> "") तो
filt: = filt + "और kateg =" "+ + edit3.text +" "" ";
अगर (edit3.text <> "") और (edit2.text = "") तो
filt: = filt + "kateg =" "+ edit3.text +" "";
dm1.qSearch.open;
अगर फिल्ट <> "" तब
शुरू करना
dm1.qSearch.Filter: = filt;
dm1.qSearch.Filtered: = true;
समाप्त
अन्य
dm1.qSearch.Filtered: = false;
अंत;



kaif   (2001-11-30 04:40) [1]

थोड़ी टिप्पणी। मैंने गहराई से नहीं उतारा। लेकिन "kateg =" "" + edit3.text + "" "" जैसे निर्माण मुझे खतरनाक लगते हैं। आपको ParamByName का उपयोग करने की आवश्यकता है, अन्यथा कल्पना करें कि यदि उपयोगकर्ता पाठ में एक उद्धरण चिह्न दर्ज करता है तो क्या होगा। आप कोशिश कर सकते हैं, मैंने एक बार खुद को इस पर एक बार खींच लिया था ... और अगर यह बिल्कुल असहनीय है, तो "kateg =" + QuottStr (edit3.text) का बेहतर उपयोग करें। QuotedStr फ़ंक्शन उपयोगकर्ता उद्धरण चिह्नों का उपयोग करते हुए आपको दुर्घटनाग्रस्त होने से बचाता है। यह पाठ में दोहरे उद्धरण चिह्नों के साथ सभी एकल उद्धरण चिह्नों को प्रतिस्थापित करता है।



Котелок   (2001-11-30 08:21) [2]

हम्मम .....
मुझे ऐसे किसी ऑपरेटर के बारे में पता नहीं था ...
TNX ......

ParamByName उपयुक्त नहीं है, क्योंकि इस क्वेरी पाठ को तब अन्य रूपों में अन्य कॉल में उपयोग किया जाता है ...
उदाहरण के लिए, विभिन्न क्षेत्रों द्वारा छांटना।
जब मैं फोन करता हूं, मैं लगभग निम्नलिखित क्रियाएं करता हूं:


dm1.qSearch.close;
dm1.qSearch.sql.clear;
dm1.qSearch.sql.add (sqlsearch);
dm1.qSearch.sql.add ("otd.home द्वारा आदेश");
dm1.qSearch.Prepare;
dm1.qSearch.open;



kaif   (2001-12-01 02:37) [3]

ParamByName हमेशा "otd.home द्वारा आदेश" जोड़ने के बाद सक्षम किया जा सकता है। प्रश्नों के लिए मापदंडों के हस्तांतरण का उपयोग करना शुरू करें (इसके लिए उन्हें ": myparam" के सामने दो डॉट्स वाले नामों के साथ पाठ में लेबल करने के लिए पर्याप्त है)। आप जल्द ही देखेंगे कि यह बहुत आरामदायक और स्टाइलिश है। जब आप SQL गुण में पाठ को हथौड़ा करते हैं और तैयारी करते हैं, तो आप सभी मापदंडों के लिए मान पास करते हैं, उदाहरण के लिए, स्ट्रिंग के लिए: ParamByName ("myparam")। उदाहरण के लिए, किसी ने विंडोज पर क्षेत्रीय इंस्टॉलेशन को "dd / mm / yy" से बदलकर "mm / dd / yy" कर दिया। तब स्ट्रिंग द्वारा स्थानांतरित सभी दिनांक पैरामीटर एक त्रुटि का कारण बनेंगे, और AsDateTime के रूप में स्थानांतरित मानवीय रूप से काम करेंगे। फिर, तैयारी तभी समझ में आती है जब आप एक ही पाठ के साथ अनुरोध के लिए अलग-अलग पैरामीटर भेजते हैं और अनुरोध को फिर से खोलते हैं (तैयारी के बारे में पढ़ें)।



ilysha   (2001-12-01 16:29) [4]

आप इस तरह कोड को भी ऑप्टिमाइज़ कर सकते हैं:

अगर Edit2.Text <> "" तब शुरू करना dm1.q1 के साथ करें शुरू करना बंद; Sql.Clear; Sql.Add ("सड़कों का चयन करें जहां नाम =: नाम"); तैयार करें; ParBByName ("नाम")। Asstring: = edit2.text; खोलें; strId: = dm1.q1.FieldByName ("idstreet")। AsInteger; अंत; अंत;



Котелок   (2001-12-04 08:15) [5]

> कैफ
Gyk ... पहले तो मैंने ऐसा किया, लेकिन तब मुझे मना करना पड़ा क्योंकि
मुझे डायनामिक रूप से बनाए गए फॉर्म से पैरामीटर मिलते हैं। उदाहरण के लिए, उपयोगकर्ता ने खोज बटन पर क्लिक किया। फ़ॉर्म पॉप-अप हो गया, उसने खोज शब्दों में प्रवेश किया। मैंने यह बहुत अनुरोध किया, और फॉर्म को नष्ट कर दिया। और फिर मान लें कि उसी उपयोगकर्ता ने किसी अन्य फ़ील्ड द्वारा खोज परिणाम को सॉर्ट करने का निर्णय लिया है। और इस मामले में मुझे क्या करना चाहिए? तो मैं ऐसे ही बगीचे में चढ़ गया। अनुरोध मुख्य रूप में एक चर में संग्रहीत किया जाता है।
पुनश्च: मैं जानता हूँ कि कैसे parambyname .... ;-) का उपयोग करें ... और ईमानदारी से, मैं इस तरह से पसंद करता हूं।

> इलिशा
मुझे पता नहीं है, एक बार में मैंने कई लेखों में डेटाबेस के साथ काम करते समय निर्माण के साथ उपयोग नहीं करने की चेतावनी दी थी। हालांकि यह सही नहीं हो सकता है ...



kaif   (2001-12-04 16:10) [6]

खैर, कुछ चर में मापदंडों को बचाने के लिए और कई बार के रूप में के रूप में आप की ओर से क्वेरी पाठ की जगह के रूप में ORSAOS के संबंध में उन्हें फिर से व्यवस्थित करें। हालांकि, सिद्धांत रूप में, आपके संस्करण में कुछ भी बुरा नहीं है, मैं नहीं देखता हूं। कोड की अनुकूलता को आगे बढ़ाने के लिए आवश्यक नहीं है। लेकिन यह स्पष्टता और दृश्यता के लिए है। यदि आपको एक महीने में इस कार्यक्रम में लौटने की आवश्यकता है तो क्या होगा? कभी-कभी अपने भविष्य के काम के समय को बचाना महत्वपूर्ण होता है। सबसे अच्छा विकल्प एक सार्वभौमिक प्रक्रिया लिखना है जो कुछ समान करता है।



पन्ने: 1 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2002.01.08;
डाउनलोड करें: [xml.tar.bz2];

ऊपर









मेमोरी: 0.59 एमबी
समय: 0.054 c
14-22343
एक प्रकार का बाज़
2001-11-02 14:17
2002.01.08
हँसी के साथ लगभग फर्श पर गिर गया!


4-22484
ट्रोजन
2001-11-03 19:56
2002.01.08
मैं डेल्फी में अपने कर्सर को कैसे लोड कर सकता हूं!


1-22055
walker_ag
2001-12-19 03:27
2002.01.08
यह कैसे करें?


1-22091
मिखाइलोव दिमित्री
2001-12-19 16:02
2002.01.08
पास्कल से सवाल


6-22305
क्रिप्टिन फिटर
2001-10-11 19:43
2002.01.08
सॉकेट्स ... लोका ...





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский