2012-10-17 15 views
5

मैं एक विंडोज 7 डेस्कटॉप पर VB6 में काम कर रहा हूँ पढ़ सकते हैं और पाठ फ़ाइलों पर काम करते हैं और एक का चयन करें बयान के चर गुजर किसी समस्या का सामना किया है से SQL में फ़ाइल पथ डालने। कोड मैं है:VB6 खंड

Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim cm As ADODB.Command 

Set conn = New ADODB.Connection 
conn.Open _ 
    "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
    "Data Source=" & App.Path & ";" & _ 
    "Extended Properties=""text;HDR=No;FMT=Delimited()""" 

inputFile = "C:\test data\test data.asc" 

Set cm = New ADODB.Command 
cm.ActiveConnection = conn 
cm.CommandType = adCmdText 

cm.CommandText = "SELECT * FROM " & inputFile 
Set rs = New ADODB.Recordset 
rs.Open cm, , adOpenKeyset, adLockOptimistic 

समस्या यह है कि इनपुट फ़ाइल का पथ नाम रिक्त स्थान होता है और जब मैं कोड ऊपर चलाने के लिए, यह से में सिंटेक्स त्रुटि कह एक त्रुटि के साथ rs.OPen लाइन में विफल हो जाता है खंड। यदि इनपुटफाइल में पथ में रिक्त स्थान नहीं हैं, तो सबकुछ किसी समस्या के बिना काम करता है।

मैं inputfile चारों ओर [] आदि के ' "कई संयोजनों की कोशिश की है, लेकिन हमेशा सिंटेक्स त्रुटि या कह रही है कि inputFile.txt नहीं पाया जा सकता है एक और त्रुटि मिलती है।

किसी को भी मेरे से निपटने के लिए सही विधि दे सकते हैं पथ/फ़ाइलें एक SQL विवरण कृपया में रिक्तियों के साथ नाम?

+1

FYI करें जब एक प्रश्न के कोड जोड़ने यह टिक के निशान के बीच चला जाता है या 4 स्थानों –

+0

द्वारा यह इंडेंट तालिका आप चयन करना चाहते हैं, उसका नाम क्या है से? ऐसा लगता है कि आप फ़ाइल सिस्टम में किसी फ़ाइल से चयन करने का प्रयास कर रहे हैं, जिसका कोई मतलब नहीं है। – recursive

+0

मैं टेक्स्ट फ़ाइल से डेटा पढ़ने की कोशिश कर रहा हूं। जैसा कि मैंने कहा, अगर इनपुटफाइल में पथ में रिक्त स्थान नहीं हैं, तो मैं बिना किसी समस्या के टेक्स्ट फ़ाइल डेटा पढ़ सकता हूं। एक बार आरएस खुला होने के बाद, मैं डेटा को सरणी में रखने के लिए rs.GetRows का उपयोग करता हूं जिसे मैं संसाधित करता हूं। – blueflash

उत्तर

1

जाहिर फ़ाइल नाम should work अगर आप वर्ग कोष्ठक [] का उपयोग में रिक्त स्थान।

cm.CommandText = "SELECT * FROM [" & inputFile & "]" 

आप सवाल में कहते हैं कि आपने स्क्वायर ब्रैकेट्स की कोशिश की है - क्या आप दोबारा जांच सकते हैं? मैं निर्देशिका नाम में रिक्त स्थान के बारे में नहीं जानता।

3

डेटा स्रोत के लिए प्रदान किए गए मूल्य को हमेशा ऐसी समस्याओं से बचने के लिए उद्धृत किया जाना चाहिए। आप ", यह करने के लिए या apostrophe 'जितना आप विस्तारित गुण मूल्य के लिए किया था।

फिर एक तालिका नाम कम से कम के रूप में डेटा स्रोत निर्देशिका के भीतर एक फ़ाइल नाम का उपयोग करने के लिए" या तो उद्धरण चिह्न का उपयोग कर सकते उद्धरण "यह ब्रैकेट्स का उपयोग कर रहा है [], और # वर्ण द्वारा फ़ाइल एक्सटेंशन के लिए अधिमानतः प्रतिस्थापित करें।

" टेक्स्ट फाइलों के लिए ओएलडीडीबी प्रदाता "नहीं है लेकिन आपका उदाहरण जेट 4.0 ओएलडीडीबी प्रदाता का उपयोग अपने टेक्स्ट इंस्टॉल करने योग्य के साथ दिखाता है ISAM, जो सिर्फ ठीक है।

Processing Text Databases सामान्य रूप में इस विषय पर जानकारी का एक बहुत प्रदान करता है, सबसे उदाहरण लेकिन इसके लिए VBScript का उपयोग कर बहुत कुछ VB6 पर भी लागू होता है।

+0

+1। तदनुसार मेरी टिप्पणी सही कर दी है ... – MarkJ

0

बस सुदूर अतीत से एक स्मृति था और अगर मैं सही याद डेटा स्रोत फ़ोल्डर फ़ाइल में और चुनें तुम सिर्फ पथ के बिना फ़ाइल नाम है में आयोजित किया जाता है।

Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim cm As ADODB.Command 

Set conn = New ADODB.Connection 
conn.Open _ 
"Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=" & App.Path & ";" & _ 
"Extended Properties=""text;HDR=No;FMT=Delimited()""" 

inputFile = "test data.asc" 

Set cm = New ADODB.Command 
cm.ActiveConnection = conn 
cm.CommandType = adCmdText 

cm.CommandText = "SELECT * FROM [" & inputFile & "]" 
Set rs = New ADODB.Recordset 
rs.Open cm, , adOpenKeyset, adLockOptimistic 

(फ़ाइल संभालने App.Path में है)