GetRemoteFileSize()

'================
'获取远程文件大小
'================
Function GetRemoteFileSize(sRemoteFileName)
	Set Retrieval = Server.CreateObject("MSXML2.XMLHTTP")
	With Retrieval
		.Open "Get", sRemoteFileName, False
		.SetRequestHeader "Range","bytes=-1"
		.Send
		GetRemoteHeader = .GetResponseHeader("Content-Range")
	End With
	Set Retrieval = Nothing
 
	RemoteFileSize = Split(GetRemoteHeader & "/0", "/")
	if CLng(RemoteFileSize(1)) > 0 then
		GetRemoteFileSize = ShowSize(CLng(RemoteFileSize(1)))
	else
		GetRemoteFileSize = "无法获取指定文件的大小"
	End if
End Function

参数:

sRemoteFileName

待检测的远程文件

 

示例:

Response.Write(GetRemoteFileSize("http://www.baidu.com/img/baidu_logo.gif"))

注释:

通过此方法可以不用下载文件就可以先获取远程文件的大小。

SaveRemoteFile()

'================
'保存远程文件至本地
'================
Function SaveRemoteFile(sLocalFileName, sRemoteFileName)
	Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
	With Retrieval
		.Open "Get", sRemoteFileName, False
		.Send
		GetRemoteData = .ResponseBody
	End With
	Set Retrieval = Nothing
 
	Set oObj = Server.CreateObject("ADODB.Stream")
	With oObj
		.Type = 1
		.Open
		.Write GetRemoteData
		.SaveToFile Server.MapPath(sLocalFileName), 2
		.Cancel()
		.Close()
	End With
	Set oObj = Nothing
End Function

参数:

sLocalFileName

本机文件名

sRemoteFileName

远程文件名

 

示例:

Call SaveRemoteFile("../baidu_logo.gif", "http://www.baidu.com/img/baidu_logo.gif")

注释:

通过此方法可以将远程文件下载至本机。

CheckDataFrom()

'===============
'检查提交数据来源
'===============
Function CheckDataFrom()
	CheckDataFrom = True
	server_v1 = Cstr(Request.ServerVariables("HTTP_REFERER"))
	server_v2 = Cstr(Request.ServerVariables("SERVER_NAME"))
	if Mid(server_v1, 8, len(server_v2)) <> server_v2 then
		CheckDataFrom = False
	End if
End Function

参数:

无参数

 

注释:

调用此方法将检查数据是否从站内被提交,如果是站内提交返回真(True),否则返回假(False)。

IsBlank()

'=============
'判断是否为空值
'=============
Function IsBlank(byref TempVar)
	IsBlank = False
	Select Case VarType(TempVar)
		Case 0, 1 '--- Empty & Null
			IsBlank = True
		Case 8 '--- String
			If Len(TempVar) = 0 Then
				IsBlank = True
			End If
		Case 9 '--- Object
			tmpType = TypeName(TempVar)
			If (tmpType = "Nothing") Or (tmpType = "Empty") Then
				IsBlank = True
			End If
		Case 8192, 8204, 8209 '--- Array
			If UBound(TempVar) = -1 Then
				IsBlank = True
			End If
	End Select
End Function

参数:

TempVar

待检测的变量(字符串、对象或数组)

 

注释:

调用此方法将检测参数中的变量,并返回一个布尔值:
- 如果TempVar为Null值或空值(Empty),返回真(True);
- 如果TempVar为字符串但是没有包含任何内容,返回真(True);
- 如果TempVar为对象且此对象目前类型为Nothing或Empty,返回真(True);
- 如果TempVar为数组且数组内没有包含任何元素,返回真(True);

- 其它情况将返回假(False)。

IIf()

'=============
'判断三元表达式
'=============
Function IIf(bExp1, sVal1, sVal2)
	If (bExp1) Then
		IIf = sVal1
	Else
		IIf = sVal2
	End If
End Function

参数:

bExp1

判断条件

sVal1

条件成立时的返回值

sVal2

条件不成立时的返回值

 

示例:

Response.Write(IIf(1 + 1 = 2, "正确", "错误"))

若1 + 1 = 2成立,则输出“正确”,否则输出“错误”

注释:

调用此方法时,将首先判断第1个参数中的表达式是否为真,如果为真则返回第2个参数的表达式中的值,如果为假则返回第3个参数的表达式中的值。是If…Then…Else…End If的一种简写版本。 类似于JavaScript中的 a ? b : c 表达式。

DeleteRecord()

'=============
'删除指定的纪录
'=============
Function DeleteRecord(ByVal TableName, ByVal Condition)
	On Error Resume Next
	Call DoExecute(wDeleteRecord(TableName, Condition))
	If Err.number <> 0 Then : Response.Write("从数据库删除数据出错!" &  Err.Description) : Response.End()
End Function

语法:

Call DeleteRecord(TableName,IDFieldName:IDValues|Condition)

参数:

TableName

数据表名称

IDFieldName

数据表的条件字段的名称

IDValues

由逗号隔开的多个值,IDValues的值在此列表中的项目将被删除

Condition

删除条件

 

示例:

Call DeleteRecord("cwb_User", "user_Activation=1 and user_Name<>'aaa'")
 
Call DeleteRecord("cwb_User", "id:1, 2, 3")

注释:

调用此方法可以按指定的条件删除一条或多条记录。指定删除的条件有两种,一种是按(字段名:值序列)的方式,一种是条件方式。如果要查看该方法生成的SQL语句,可用wDeleteRecord()生成。

wDeleteRecord()

'==============================
'生成删除符合条件的纪录的SQL语句
'==============================
Function wDeleteRecord(ByVal TableName, ByVal Condition)
	Dim IDFieldName, IDValues, Sql, p : IDFieldName = "" : IDValues = ""
	If Not isArray(Condition) Then
		p = cwb_Param(Condition)
		If Not IsBlank(p(1)) Then
			IDFieldName = p(0)
			If Instr(IDFieldName," ")=0 Then
				IDValues = p(1)
			Else
				IDFieldName = ""
			End If
		End If
	End If
	Sql = "Delete From ["& TableName &"] Where " & IIF(IDFieldName="", Condition, "["& IDFieldName &"] In (" & IDValues & ")")
	wDeleteRecord = Sql
End Function

语法:

Response.Write(wDeleteRecord(TableName,IDFieldName:IDValues|Condition))

参数:

TableName

数据表名称

IDFieldName

数据表的条件字段的名称

IDValues

由逗号隔开的多个值,IDValues的值在此列表中的项目将被删除

Condition

删除条件

 

示例:

Response.Write(wDeleteRecord("cwb_User", "user_Activation=1 and user_Name<>'aaa'"))
 
Response.Write(wDeleteRecord("cwb_User", "id:1, 2, 3"))

注释:

调用此方法将返回一个由指定条件生成的SQL删除语句。如果调用DeleteRecord()失败时,可用此方法输出相关的SQL语句进行排错。

UpdateRecord()

'============
'修改某一纪录
'============
Function UpdateRecord(ByVal TableName, ByVal Condition, ByVal ValueList)
	On Error Resume Next
	Call DoExecute(wUpdateRecord(TableName, Condition, ValueList))
	If Err.number <> 0 Then : Response.Write("更新数据库记录出错!" &  Err.Description) : Response.End()
End Function

语法:

Call UpdateRecord(TableName, Condition, ValueList)

参数:

TableName

数据表名称

Condition

更新条件

ValueList

更新的字段及值,可以是数组

 

示例:

Call UpdateRecord("cwb_User", "id = 1", Array("user_Name='aaa'", "user_Activation=1"))
 
Call UpdateRecord("cwb_User", "id = 1", "user_Name='aaa', user_Activation=1")

注释:

调用此方法将按指定的条件更新一条或多条记录。要查询此方法生成的SQL语句,可用wUpdateRecord()

wUpdateRecord()

'==============================
'生成根据指定条件更新纪录的SQL语句
'==============================
Function wUpdateRecord(ByVal TableName, ByVal Condition, ByVal ValueList)
	Dim TmpSQL
	TmpSQL = "Update [" & TableName & "] Set "
	TmpSQL = TmpSQL & ValueToSql(ValueList, 1)
	TmpSQL = TmpSQL & " Where " & Condition
	wUpdateRecord = TmpSQL
End Function

语法:

Response.Write(wUpdateRecord(TableName, Condition, ValueList))

参数:

TableName

数据表名称

Condition

更新条件

ValueList

更新的字段及值,可以是数组

 

示例:

Response.Write(wUpdateRecord("cwb_User", "id = 1", Array("user_Name='aaa'", "user_Activation=1")))
 
Response.Write(wUpdateRecord("cwb_User", "id = 1", "user_Name='aaa', user_Activation=1")))

注释:

调用此方法将返回一个由指定条件生成的SQL更新语句。如果调用UpdateRecord()失败时,可用此方法输出相关的SQL语句进行排错。

AddRecord()

'==============
'添加一个新的纪录
'==============
Function AddRecord(ByVal TableName, ByVal ValueList)
	On Error Resume Next
	Call DoExecute(wAddRecord(TableName, ValueList))
	If Err.number <> 0 Then : Response.Write("向数据库添加记录出错!" &  Err.Description) : Response.End()
End Function

语法:

Call AddRecord(TableName, ValueList)

参数:

TableName

数据表名称

ValueList

要插入表的字段和值,只能是数组

 

示例:

Call AddRecord("cwb_User", Array("user_Name='aaa'", "user_Activation=1"))

 

注释:

调用此方法将往指定数据表中插入一条新的记录。如果要查看该方法生成的SQL语句,可用wAddRecord()方法。