'================
'获取远程文件大小
'================
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")) |
注释:
通过此方法可以不用下载文件就可以先获取远程文件的大小。
'===============
'检查提交数据来源
'===============
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)。
'=============
'判断是否为空值
'=============
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)。
'=============
'判断三元表达式
'=============
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 表达式。
'=============
'删除指定的纪录
'=============
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()生成。
'==============================
'生成删除符合条件的纪录的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语句进行排错。
'============
'修改某一纪录
'============
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()。
'==============================
'生成根据指定条件更新纪录的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语句进行排错。
'==============
'添加一个新的纪录
'==============
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()方法。