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

📄 dataaccessfunction.asp

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

<%
'*************************************************************
'名称:DataAccessFunction
'
'中文含义:公用数据访问函数
'
'描述:
'  该文件包含数据表访问(添加,修改,删除,获取列表,获取纪录详细资料)
'  的公用函数。
'*************************************************************
'
'函数定义列表:
'
'函数定义                                                       描述
'---------------------------------------------------------------------------------------
'Function AddRecord(TableName,FieldList,ValueList,IDFieldName) 添加纪录
'
'Function ModifyRecord(TableName,FieldList,ValueList,          修改纪录
'                      IDFieldName,IDFieldValue)
'
'Function DeleteRecord(TableName,IDFieldName,IDValues)         删除纪录(当前使用的版本)
'
'Function DeleteRecord2(TableName,IDFieldName,IDValues,        删除纪录(二)(该版本依赖"FIELD_INFO"表)
'                       ByRef ResultInfo)
'
'Function GetRecordList(TableName,SearchCondition,             获取纪录列表
'                       OrderField,OrderMode,ShowN)
'
'Function AdvancedSearch()                                     根据用户选择的条件查询纪录(该函数依赖advanced_search.asp)
'
'Function AdvancedSearch_FormFile()								根据用户选择的条件查询纪录(该函数依赖advanced_search.asp)
'																进行表单分离后调用此函数(主要是查询得到的记录进行修改后,返回查询结果界面)
'
'Function GetRecordDetail(TableName,IDFieldName,IDValue)       获取某纪录详细资料
'
'Function ErrDisplay(OperateType)                              显示用户的操作错误信息
'
'Function BatchUpdate(TableName, FieldName, FieldValue, IDFieldName, IDValues)      批量更新某个字段
'---------------------------------------------------------------------------------------

'*************************************************************
'功能:添加一个新的纪录
'参数:
'  TableName;String;表名称
'  FieldList;String;字段列表(逗号","分割,不含ID字段)
'  ValueList;String;字段值列表(逗号","分割)
'  IDFieldName;String;ID字段的名称
'返回值:Integer
'*************************************************************
Function AddRecord(TableName,FieldList,ValueList,IDFieldName)
	Dim rstAddRecord
	Dim strSelect
	Dim CurrentField
	Dim CurrentValue
	Dim OtherFieldList
	Dim OtherValueList
	
	On Error Resume Next
	
	Set rstAddRecord=Server.CreateObject("adodb.recordset")
	
	With rstAddRecord
		.ActiveConnection =conn
		.CursorType =3 'adOpenStatic
		.LockType =3 'adLockOptimistic
		.Source ="select * from " & TableName & " where " & IDFieldName & "=-1" '建立一个空纪录集
		.Open 
		.AddNew
		
		.Fields(IDFieldName).Value =AutoGetNo(TableName) '通过公用函数取得唯一ID
		
		OtherFieldList = FieldList
		OtherValueList = ValueList
		
		Do Until Instr(OtherFieldList,",") = 0
			CurrentField = Left(OtherFieldList,Instr(OtherFieldList,",")-1)
			OtherFieldList = mid(OtherFieldList,Instr(OtherFieldList,",")+1)
			
			CurrentValue = Left(OtherValueList,Instr(OtherValueList,",")-1)
			OtherValueList = mid(OtherValueList,Instr(OtherValueList,",")+1)
			
			Select Case .Fields(CurrentField).Type
				'日期时间
				Case 7,133,134,135 'adDate adDBDate adDBTime adDBTimeStamp 
					If IsDate(CurrentValue) = false Then
						Response.Write "无效的日期值!" & chr(10)
						Response.End
						Exit Function
					End If
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'字符
				Case 8,129,200,201 'adBSTR adChar adVarChar adLongVarChar 
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'数值
				Case Else
					If IsNumeric(CurrentValue) = false Then
						Response.Write "无效的数值!" & chr(10)
						Response.End 
						Exit Function
					End If
					.Fields(CurrentField).Value = CurrentValue
			End Select
			
		Loop
		
		If len(OtherFieldList) > 0 Then
			CurrentField = OtherFieldList
			CurrentValue = OtherValueList
			
			Select Case .Fields(CurrentField).Type
				'日期时间
				Case 7,133,134,135 'adDate adDBDate adDBTime adDBTimeStamp 
					If IsDate(CurrentValue) = false Then
						Response.Write "无效的日期值!" & chr(10)
						Response.End
						Exit Function
					End If
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'字符
				Case 8,129,200,201 'adBSTR adChar adVarChar adLongVarChar 
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'数值
				Case Else
					If IsNumeric(CurrentValue) = false Then
						Response.Write "无效的数值!" & chr(10)
						Response.End 
						Exit Function
					End If
					.Fields(CurrentField).Value = CurrentValue
			End Select
			
		End If
		
		.Update 
		If Err.number <> 0 Then
			AddRecord = -1
			Exit Function
		End If
		
	End With
	
End Function


'*************************************************************
'功能:修改某一纪录
'参数:
'  TableName;String;表名称
'  FieldList;String;字段列表(逗号","分割,不含ID字段)
'  ValueList;String;字段值列表(逗号","分割)
'  IDFieldName;String;ID字段的名称
'  IDFieldValue;String;ID字段的值
'返回值:Integer
'*************************************************************
Function ModifyRecord(TableName,FieldList,ValueList,IDFieldName,IDFieldValue)
	Dim rstModifyRecord
	Dim strSelect
	Dim CurrentField
	Dim CurrentValue
	Dim OtherFieldList
	Dim OtherValueList
	
	On Error Resume Next
	
	Set rstModifyRecord=Server.CreateObject("adodb.recordset")
	
	With rstModifyRecord
		.ActiveConnection =conn
		.CursorType =3 'adOpenStatic
		.LockType =3 'adLockOptimistic
		.Source ="select * from " & TableName & " where " & IDFieldName & "=" & IDFieldValue '定位指定的纪录
		.Open 

		OtherFieldList = FieldList
		OtherValueList = ValueList
		
		Do Until Instr(OtherFieldList,",") = 0
			CurrentField = Left(OtherFieldList,Instr(OtherFieldList,",")-1)
			OtherFieldList = mid(OtherFieldList,Instr(OtherFieldList,",")+1)
			
			CurrentValue = Left(OtherValueList,Instr(OtherValueList,",")-1)
			OtherValueList = mid(OtherValueList,Instr(OtherValueList,",")+1)
			
			Select Case .Fields(CurrentField).Type
				'日期时间
				Case 7,133,134,135 'adDate adDBDate adDBTime adDBTimeStamp 
					If IsDate(CurrentValue) = false Then
						Response.Write "无效的日期值!" & chr(10)
						Response.End
						Exit Function
					End If
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'字符
				Case 8,129,200,201 'adBSTR adChar adVarChar adLongVarChar 
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'数值
				Case Else
					If IsNumeric(CurrentValue) = false Then
						Response.Write "无效的数值!" & chr(10)
						Response.End 
						Exit Function
					End If
					.Fields(CurrentField).Value = CurrentValue
			End Select
			
		Loop

		If len(OtherFieldList) > 0 Then
			CurrentField = OtherFieldList
			CurrentValue = OtherValueList
			
			Select Case .Fields(CurrentField).Type
				'日期时间
				Case 7,133,134,135 'adDate adDBDate adDBTime adDBTimeStamp 
					If IsDate(CurrentValue) = false Then
						Response.Write "无效的日期值!" & chr(10)
						Response.End
						Exit Function
					End If
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'字符
				Case 8,129,200,201 'adBSTR adChar adVarChar adLongVarChar 
					'.Fields(CurrentField).Value = "'" & CurrentValue & "'"
					.Fields(CurrentField).Value = CurrentValue
				'数值
				Case Else
					If IsNumeric(CurrentValue) = false Then
						Response.Write "无效的数值!" & chr(10)
						Response.End 
						Exit Function
					End If
					.Fields(CurrentField).Value = CurrentValue
			End Select
			
		End If
		
		.Update 
		If Err.number <> 0 Then
			ModifyRecord = -1
			Exit Function
		End If
		
	End With
	
End Function


'*************************************************************
'功能:删除指定的纪录(当前使用的版本)
'参数:
'  TableName;String;表名称
'  IDFieldName;String;ID字段的名称
'  IDValues;String;ID字段的值串(该值串由逗号","分割)
'返回值:Integer
'*************************************************************
Function DeleteRecord(TableName,IDFieldName,IDValues)
	Dim cmdDeleteRecord
	Dim strCommand
	Dim intIDValue
	Dim intStart
	Dim intPosition
	
	On Error Resume Next
	
	intStart = 1 '初始化搜索开始位置
	intPosition = 1 '初始化 ID的析取位置
	
	Set cmdDeleteRecord=Server.CreateObject("adodb.command")
	
	If IDValues <> "" Then
		With cmdDeleteRecord
			.Activeconnection=conn
			strCommand = ""
			
			Do While intStart <= len(IDValues)
				If mid(IDValues,intStart,1) = "," Then '找到字符","
					intIDValue = clng(mid(IDValues,intPosition,intStart-intPosition)) '析取出 ID Value
					strCommand = strCommand+"Delete " & TableName & " where " & IDFieldName & "=" & intIDValue & ";"
					intPosition=intStart + 1 '将Group ID的析取位置设为逗号(",")的下一位
				End If
				intStart = intStart + 1 '后移搜索开始位置

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -