2013-01-24 37 views
21

में शून्य के लिए जाँच मैं एक क्लासिक एएसपी पेज में निम्नलिखित VBScript है:त्रुटि VBScript

function getMagicLink(fromWhere, provider) 
    dim url 
    url = "magic.asp?fromwhere=" & fromWhere 
    If Not provider is Nothing Then ' Error occurs here 
     url = url & "&provider=" & provider 
    End if 
    getMagicLink = "<a target='_blank' href='" & url & "'>" & number & "</a>" 
end function 

मैं लाइन है कि If Not provider Is Nothing Then कहते हैं पर एक "वस्तु आवश्यक" त्रुटि messager जा रहे हैं।

या तो मान शून्य है, या यह शून्य नहीं है, तो मुझे यह त्रुटि क्यों मिल रही है?

संपादित करें: जब मैं ऑब्जेक्ट का आह्वान करता हूं, तो मैं या तो नल में जाता हूं, या मैं स्ट्रिंग में जाता हूं।

उत्तर

30

अपने कोड से, ऐसा लगता है कि provider एक संस्करण या कुछ अन्य चर है, न कि एक वस्तु।

Is Nothing केवल वस्तुओं के लिए है, फिर भी बाद में आप कहते हैं कि यह एक मूल्य है, जो IsNull द्वारा नियंत्रित किया जाएगा कि या तो शून्य या नहीं NULL होना चाहिए।

उपयोग करके देखें:

If Not IsNull(provider) Then 
    url = url & "&provider=" & provider 
End if 

वैकल्पिक रूप से, कि अगर काम नहीं करता है, की कोशिश:

If provider <> "" Then 
    url = url & "&provider=" & provider 
End if 
+1

मैं का उपयोग कर 'नहीं IsNull (प्रदाता) Then', लेकिन फिर पृष्ठ पर' url = यूआरएल और "& प्रदाता =" & provider' लाइन एक अपवाद को जन्म देती है, तो कोशिश की। त्रुटि कहती है, "ऑब्जेक्ट वेरिएबल सेट नहीं है"। –

+0

यह एक सिर-स्क्रैचर है। क्या आप 'vbNull' में 'प्रदाता' में गुजर रहे हैं, या कुछ और? – LittleBobbyTables

+0

मैं 'कुछ भी नहीं' –

18

मैं टिप्पणी में भ्रम की स्थिति के बहुत सारे देखते हैं। Null, IsNull() और vbNull मुख्य रूप से डेटाबेस हैंडलिंग के लिए उपयोग किए जाते हैं और आमतौर पर वीबीस्क्रिप्ट में उपयोग नहीं किए जाते हैं। यदि यह कॉलिंग ऑब्जेक्ट/डेटा के दस्तावेज़ में स्पष्ट रूप से नहीं बताया गया है, तो इसका उपयोग न करें।

यह जांचने के लिए कि कोई वैरिएबल अनियमित है, IsEmpty() का उपयोग करें। यह जांचने के लिए कि कोई चर अनियमित है या "" है, "" या Empty पर परीक्षण करें। यह जांचने के लिए कि कोई चर एक ऑब्जेक्ट है, IsObject का उपयोग करें और यह देखने के लिए कि क्या इस ऑब्जेक्ट का Is Nothing पर कोई संदर्भ परीक्षण नहीं है।

अपने मामले में, आप पहले परीक्षण करना चाहते हैं कि चर एक वस्तु है या नहीं, और फिर देखें कि वह चर Nothing है, क्योंकि यदि यह कोई ऑब्जेक्ट नहीं है, तो आप परीक्षण करते समय "ऑब्जेक्ट आवश्यक" त्रुटि प्राप्त करते हैं Nothing

टुकड़ा मिश्रण और मैच अपने कोड में:

If IsObject(provider) Then 
    If Not provider Is Nothing Then 
     ' Code to handle a NOT empty object/valid reference 
    Else 
     ' Code to handle an empty object/null reference 
    End If 
Else 
    If IsEmpty(provider) Then 
     ' Code to handle a not initialized variable or a variable explicitly set to empty 
    ElseIf provider = "" Then 
     ' Code to handle an empty variable (but initialized and set to "") 
    Else 
     ' Code to handle handle a filled variable 
    End If 
End If 
0

मैं सिर्फ एक खाली जोड़ना होगा ("") चर के अंत तक और तुलना करते हैं। नीचे की तरह कुछ काम करना चाहिए, भले ही वह चर शून्य हो। आप केवल रिक्त स्थान के मामले में चर को ट्रिम कर सकते हैं।

If provider & "" <> "" Then 
    url = url & "&provider=" & provider 
End if