2011-12-16 11 views
7

फ्लोट मानों को स्ट्रिंग में कनवर्ट करने के लिए एडीओ में CAST का उपयोग कैसे करूं?एडीओ एसक्यूएल प्रकार कास्ट स्ट्रिंग (एक्सेल)

मैं

SELECT CAST([Field] AS VARCHAR(20)) FROM ... 

और

SELECT CAST([Field] AS STRING) FROM ... 

की कोशिश की और हमेशा एक OLE अपवाद (अज्ञात त्रुटि) मिलता है।

तालिका कॉलम में मिश्रित संख्यात्मक (दाएं उचित) और अल्फान्यूमेरिक (बाएं उचित) मान शामिल हैं। यदि केवल अल्फान्यूमेरिक मान हैं, तो एडीओ क्वेरी फ़ील्ड प्रकार स्ट्रिंग है।

मैं उपयोग कर रहा हूँ डेल्फी 2009 एडीओ और एक्सेल 2010

उत्तर

2

शायद CStr का उपयोग कर काम करेगा, यानी

SELECT CStr([Field]) FROM... 
+0

CSTR एक वैध रूपांतरण समारोह हो रहा है की कोशिश करो। अब यह एक और त्रुटि देता है: फ़ील्ड "फ़ील्ड" नहीं मिला। मुझे लगता है कि सीएसटी फ़ंक्शन कॉलम नाम बदलता है और। तो उपनाम फ़ील्ड नाम की आवश्यकता है: सीएसटीआर ([फ़ील्ड]) को [फ़ील्ड] के रूप में चुनें। मदद के लिए Google होगा :) – mjn

+0

कास्टिंग के बाद भी परिणाम सेट खोलते समय एक त्रुटि है - "E_FAIL"। कोई अन्य जानकारी नहीं दी गई है। मैं एक्सेल को डेटा एक्सचेंज प्रारूप के रूप में बहुत पसंद करता हूं: पी – mjn

+0

शायद सीआरटी विफल रहता है यदि फ़ील्ड पहले से ही एक स्ट्रिंग है? केवल उन पंक्तियों को डालने का प्रयास करें जिनके पास फ़ील्ड में स्ट्रिंग प्रकार का मूल्य नहीं है, 'SELECT IIF (फ़ील्ड टाइप ([फ़ील्ड]) <> स्ट्रिंग, सीएसटीआर ([फ़ील्ड]), [फ़ील्ड]) जैसे कुछ। मुझे अपने सिर के ऊपर से सही वाक्यविन्यास नहीं पता है लेकिन आपको विचार मिल गया है ... – ain

4

कास्ट एसक्यूएल सर्वर-अभिव्यक्ति है। डेल्फी में उपयोग SELECT Field FROM...

: ADOQuery.FieldByName('Field').AsString

आप SQL विवरण के माध्यम से इसे डाली नहीं कर सकता।

जब मिश्रित डेटा प्रकार का उपयोग कर:

पढ़ें this from MSDN (मिश्रित डेटा प्रकार के बारे में एक चेतावनी):

ADO must guess at the data type for each column in your Excel worksheet or range. (This is not affected by Excel cell formatting settings.) A serious problem can arise if you have numeric values mixed with text values in the same column. Both the Jet and the ODBC Provider return the data of the majority type, but return NULL (empty) values for the minority data type. If the two types are equally mixed in the column, the provider chooses numeric over text.

आप की विस्तारित गुण अनुभाग में IMEX=1 जोड़ने की आवश्यकता होगी कनेक्शन स्ट्रिंग। लगातार फ़ील्ड TWideStringField का होगा।

कनेक्शन स्ट्रिंग कुछ इस तरह दिखना चाहिए:

Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=C:\MyFile.xls;Mode=Share Deny None;Extended Properties="Excel 8.0;IMEX=1";...

+0

डेल्फी एप्लिकेशन लगातार फ़ील्ड का उपयोग करता है, इसलिए परिणाम सेट खोलते समय त्रुटि होती है - इसका मतलब है कि मैं इसका उपयोग नहीं कर सकता .सस्ट्रिंग क्योंकि ओपन पहले से ही – mjn

+0

विफल रहता है, भले ही आप एक साधारण चयन का उपयोग करते हैं? यानी: "$ शीट 1 से चुनें" (बिना कास्टिंग के)?और "लगातार फ़ील्ड" से आपका क्या मतलब है? – kobik

+0

"लगातार फ़ील्ड" प्रत्येक तालिका कॉलम के लिए प्रकार, आकार, परिशुद्धता, कैप्शन इत्यादि जैसे गुणों को संग्रहीत करते हैं। एक साधारण चयन * काम करेगा। लेकिन यदि विशेष आवश्यकताएं हैं, तो ये फ़ील्ड घटक वहां हैं और यदि उनके पास एक प्रकार है जो वास्तविक डेटा प्रकार से मेल नहीं खाता है, तो डेल्फी एडीओ घटक शिकायत करता है और अपवाद उठाता है। – mjn

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