2012-04-18 44 views
2

我創建了一個傳統的ASP頁面的功能等功能時,「變量未定義」以下內容:錯誤調用

<%@ Language=VBScript %> 
<% Option Explicit %> 

<% 
     <!--#INCLUDE file='ADOVBS.inc'--> 
     Response.Buffer = True 

%> 
<% 
     Function Lettergrade(lg) 

      Dim lgs 
      if lg>50 then 
      set lgs="P" 
       else 
      set lgs="F" 
      end if 
      set Lettergrade= lgs 
     End Function 
    %> 
<% 
set strlettergrade=Lettergade(strgrade) 
... other code goes here 
%> 

我想打電話給在表達式中的作用,但是當它給了我出現以下錯誤:

Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'Lettergade'

有沒有人有想法?

回答

2

嘗試在函數調用中刪除Set,並且只分配Lettergrade = lgs

+0

我嘗試過了,我再次獲得前錯誤.. – 2012-04-18 17:47:26

1

功能似乎被稱爲Lettergrade沒有Lettergade - 可能只是一個錯字問題

嘗試改變:

strlettergrade=Lettergade(strgrade)

strlettergrade=Lettergrade(strgrade)

+0

這是正確的。非常感謝。從昨晚開始出現這個錯誤。 – 2012-04-18 19:16:16

+1

更改此代碼後,您的代碼工作?哇,你確定在你的問題中插入了很多誘餌錯誤;)。 – 2012-04-18 19:41:00

0

調用函數時拼錯Lettergrade。變量未定義:'Lettergade'我也會採取SLaks的建議。 Set不應該用在字符串上。

1

這個腳本有幾個問題,Chris和Ryan已經指出了一些問題。

  1. 當您將對象指定給變量時,您只需要Set。字符串不是VBScript中的對象。擺脫腳本中的所有Set

  2. Chris提到的明顯錯字。將Lettergade更改爲Lettergrade

  3. 您似乎並不聲明strlettergradestrGrade變量。在開啓Option Explicit(這是一個很好的做法)後,必須聲明所有變量。爲此使用Dim(就像你的功能裏面的那個)。

  4. 您似乎使用字符串作爲Lettergrade函數的參數。由於變量名稱是strgrade。在這個函數中,您將與integer進行比較。這可能會導致問題。首先使用cInt函數將字符串轉換爲整數。

  5. 包括需要去<% %>標籤之外。移動<!--#INCLUDE file='ADOVBS.inc'-->到該線下方Option Explicit

按照以下步驟,或複製粘貼@Cape科德麻袋腳本。在此之後你的腳本應該按預期工作;)。除了第4點,你仍然需要糾正這一點。

4
  1. 選項明確表示您必須使用DIM變量才能使用它們。
  2. <! - #INCLUDE文件= 'ADOVBS.INC' - >沒有VBSCRIPT所以不包括他們<%%>腳本分隔符標記之間。
  3. 您需要DIM strgrade
  4. 需要DIM strlettergrade你使用它
  5. 修復Lettergade(strgrade)的錯字

<%@ Language=VBScript %> 
<% Option Explicit %> 
<% Response.Buffer = True %> 

<!--#INCLUDE file='ADOVBS.inc'--> 

<% 
Dim strlettergrade 
Dim strgrade 

%> 

<% 
Function Lettergrade(lg) 

if lg > 50 then 
    Lettergrade ="P" 
else 
    Lettergrade ="F" 

End Function 
%> 

<% 
strgrade = 75 
strlettergrade=Lettergrade(strgrade) 
... other code goes here 
%>