📄 dataaccessfunction.asp
字号:
<%
'*************************************************************
'名称: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 + -