📄 dataaccessfunction.asp
字号:
Loop
Err.Clear
'Response.Write strCommand
.CommandText = strCommand
.Execute
If Err.number <> 0 Then
DeleteRecord = -1
Exit Function
End If
End With
End If
End Function
'*************************************************************
'功能:删除指定的纪录(二)(该版本实现依赖"FIELD_INFO"表)
'参数:
' TableName;String;表名称
' IDFieldName;String;ID字段的名称
' IDValues;String;ID字段的值串(该值串由逗号","分割)
' ResultInfo;ByRef String;回传操作结果描述
'返回值:Integer
'*************************************************************
Function DeleteRecord2(TableName,IDFieldName,IDValues,ByRef ResultInfo)
Dim cmdDeleteRecord
Dim rstFieldInfo
Dim rstSubTableData
Dim strCommand
Dim strSelect
Dim intIDValue
Dim intStart
Dim intPosition
Dim AbleDelete
On Error Resume Next
intStart = 1 '初始化搜索开始位置
intPosition = 1 '初始化 ID的析取位置
AbleDelete = 1
Set cmdDeleteRecord = Server.CreateObject("adodb.command")
Set rstFieldInfo = Server.CreateObject("adodb.recordset")
Set rstSubTableData = Server.CreateObject("adodb.recordset")
If IDValues <> "" Then
With cmdDeleteRecord
.Activeconnection=conn
strCommand = ""
Do While intStart <= len(IDValues)
If mid(IDValues,intStart,1) = "," Then '找到字符","
intIDValue = cint(mid(IDValues,intPosition,intStart-intPosition)) '析取出 ID Value
strCommand = "Delete " & TableName & " where " & IDFieldName & "=" & intIDValue
intPosition=intStart + 1 '将Group ID的析取位置设为逗号(",")的下一位
End If
intStart = intStart + 1 '后移搜索开始位置
rstFieldInfo.ActiveConnection = conn
rstFieldInfo.CursorType = 3
rstFieldInfo.LockType = 3
rstFieldInfo.Source = "select * from FIELD_INFO where TABLENAME='" & TableName & "'"
rstFieldInfo.Open
Do While not rstFieldInfo.EOF
If rstFieldInfo.Fields("ISFK") = true Then
strSelect = "select count(*) RstCount from " & rstFieldInfo.Fields("RELATINGTABLE") & " where " & rstFieldInfo.Fields("FIELDNAME") & "=" & intIDValue
rstSubTableData.Open strSelect,conn,3,3
If rstSubTableData.Fields("RstCount") > 0 Then
AbleDelete = 0
ResultInfo = ResultInfo + "Error!"
End If
End If
Loop
If AbleDelete = 1 Then
.CommandText = strCommand
.Execute
If Err.number <> 0 Then
DeleteRecord = -1
Exit Function
End If
End If
Loop
End With
End If
End Function
'*************************************************************
'功能:取得符合条件的纪录列表
'参数:
' TableName;String;表名称
' SearchCondition;String;搜索条件
' OrderField;String;排序字段
' OrderMode;String;排序方式,1为升序,0为降序
' ShowN;Integer;仅显示前N条纪录
'返回值:Recordset
'*************************************************************
Function GetRecordList(TableName,SearchCondition,OrderField,OrderMode,ShowN)
Dim rstRecordList
Dim strSelect
On Error Resume Next
Set rstRecordList=Server.CreateObject("adodb.recordset")
With rstRecordList
.ActiveConnection =conn
If ShowN > 0 Then
strSelect="select top " & ShowN & " * from " & TableName
Else
strSelect="select * from " & TableName
End If
If SearchCondition <> "" Then
strSelect = strSelect + " where " & SearchCondition
End If
If OrderField <> "" Then
strSelect = strSelect + " order by " & OrderField
Select Case OrderMode
Case 1 '升序
strSelect = strSelect & " asc"
Case 0 '降序
strSelect = strSelect & " desc"
End Select
End If
.CursorType =3 'adOpenStatic
.LockType =3 'adLockOptimistic
'Response.Write strSelect
.Source =strSelect
.Open
If Err.number <> 0 Then
Response.Write "无效的查询条件!" & chr(10)
Response.End
Exit Function
End If
End With
Set GetRecordList=rstRecordList
End Function
'*************************************************************
'功能:根据用户选择的条件查询纪录(该函数依赖advanced_search.asp)
'参数:
' 无
'返回值:Recordset
'*************************************************************
Function AdvancedSearch()
If Request.Form("sltOrderField")="NULL" Then
Set AdvancedSearch = GetRecordList(Request.Form("sltTable"),Request.Form("hdnCondition"),"",0,Request.Form("txtShowN"))
Else
Set AdvancedSearch = GetRecordList(Request.Form("sltTable"),Request.Form("hdnCondition"),Request.Form("sltOrderField"),Request.Form("rdoOrderMode"),Request.Form("txtShowN"))
End If
End Function
'*************************************************************
'功能:根据用户选择的条件查询纪录(该函数依赖advanced_search.asp)
' 进行表单分离后调用此函数(主要是查询得到的记录进行修改后,返回查询结果界面)
'参数:
' 无
'返回值:Recordset
'*************************************************************
Function AdvancedSearch_FormFile()
If objUpload.objectvalue("sltOrderField")="NULL" Then
Set AdvancedSearch_FormFile = GetRecordList(objUpload.objectvalue("sltTable"),objUpload.objectvalue("hdnCondition"),"",0,objUpload.objectvalue("txtShowN"))
Else
Set AdvancedSearch_FormFile = GetRecordList(objUpload.objectvalue("sltTable"),objUpload.objectvalue("hdnCondition"),objUpload.objectvalue("sltOrderField"),objUpload.objectvalue("rdoOrderMode"),objUpload.objectvalue("txtShowN"))
End If
End Function
'*************************************************************
'功能:取得某一指定纪录的详细资料
'参数:
' TableName;String;表名称
' IDFieldName;String;ID字段的名称
' IDValue;String;ID字段的值
'返回值:Recordset
'*************************************************************
Function GetRecordDetail(TableName,IDFieldName,IDValue)
Dim rstRecordDetail
Dim strSelect
On Error Resume Next
Set rstRecordDetail=Server.CreateObject("adodb.recordset")
With rstRecordDetail
.ActiveConnection =conn
strSelect="select * from " & TableName & " where " & IDFieldName & "=" & IDValue
.CursorType =3 'adOpenStatic
.LockType =3 'adLockOptimistic
'Response.Write strSelect
.Source =strSelect
.Open
If Err.number <> 0 Then
Response.Write "无效的查询条件!" & chr(10)
Response.End
Exit Function
End If
End With
Set GetRecordDetail=rstRecordDetail
End Function
'*************************************************************
'功能:显示用户的操作错误信息
'参数:
' OperateType;String;操作类型
'返回值:无
'*************************************************************
Function ErrDisplay(OperateType)
Select Case OperateType
Case "Add"
Response.Write "添加数据时发生错误!<BR>" & chr(10)
Response.Write "<P>" & chr(10)
Response.Write "可能原因:<P>" & chr(10)
Response.Write "您输入了非法的数据,请返回重试<P>" & chr(10)
Case "Update"
Response.Write "更新数据时发生错误!<BR>" & chr(10)
Response.Write "<P>" & chr(10)
Response.Write "可能原因:<P>" & chr(10)
Response.Write "您输入了非法的数据,请返回重试<P>" & chr(10)
Case "Delete"
Response.Write "删除数据时发生错误!<BR>" & chr(10)
Response.Write "<P>" & chr(10)
Response.Write "可能原因:<P>" & chr(10)
Response.Write "您要删除的纪录与其它表中的数据相关联,此种情况下你不能删除此纪录" & chr(10)
Case Else
'Nothing
End Select
Response.Write "<P>" & chr(10)
Response.Write "-----------------------------------------------------------<P>" & chr(10)
Response.Write "以下为技术信息,如有必要请与系统管理员联系<P>" & chr(10)
Response.Write "错误号:" & Err.Number & "<BR>" & chr(10)
Response.Write "错误描述:" & Err.Description & "<BR>" & chr(10)
Response.Write "错误源:" & Err.Source & "<BR>" & chr(10)
Err.Clear
Response.End
End Function
'*************************************************************
'功能:批量更新指定的多个纪录的其中一个字段
'参数:
' TableName;String;表名称
' FieldName;String;被更新的字段名称
' FieldValue;String;被更新的字段值
' IDFieldName;String;ID记录的名称
' IDValues;String;ID字段的值串(该值串由逗号","分割)
'*************************************************************
Function BatchUpdate(TableName, FieldName, FieldValue, IDFieldName, IDValues)
ArrayIDs = Split(IDValues, ",", -1)
intNumIDs = UBound(ArrayIDs) - LBound(ArrayIDs)
If IDValues <> "" Then
For i = 0 To intNumIDs - 1
sql = "Update " & TableName & " set " & FieldName & "=" & FieldValue & " Where " & IDFieldName & "=" & CLng(ArrayIDs(i))
conn.Execute sql
Next
End If
End Function
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -