2012-04-19 11 views
6

मैं vbs से एक SQL डेटाबेस क्वेरी करने के लिए कोशिश कर रहा हूँ की क्वेरी, लेकिन जब कोई रिकॉर्ड पाया जाता है मैं कोई त्रुटि मिलती हैEOF और बीओएफ त्रुटि SQL डेटाबेस

ADODB.Field: या तो BOF या EOF यह सच है, या वर्तमान रिकॉर्ड हटा दिया गया है। अनुरोधित ऑपरेशन के लिए एक वर्तमान रिकॉर्ड की आवश्यकता है।

मुझे लगता है कि रिकॉर्ड प्राप्त नहीं होने पर मुझे कैप्चर करने के लिए IF नहीं कथन का उपयोग करने की आवश्यकता है, लेकिन मुझे पता नहीं चल सकता कि उसे कहां जाना है। मेरी VBScript पर

Do Until objFile.AtEndofStream 
    strAppName = objFile.ReadLine 

    ConnString="DRIVER={SQL Server};SERVER=aardvark002;UID=***;PWD=***;DATABASE=DEW_Users" 
    SQL = "USE Win7AppData SELECT " & Chr(34) & strCountry & Chr(34) & " FROM AppsByCountry WHERE Application = '" & strAppName & "'" 

    Set Connection = CreateObject("ADODB.Connection") 
    Set Recordset = CreateObject("ADODB.Recordset") 
    Connection.Open ConnString 
    Recordset.Open SQL,Connection 
    strApproval = Recordset(strCountry) 
    If StrApproval = "YES" Then 
     strApproval = "Approved" 
    Else 
     strApproval = "Denied" 
    End If 
    objExcel.Cells(intRow, 1).Value = strAppname 
    objExcel.Cells(intRow, 2).Value = strCountry 
    objExcel.Cells(intRow, 3).Value = strApproval 
    intRow = intRow + 1 
Loop 

उत्तर

5

बिट जंग लगी है, लेकिन आप की जाँच करने के अभिलेख सेट पर .EOF उपयोग करने के लिए अगर यह अंत में है सक्षम होना चाहिए:

Recordset.Open SQL,Connection 
If Recordset.EOF = false Then 
    ' have some rows, do what you want with them 
End If 

W3Schools reference

+0

+1 एडीओडीबी का उपयोग करते समय, इसके बारे में ईओएफ संदर्भ पर्याप्त है, उदाहरण के लिए एमएस एक्सेस में डीएओ के साथ काम करते समय आपको केवल बीओएफ और ईओएफ को गठबंधन करने की आवश्यकता होगी। –

0

आप हो सकता था एक और बग भी अगर आपके पास परिणाम के रूप में एक से अधिक रिकॉर्ड हैं, तो आपको अपने रिकॉर्डपोइंटर को स्थानांतरित करने की आवश्यकता है यदि आप अंतहीन पाश में समाप्त नहीं करना चाहते हैं, तो मैंने आपके कोड को थोड़ा छोटा कर दिया है, दूसरी ओर आपको बंद करने की आवश्यकता है आपका शंकु अगर आप इसे फिर से उपयोग नहीं करेंगे तो ection।

ConnString="DRIVER={SQL Server};SERVER=aardvark002;UID=***;PWD=***;DATABASE=DEW_Users" 
Set Connection = CreateObject("ADODB.Connection") 
Connection.Open ConnString 
Do Until objFile.AtEndofStream 
    strAppName = objFile.ReadLine 
    SQL = "USE Win7AppData SELECT " & Chr(34) & strCountry & Chr(34) & " FROM AppsByCountry WHERE Application = '" & strAppName & "'" 
    Set Recordset = Connection.Execute(SQL) 
    Do While not Recordset.EOF 
    strApproval = Recordset(strCountry) 
    If StrApproval = "YES" Then 
     strApproval = "Approved" 
    Else 
     strApproval = "Denied" 
    End If 
    objExcel.Cells(intRow, 1).Value = strAppname 
    objExcel.Cells(intRow, 2).Value = strCountry 
    objExcel.Cells(intRow, 3).Value = strApproval 
    intRow = intRow + 1 
    Recordset.MoveNext 
    End If 
Loop 
Connection.Close 
Set Connection = nothing 
0

मैं Recodset.EOF और Recordset.BOF जाँच की गई थी कि दोनों झूठी हैं बनाने के लिए है, लेकिन हर बार मैंने कहा त्रुटि प्राप्त किया गया था। मुझे कुछ घंटों लगे लेकिन मुझे अंत में एहसास हुआ कि यदि आप Recordset.Fields.countEOF और BOF को True पर बदल दिए गए हैं।

मुझे आशा है कि यह उपयोगी हो सकता है।

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