4自从到了csdn以来,得到很多热心帮助.前些时候用asp开发系统,发现很多东东不好用,于是自己写了一些函数.做为回报现在贴出来,供大家分享.

'=========================================================================================================================================================
Public Function InputForm(SqlStr,ConnStr,YesAdd,beginField,EndField,IdField,CorIDStr,CorSize)

'InputForm功能:根据connstr和sqlstr生成数据输入表单,可用于添加新记录,或修改当前记录
'如果用到下拉列表可以修改这个函数的原程序,下面有一个下拉列表函数

'调用实例 call inputForm("SELECT * FROM mater_bcode","Driver={SQL Server};uid=sa;pwd=passed;database=cthpdb;server=scb-web",1,"NUll",5)


'参数说明
'sqlstr: 将要查询的sql语句
'connstr: 数据库连接字符串
'YesAdd: 确定生成的输入表单是用于添加新记录还是修改现有记录
' YesAdd=1 时是添加新记录,则输入框为空
' YesAdd=0 时是修改现有记录,则用被修改前的记录内容填充输入框
'beginField:在记录集中开始显示的字段位置
'EndField: 在记录集中结束显示的字段位置
'IDField: 当inputform被用作修改的输入界面时,往往需要一个id字段来确定是哪条记录将被修改
' 如果IDField<0 or IDField> rs.fields.count或不是数字,则视为不确定。
'CorIDStr: 控件的ID字符串'CorIDStr="Null"时 CorIDStr="fieldValue"
'注意:为了变于在客户端进行输入值的合法性检验,将每个文本框的id以"CorIDStr + i 的形式确定,例如"fieldValue0"
'CorSize: 输入表格中,文本框的长度,之所以用这个参数据是为方便网页的布局,CorSize不是数值时,CorSize默认为40

On error resume next
Dim rs,conn
set conn=server.CreateObject ("Adodb.Connection")
conn.open ConnStr
set rs=server.CreateObject ("Adodb.recordset")
rs.open SqlStr,conn,1,3

if err.number<>0 then
Response.Write "出现错误:" & err.Description
exit function
end if


'--------参数处理------------------------------------------
'-------处理YesAdd,如果YesAdd不是数字则默认为添加新记录
if Ucase(Trim(YesAdd))="YES" then yesadd=1 '添加新记录
if Ucase(Trim(YesAdd))="NO" then yesadd=0 '修改记录
if not IsNumeric(yesadd) then yesadd=1

if Ucase(Trim(CorIDStr))="NULL" then CorIDStr="fieldValue"'控件的ID字符串,
'这样可以解决的在一个页面同调用两次InputForm函数时控件ID相同的问题
if not ISnumeric(CorSize) then CorSize="40"' 控件宽度

'----------确定如何显示字段-----------------
if not Isnumeric(beginField) or beginField<0 then
beginField=0'确保开始显示的位置在合理范围内
else
if beginField=>rs.Fields.Count -1 then beginField=rs.Fields.Count -1'保证到少显示一个字段
end if

if Ucase(Trim(EndField))="MAX" then EndField=rs.Fields.Count-1
if not Isnumeric(EndField) or EndField<=beginField then 'not Isnumeric(EndField)用于防止输入的是无效字符串
EndField=rs.Fields.Count-1
end if

if rs.RecordCount<0 then
Response.Write "取数据时出错!"
exit function
else
'----写入隐藏的id字段
if yesadd=0 and IDField>=0 and (IDField - rs.fields.count<=0) and rs.recordcount>0 then Response.Write "<input type='hidden' name='fieldValue' id='IDField' value='" & rs.Fields(IdField).value & "'>"'写入隐藏的id字段
Response.Write "<table width='75%' border='0' bgcolor='#999999' cellspacing='1'>"
'----生成表格
dim i
for i=beginField to EndField
Response.Write "<tr>"
Response.Write "<td bgcolor='#CCCCCC'><b><font color='#666666' size='-1'>" & rs.Fields(i).Name & "</font></b></td>"
if yesadd=1 or rs.recordcount=0 then'如果不是修改现有记录则输入框为空
if rs.Fields(i).type=201 or rs.Fields(i).type=202 or rs.Fields(i).type=201 then '适用于sql_server
'if rs.Fields(i).type=201 or rs.Fields(i).type=203 then'适用于access
Response.Write "<td bgcolor='#FFFFFF'><textarea type='text' name='fieldValue' id='" & CorIDStr & i & "' style=' border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 1px' rows='5' cols='" & CorSize & "'></textarea ></td>"
else
Response.Write "<td bgcolor='#FFFFFF'><input type='text' name='fieldValue' id='" & CorIDStr & i & "' style=' border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px' size='" & CorSize & "'></td>"
end if
else'如果是修改则将原来的值写入输入框
if rs.Fields(i).type=201 or rs.Fields(i).type=202 or rs.Fields(i).type=201 then' 适用于sql_server
'if rs.Fields(i).type=201 or rs.Fields(i).type=203 then'适用于access
Response.Write "<td bgcolor='#FFFFFF'><textarea type='text' name='fieldValue' id='" & CorIDStr & i & "' style=' border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 1px' rows='5' cols='" & CorSize & "'>" & rs(i).value & "</textarea ></td>"
else
Response.Write "<td bgcolor='#FFFFFF'><input type='text' name='fieldValue' id='" & CorIDStr & i & "' style=' border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px' size='" & CorSize & "' value='" & rs(i).value & "'></td>"
end if
end if
Response.Write "</tr>"
next
Response.Write "</table>"
end if
rs.Close
conn.Close
set rs=nothing
set conn=nothing
Err.Clear
End Function
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
moqijun 2002-09-06
  • 打赏
  • 举报
回复
收到,多谢
zqrhero 2002-09-06
  • 打赏
  • 举报
回复
非常支持
fbj007 2002-09-06
  • 打赏
  • 举报
回复
收藏之~~~~~~~~
qimangxing 2002-09-06
  • 打赏
  • 举报
回复
收到,多谢,
whyyy78 2002-09-06
  • 打赏
  • 举报
回复
thanks.
lishizhen2002 2002-09-06
  • 打赏
  • 举报
回复
谢谢。
cshadow 2002-09-06
  • 打赏
  • 举报
回复
谢谢~

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧