ASP ベーシック

  目次







  Request.QueryString



QueryString は、GET コマンドによるデータのコレクションです

  
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>
<FORM method="GET">
	<INPUT
		type=text
		name=In1001 
		value="<%= Request.QueryString("In1001") %>"
	>
	<INPUT
		type=text
		name=In1002 
		value="<%= Request.QueryString("In1002") %>"
	>
	<INPUT type=submit value="送信">
</FORM>

<PRE>
<%
	For Each strKey in Request.QueryString
		Response.Write strKey & " -> "
		Response.Write Request.QueryString( strKey ) & vbCrLf
	Next

	Response.Write vbCrLf
	Response.Write Request.QueryString
%>
</PRE>

</BODY>
</HTML>
  


In1001 -> 123
In1002 -> 表示

In1001=123&In1002=%95%5C%8E%A6





  Request.Form

Form は、POST コマンドによるデータのコレクションです

  
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>
<FORM method="POST">
	<INPUT
		type=text
		name=In1001 
		value="<%= Request.Form("In1001") %>"
	>
	<INPUT
		type=text
		name=In1002 
		value="<%= Request.Form("In1002") %>"
	>
	<INPUT type=submit value="送信">
</FORM>

<PRE>
<%
	For Each strKey in Request.Form
		Response.Write strKey & " -> "
		Response.Write Request.Form( strKey ) & vbCrLf
	Next

	Response.Write vbCrLf
	Response.Write Request.Form
%>
</PRE>

</BODY>
</HTML>
  


In1001 -> 123
In1002 -> 表示

In1001=123&In1002=%95%5C%8E%A6





  入力に Scripting.Dictionary を利用する

  
不可	Request.QueryString("In1001") = "データ"
不可	Request.Form("In1001") = "データ"
  

QueryString や Form にはデータを代入できないので、ディクショナリオブジェクトを使用します

  
<%
Set MyData = Server.CreateObject("Scripting.Dictionary")
if Request.QueryString.Count <> 0 then
	For Each strKey in Request.QueryString
		MyData( strKey ) = Request.QueryString( strKey )
	Next
end if
if Request.Form.Count <> 0 then
	For Each strKey in Request.Form
		MyData( strKey ) = Request.Form( strKey )
	Next
end if
%>

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>
<FORM method="POST">
	<INPUT
		type=text
		name=In1001 
		value="<%= MyData("In1001") %>"
	>
	<INPUT
		type=text
		name=In1002 
		value="<%= MyData("In1002") %>"
	>
	<INPUT type=submit value="送信">
</FORM>

<PRE>
<%
	For Each strKey in MyData
		Response.Write strKey & " -> "
		Response.Write MyData( strKey ) & vbCrLf
	Next
%>
</PRE>

</BODY>
</HTML>
  



  同名フィールドへのアクセス

同名フィールドは、画面上のフィールドの意味が同じである一覧形式
の場合、サーバー側で容易にループ処理で対応する事ができます

多少やっかいですが、以下のようになります。

  
<%
	aData = Split( Request.QueryString( "In1001" ), ", " )
	' この条件が成立するのは初期画面です
	if Ubound( aData ) < 2 then
		Redim aData(2)
	end if
%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=Shift_JIS">
</HEAD>
<BODY>
<FORM method="GET">
	<INPUT
		type=text
		name=In1001 
		value="<%= aData(0) %>" 
	>
	<INPUT
		type=text
		name=In1001 
		value="<%= aData(1) %>" 
	>
	<INPUT
		type=text
		name=In1001 
		value="<%= aData(2) %>" 
	>
	<INPUT type=submit value="送信">
</FORM>

<PRE>
<%
	For i = 1 to Request.QueryString("In1001").Count
		Response.Write Request.QueryString("In1001")(i) & vbCrLf
	Next

	Response.Write vbCrLf
	Response.Write Request.QueryString
%>
</PRE>

</BODY>
</HTML>
  

● インデックスが 1 から始まる事に注意して下さい

1
表示
3

In1001=1&In1001=%95%5C%8E%A6&In1001=3



  ファイルをインクルードする

書き方1
  
<!-- #include virtual ="/myapp/global.inc" -->
  
必ず仮想ディレクトリから記述する必要があるので、環境が変わった場合ソースコード
を変更する必要が出てきます

しかし、共通ファイルを IIS 全体で参照する場合は、標準化の手法として逆に便利です

書き方2
  
<!-- #include file = "../common.inc" -->
<!-- #include file = "..\dbSS.inc" -->
<!-- #include file = "model.inc" -->
  
現在の位置からの相対パスで記述するので、環境が変わった場合でも特に問題は出ません

但し、親ディレクトリを示す .. は、[親のパスを有効にする] オプションをオンにしている場合のみ有効です

これのメタベースプロパティは AspEnableParentPaths です




  Global.asa を配置する

1) ファイルの名前は必ず Global.asa とします。
2) アプリケーションのルートディレクトリに格納する必要があります。
3) 1つのアプリケーションは、1つの Global.asa ファイルしか持つことができません。
Global.asa ファイルには、以下のもが指定できます
  
● アプリケーションイベント 
● セッションイベント 
● <OBJECT> 宣言 
● TypeLibrary 宣言 
● #include ディレクティブ
  

Global.asa サンプル
  
<!--METADATA TYPE="TypeLib" UUID="{420B2830-E718-11CF-893D-00A0C9054228}" -->
<!-- #include virtual ="/include/global.inc" -->
<OBJECT 
	runat=Server
	scope=Session
	id=Fs
	progid="Scripting.FileSystemObject"
></OBJECT>
<SCRIPT language=VBScript runat=Server> 

' **********************************************************
' アプリケーション開始
' **********************************************************
Sub Application_OnStart

	Application("SERVER") = "sv\msde2000"
	Application("DB") = "lightbox"
	Application("USER") = "sa"
	Application("PASS") = "password"

	WriteLog "アプリケーションを開始しました"

End Sub

' **********************************************************
' アプリケーション終了
' **********************************************************
Sub Application_OnEnd


End Sub

' **********************************************************
' セッション開始
' **********************************************************
Sub Session_OnStart

	WriteLog "セッションを開始しました"
	WriteLog "id = " & Session.SessionID

End Sub

' **********************************************************
' セッション終了
' **********************************************************
Sub Session_OnEnd

	WriteLog "セッションを終了しました"

End Sub

</SCRIPT>
  

一つ目の記述は TypeLibrary 宣言です。asp ページに個別に指定できますが、主に Global.asa に記述
される事が多くなります。ここで宣言されると、その定義された COM コンポーネント内で定義されている定数
が、全ての asp ページで使用可能になります。( サンプルはファイルシステムオブジェクトです )

( ※ TypeLibrary の定数は、Global.asa 内でも使用可能です )

  
二つ目は Global.asa 用の関数を定義して読み込む為に使用します
( 通常の #include ディレクティブです )

関数定義は、<SCRIPT> タグを使用して以下のように記述します
  

  
<SCRIPT language=VBScript runat=Server>

Dim LogFile

' **********************************************************
' セッションログファイル書き込み
' **********************************************************
Function WriteLog( strValue )

	if IsEmpty( LogFile ) then
		Set LogFile = Fs.OpenTextFile( _
			"C:\temp\" & Session.SessionID & ".log" _
			, ForAppending _
			, True )
	end if
	LogFile.WriteLine Now & " : " & strValue

End Function

</SCRIPT>
  

  
三つ目は<OBJECT> 宣言 で、サンプルのスコープはセッションであり、
各セッションで定義済みのオブジェクトとして使用可能となります
  

残りの記述はイベントの記述です。
( Application_OnStart では、アプリケーションで共通の変数を設定したりします )

※ アプリケーション開始イベントのセッションは、最初に起動されたセッションが使用されます











  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ