⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataaccessfunction.asp

📁 精品OA,已经本人测试成功,完全可用,使我花钱从别人那买的.商业源码仅供学习交流,请勿用于商业用途. 在建立数据库时
💻 ASP
📖 第 1 页 / 共 2 页
字号:
			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 + -