के साथ काम नहीं कर रहे एक्सेस 2010 डीबी के खिलाफ एसक्यूएल स्टेटमेंट मैं रिकॉर्ड्स खोजने के लिए एक्सेस डीबी के खिलाफ एक सरल कथन चलाने का प्रयास कर रहा हूं।ओडीबीसी
रिकॉर्ड में डेटा सत्यापन भयानक था, और मैं इसे स्वच्छ नहीं कर सकता। मतलब, यह संरक्षित किया जाना चाहिए।
मुझे सफेद स्थान और हाइफ़न वर्णों के साथ एक स्ट्रिंग के विरुद्ध खोजने में सक्षम होना चाहिए। निम्नलिखित कथन एक्सेस 2010 में सीधे काम करेगा:
select * from dummy where Replace(Replace([data1],' ',''),'-','') = 'ABCD1234';
PHP के माध्यम से ओडीबीसी कनेक्शन से इसे चलाने से नहीं होगा।
SQL error: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'Replace' in expression., SQL state 37000 in SQLExecDirect
डेटाबेस समारोह चलाता है कि में एक प्रश्न तैयार करना और उसका मान खोज करने के लिए प्रयास करने से परोक्ष रूप से एक ही त्रुटि होती है:
select * from dummy_indirect where Expr1 = 'ABCD1234';
मैं दोनों ODBC का उपयोग करने का प्रयास किया यह निम्न त्रुटि पैदा करता है ड्राइवर मौजूद हैं। ODBCJR32.dll (03/22/2010) और ACEODBC.dll (02/18/2007)। मेरे ज्ञान के लिए ये वर्तमान होना चाहिए क्योंकि इसे पूर्ण एक्सेस 2010 और एक्सेस 2010 डेटाबेस इंजन के साथ स्थापित किया गया था।
इस त्रुटि के आसपास काम करने और समान प्रभाव प्राप्त करने के बारे में कोई भी विचार स्वागत है। कृपया ध्यान दें, कि मैं डेटाबेस, तरीके, या रूप में परिवर्तित नहीं कर सकता। वह अप्रत्यक्ष क्वेरी किसी अन्य एमडीबी फ़ाइल में बनाई गई थी जिसमें मूल डीबी से जुड़ी मूल सारणीयां थीं।
* अद्यतन *
OLEDB वास्तव में कुछ प्रभावित नहीं किया।
$dsn= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\dummy.mdb;";
मैं इसे वेब बैकएंड के रूप में उपयोग करने का प्रयास नहीं कर रहा हूं। मैं एक दुखद नहीं हूँ।
एक विरासत प्रणाली है जिसे मुझे का समर्थन करना चाहिए बैकएंड के रूप में उपयोग का उपयोग करें। अन्य पुरानी प्रणालियों से डेटा पॉप्युलेट हो जाता है जिसे मुझे अधिक आधुनिक प्रणालियों में एकीकृत करना होगा। इसलिए, विरासत प्रणाली का समर्थन करने वाले सर्वर पर चल रहे अपाचे/PHP के साथ एक एपीआई का निर्माण।
मुझे एक सारणी को खोजने में सक्षम होना चाहिए जिसमें अल्फान्यूमेरिक केस पहचानकर्ता है जो एक संख्यात्मक पहचानकर्ता प्राप्त करने के लिए अद्वितीय है और जेनरेटर (एक्सेस में ऑटोनंबर) से जुड़ा हुआ है। उपयोगकर्ता इसे वर्षों के लिए एक ट्रैश बॉक्स (स्पोरैडिक नोटेशन के साथ असंगत डेटा प्रविष्टि) का उपयोग कर रहे हैं, इसलिए मेरे पास केवल एक ही समाधान है जो फ़ील्ड मान और खोज मूल्य दोनों के अल्फान्यूमेरिक को छोड़कर सबकुछ को पट्टी करना है और इसके खिलाफ तुलना तुलना करने का प्रयास करना है।
यदि प्रतिस्थापित नहीं किया गया है() जो समर्थित है, ओडीबीसी संगत कार्य क्या मौजूद हैं जो मैं समान प्रकार की तुलना कर सकता हूं?
एक्सेस डीबी इंजन सभी एप्लिकेशन संदर्भों में कार्यों के मानक सेट का समर्थन करता है। अन्य कार्य, जैसे 'Replace()', और उपयोगकर्ता द्वारा परिभाषित फ़ंक्शंस, जैसे कि आपकी 'dummy_indirect() ', केवल एक्सेस एप्लिकेशन इंस्टेंस के भीतर से समर्थित हैं। जब आप अपने डीबी तक पहुंचने के लिए ओडीबीसी का उपयोग करते हैं, तो एक्सेस स्वयं नहीं चल रहा है ... तो वे फ़ंक्शंस उपलब्ध नहीं हैं। – HansUp
dummy_indirect एक क्वेरी है। ओडीबीसी द्वारा कौन से फ़ंक्शंस समर्थित हैं? कहीं भी सूची ढूंढना बहुत मुश्किल है। क्या कुछ जगह बदलने के समान है? – user1441141
क्षमा करें मुझे dummy_indirect के बारे में उलझन में आया। हालांकि, अगर यह एक और प्रश्न है जो 'प्रतिस्थापन() 'का उपयोग करता है, डीबी इंजन अभी भी उस फ़ंक्शन को तब तक पहचान नहीं पाएगा जब तक यह किसी एसी के भीतर से नहीं चलता है सेस आवेदन उदाहरण। – HansUp