2012-06-26 15 views
11

this answer पर टिप्पणी में, Remou लिखते हैं किक्या DoCmd.SetWarnings और CurrentDB.Execute के बीच का अंतर है

CurrentDB.Execute "insert sql here"

की तुलना में बेहतर

DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"

की वजह से है में निर्मित चेतावनी है कि पहुंच पैदा करता है। मैं अंतर को समझने की कोशिश कर रहा हूं।

यदि वे दोनों मुखौटा त्रुटियां हैं, तो दूसरा व्यक्ति दूसरे पर बेहतर क्यों है? क्या यहां कोई सर्वोत्तम अभ्यास है?

उत्तर

17

वे दोनों मुखौटा त्रुटियां नहीं करते हैं। DoCmd.SetWarnings मास्क त्रुटियों और सिस्टम चौड़ा है, जो आप उपयोग कर रहे हैं एक ही आवेदन तक ही सीमित नहीं है। संबंधित DoCmd.SetWarnings True के बिना DoCmd.SetWarnings False का अर्थ यह होगा कि पीसी पर किसी भी एक्सेस एप्लिकेशन में किसी भी संकेत के बिना कार्रवाई प्रश्न चलेंगे।

निष्पादन चेतावनी फेंक देता है, आपको चेतावनी देने की चेतावनी, जैसे क्वेरी निष्पादित करने में विफल रही है, लेकिन ऐसी चेतावनियां नहीं देती है जिनकी आपको आवश्यकता नहीं हो सकती है, जैसे "क्या आप वाकई इस क्वेरी को चलाने के लिए चाहते हैं"।

In this thread एलन ब्राउन, एक्सेस एमवीपी, का कहना है कि वह सेट चेतावनी का उपयोग नहीं करता है।

एक के रूप में अलग रूप में, मैं आम तौर पर CurrentDB का एक उदाहरण का उपयोग करते हुए, के रूप में यह आप एक रिकार्ड गिनती वापस जाने के लिए अनुमति देगा, की सिफारिश करेंगे अन्य बातों के साथ है, तो:

Set db = CurrentDB 
db.Execute sSQL, dbFailOnError 
+0

अपनी टिप्पणी से: 'बिना चलाने के लिए अंतर्निहित चेतावनियां, CurrentDB का एक उदाहरण उपयोग करें और SQL स्ट्रिंग को निकालें 'जो मुझे विश्वास दिलाती है कि' .xecute' चेतावनी नहीं फेंकता है? – JimmyPena

+0

ऊपर संपादित देखें। – Fionnuala

+3

इस पर पहुंचने का एक और तरीका 'RunSql' से शुरू करना है। इसे पहले उपयोगकर्ता को यह पुष्टि करने की आवश्यकता होती है कि वह कार्रवाई क्वेरी निष्पादित करना चाहती है, फिर बाद में प्रभावित रिकॉर्ड्स की संख्या के बारे में एक संदेश प्रदर्शित करती है। लोग उन संदेशों को दबाने के लिए 'SetWarnings = False' का उपयोग करते हैं। लेकिन '[डेटाबेस] .xecute' उन संदेशों में से कोई भी प्रस्तुत नहीं करता है, इसलिए' SetWarnings' को बंद करने के लिए कोई प्रेरणा नहीं है। रेमो ने पहले ही यही कहा है। मैं अलग-अलग शब्दों का उपयोग बंद मौके पर कर रहा हूं, इससे किसी की मदद हो सकती है, और खुद को यह कहने का एक और मौका भी देने के लिए कि 'सेटवार्निंग' बंद न करें! – HansUp

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

  • कोई संबंधित समस्या नहीं^_^