3

次のような機能を持つ従来の 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'

誰にもアイデアはありますか?

4

5 に答える 5

5
  1. Option Explicitは、変数を使用する前に変数を DIM する必要があることを意味します。
  2. <!--#INCLUDE file='ADOVBS.inc'-->は vbscript ではないため、<% %> スクリプト区切りタグの間に含めないでください。
  3. あなたはDIM strgradeが必要です
  4. 使用する前に strlettergradeをDIMする必要があります
  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 
%> 
于 2012-04-18T19:28:36.020 に答える
2

Set関数呼び出しの内側を取り除き、単に割り当ててみてくださいLettergrade = lgs

于 2012-04-18T17:34:37.340 に答える
1

Variable is undefined: 'Lettergade'

関数が呼び出されLettergradeていないLettergadeようです - タイプミスの問題かもしれません

変更してみてください:

strlettergrade=Lettergade(strgrade)

strlettergrade=Lettergrade(strgrade)

于 2012-04-18T18:01:48.167 に答える
1

このスクリプトにはいくつかの問題があり、一部は Chris と Ryan によって既に指摘されています。

  1. Setオブジェクトを変数に代入する場合にのみ必要です。VBScript では、文字列はオブジェクトではありません。Setスクリプト内のすべての 'sを取り除きます。

  2. Chris が言及した明らかなタイプミス。に変更LettergadeLettergradeます。

  3. strlettergradeorstrGrade変数を宣言していないようです。有効にした場合 (これOption Explicitは良い方法です)、すべての変数を宣言することが必須です。これに使用Dimします(関数内のものなど)。

  4. 関数のパラメーターとして文字列を使用しているようですLettergrade。変数名はstrgrade. 関数内で と比較していintegerます。これにより、問題が発生する可能性があります。関数を使用して、最初に文字列を整数に変換しますcInt

  5. <% %>タグの外に出る必要があります。<!--#INCLUDE file='ADOVBS.inc'-->下の行に移動Option Explicit

次の手順に従うか、@Cape Cod Gunny からスクリプトをコピーして貼り付けます。この後、スクリプトは期待どおりに動作するはずです;)。ポイント 4 を除いて、まだ修正する必要があります。

于 2012-04-18T19:26:40.203 に答える
0

関数を呼び出すときに、Lettergrade のスペルを間違えました。Variable is undefined: ' Lettergade ' また、SLaks のアドバイスも参考にします。セットは文字列には使用しないでください。

于 2012-04-18T18:04:37.087 に答える