调用函数时,错误'变量未定义'

时间:2012-04-18 17:27:50

标签: asp-classic

我创建了一个经典的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运行时错误“800a01f4”

     

变量未定义:'Lettergade'

有没有人有想法?

5 个答案:

答案 0 :(得分:5)

  1. 选项显式表示您必须使用DIM变量才能使用它们。
  2. &lt;! - #INCLUDE file =&#39; ADOVBS.inc&#39; - &gt; 不是vbscript,因此不要在&lt; %%&gt;之间包含它们。脚本分隔符标签。
  3. 您需要 DIM strgrade
  4. 在使用之前需要 DIM strlettergrade
  5. 修正Lettergade(strgrade)的错字
  6. 
    <%@ 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 
    %> 
    

答案 1 :(得分:2)

尝试删除函数调用中的Set,然后只分配Lettergrade = lgs

答案 2 :(得分:1)

Variable is undefined: 'Lettergade'

函数似乎被称为Lettergrade而不是Lettergade - 可能只是一个错字问题

尝试更改:

strlettergrade=Lettergade(strgrade)

strlettergrade=Lettergrade(strgrade)

答案 3 :(得分:1)

这个脚本存在一些问题,Chris和Ryan已经指出了一些问题。

  1. 将对象分配给变量时,只需要Set。字符串不是VBScript中的对象。摆脱脚本中的所有Set

  2. 克里斯提到的明显错字。将Lettergade更改为Lettergrade

  3. 您似乎没有声明strlettergradestrGrade变量。启用Option Explicit后(这是一种很好的做法),必须声明所有变量。使用Dim(就像你的功能中的那个)。

  4. 您似乎使用字符串作为Lettergrade函数的参数。由于变量名称为strgrade。在您与integer进行比较的函数中。这个可能导致问题。首先使用cInt函数将字符串转换为整数。

  5. 需要超出<% %>标记。将<!--#INCLUDE file='ADOVBS.inc'-->移至Option Explicit

  6. 下面的行

    按照以下步骤操作,或从@Cape Cod Gunny复制粘贴脚本。在此之后,您的脚本应该按预期工作;)。除了第4点,你仍然需要纠正它。

答案 4 :(得分:0)

调用该功能时,你拼错了Lettergrade。变量未定义:' Lettergade '我也会接受SLaks建议。 Set不应该用在字符串上。