COM+系列——设计可伸缩的应用 版权声明:CSDN是本Blog托管服务提供商。如本文牵涉版权问题,CSDN不承担相关责任,请版权拥有者直接与文章作者联系解决。龙卷风关键字:XML,HTTP,COM+1. 伸缩性伸缩性是衡量应用在同一时间内能够处理多少用户的尺度。也是反映应用程序能否满足重要应用的一个指标。在你的应用程序中到底可以容纳多少用户,每个用户每隔多久向服务器提交一次请求,你的用户所处的位置,如局域网还是interner中。这些问题在设计应用的时候,你需要考虑。在设计分布式应用之前,一个问题就是使用的协议。如DCOM、HTTP和MSMQ。DCOM的缺点是显著的。如不能穿越防火墙。不能利用基于请求的负载平衡技术,因而限制了并发用户的数量,还要对每台客户机进行大量的配置等等。HTTP实现简单及各个平台的支持越来越受到欢迎。事实上,构建COM+体系结构是建立在下面这个基础之上的:一个应用必须使用HTTP来实现客户到服务的通信才能获得最大的伸缩性。 2. 实际的问题经常我们会遇到这样的问题,如一个总店与多个分店的情况,要求每天分店将业务数据上传到总店。彼此相隔较远。总店的环境:有自己的固定IP 的WEB服务器(或者没有固定IP)的,或者没有自己的服务器,仅仅有一个虚拟空间的网站。分店的环境:可以通过拨号方式连接。3.达到的要求 总店每天可以通过网站及时的看到分店的情况。并且数据要做到本地保留。4.常见的解决办法最多的一种方式就是分店将数据导出成txt文件,拨号连接成功后,将txt传送到某个ftp目录或者发送到指定的Email里。总店手工接收或者程序接收后,再做处理。 还有一种就是分店的数据库直接连接总店的数据库,做保存更新操作。5.使用HTTP和XML来实现 就是客户端应用程序通过一个XML文档传递参数,向Web服务器提交一个HTTP请求。服务端使用一个Asp页面得到该参数,执行其方法,然后使用XMl文档向客户端返回数据。先看看服务端ASP的代码:1).从服务端返回数据getinfo.asp(以流的方式返回记录集)<%@ Language=VBScript %><%set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb") dim rs Set rs = Server.CreateObject("ADODB.Recordset") rs.open "select * from test",conn rs.save response,1 rs.close%>这里说明一下:只要客户端在请求中发送了符合格式的XML文档,ASP中的Request和Response对象就能工作。(这项技术只能在IIS5和Windows 2000中以及各自的高版本中使用。)在客户端使用vb'引用microsoft activex data object 2.x library‘引用microsoft XML,version2.0Option ExplicitPrivate rs As ADODB.Recordset'从远程数据库得到内容Private Sub Command5_Click()‘提交一个HTTP请求。Set rs = New ADODB.Recordsetrs.Open "http://localhost/webxml\getinfo.asp"Set DataGrid1.DataSource = rsEnd Sub 2)单个记录提交到远程asp文件Getsingleinfo.asp(数据增加并返回结果)<%@ Language=VBScript %><%'这里需要修改,返回客户的xml响应文档Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb")
dim xmldom ' set xmldom = Server.CreateObject("Microsoft.XMLDOM") set xmldom = Server.CreateObject("MSXML.DOMDocument") xmldom.load Request dim sid,name,price,catagory,pdate sid = xmldom.selectSingleNode("//项目编号").text name = xmldom.selectSingleNode("//项目名称").text price = xmldom.selectSingleNode("//价格").text catagory = xmldom.selectSingleNode("//种类").text pdate =xmldom.selectSingleNode("//发生日期").text dim strsql,retval on error resume next strsql="insert into test(sid,name,price,catagory,pdate) values('"& sid &"','"& name &"','"& price &"','"& catagory &"','"& pdate &"')" 'response.write strsql conn.execute strsql if err.number=0 then retval="数据成功提交" else retval="数据提交失败,请检查你的数据" end if set xmldom = Nothing set conn=nothing'下面的代码是将结果以xml形式返回'需要加上<?xml version="1.0" encoding="gb2312"?>这句,否则无法返回中文%><?xml version="1.0" encoding="gb2312"?><Response> <retval><%=retval%></retval></Response> 相应的客户端vb代码:Private Sub Command3_Click() Dim httpRequest As MSXML.XMLHTTPRequest Set httpRequest = New MSXML.XMLHTTPRequest Dim StrXml As String '构造出要上传的XML串,这里节点使用中文 StrXml = "<Request>" & _ "<项目编号>" & Txtbh.Text & "</项目编号>" & _ "<项目名称>" & Txtname.Text & "</项目名称>" & _ "<价格>" & Txtprice.Text & "</价格>" & _ "<种类>" & TxtCategory.Text & "</种类>" & _ "<发生日期>" & Txtpdate.Text & "</发生日期>" & _ "</Request>" httpRequest.Open "POST", "http://localhost/webxml/putsingleinfo.asp", False httpRequest.send StrXml '如果错误 If httpRequest.Status <> 200 Then MsgBox httpRequest.statusText, , httpRequest.Status Exit Sub End If '以下是判断数据是否正确提交 Dim strretval As String Dim ResponseXml As DOMDocument Set ResponseXml = New DOMDocument Set ResponseXml = httpRequest.ResponseXml strretval = ResponseXml.selectSingleNode("//retval").Text MsgBox strretvalEnd Sub 3)多条数据上传putinfo.asp<%@ Language=VBScript %><!--#include file="adovbs.inc"--><%Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb") dim rs on error resume next Set rs = Server.CreateObject("ADODB.Recordset") dim xmldom ' set xmldom = Server.CreateObject("Microsoft.XMLDOM") set xmldom = Server.CreateObject("MSXML.DOMDocument") xmldom.load Request dim sid,name,price,catagory,pdate Set xmlNode = xmlDom.documentElement Set objRetValNode = xmlDom.documentElement For i = 0 To xmlNode.childNodes.length - 1 sid = xmlnode.childNodes(i).childNodes(0).Text name = xmlnode.childNodes(i).childNodes(1).Text price = xmlnode.childNodes(i).childNodes(2).Text catagory = xmlnode.childNodes(i).childNodes(3).Text pdate = xmlnode.childNodes(i).childNodes(4).Text strsql="insert into test(sid,name,price,catagory,pdate) values('"& sid &"','"& name &"','"& price &"','"& catagory &"','"& pdate &"')" 'response.write strsql conn.execute strsql next if err.number=0 then retval="数据成功提交" else retval="数据提交失败,请检查你的数据" end if set conn=nothing%><?xml version="1.0" encoding="gb2312"?><Response> <retval><%=retval%></retval></Response> 相应的vb客户端代码Private Sub Command2_Click()Dim rs1 As New ADODB.Recordsetrs1.CursorLocation = adUseClientrs1.CursorType = adOpenKeysetrs1.LockType = adLockBatchOptimistic rs1.Open "select * from test", conn, adOpenDynamic, adLockPessimistic '由于RequestXml所包含的东西过多,我们直接生成xml文件'直接使用了数据库字段,没有使用中文命名Dim strXMLDim fmstrXML = "<xml>"rs1.MoveFirstDo While Not rs1.EOFstrXML = strXML & "<row>"For Each fm In rs1.FieldsstrXML = strXML & "<" & fm.name & ">" & fm.Value & "</" & fm.name & ">"NextstrXML = strXML & "</row>"rs1.MoveNextLoopstrXML = strXML & "</xml>"Set rs1 = Nothing Dim httpRequest As New MSXML.XMLHTTPRequesthttpRequest.Open "POST", "http://localhost/webxml/putinfo.asp", FalsehttpRequest.send strXML If httpRequest.Status <> 200 Then MsgBox httpRequest.statusText, , httpRequest.Status Exit SubEnd If Set rs = New ADODB.Recordset'重新加载rs.Open "http://localhost/webxml\getinfo.asp"Set DataGrid1.DataSource = rs '以下是判断数据是否正确提交 Dim strretval As String Dim ResponseXml As DOMDocument Set ResponseXml = New DOMDocument Set ResponseXml = httpRequest.ResponseXml strretval = ResponseXml.selectSingleNode("//retval").Text MsgBox strretval End Sub 结束语:这个例子充分的体现了HTTP和XML的优势。对于客户来说,可以订制自己的xml格式,清晰易懂。安全性大大的提高。而且可以在不同的应用服务器上加以扩展使用。如果要提高性能和加大安全性,在服务端可以使用COM组件来扩展ASP,以达到最好的效果。
如果要做C/S的话,俺也用不着愁成这样:( 关键是领导提出这个要求是说:
“考虑到拨号上网的用户...多张表一次填不完,可以分多次填写...."
所以离线就是离线,不能在机器在网的状态下做!其实在在线状态下,我已经做一个“草稿箱”,没填写完的都在里面存着呢!可现在:(....
你说的表单不一样,是说每一次提交的表单不同,还是按以后的需要添减呢? 你说的如做客户端程序,又要传一些类似“表单名,表单号”之类的东西是吧,那是你服务器那边的ASP程序要求的吧。可不可以做一些专为离线提交专用的程序呢? 还有客户程序可以用IE组件来完成你说的显示之类的问题吧。不知我理解的对不对。
它可以很好的解决你的问题。它既可以离线填写数据,也可在线填写数据!~
因为这些表单是根据现实中一些表格制作的,现实中这些表格量很多,格式不一样,而且这些表格是在并不是长期固定的,所以像你下面说到的“专为离线提交专用的程序”以及用“IE组件来完成显示”要实现的话,首先要解决的就是:◆◆◆ 这些表单是以什么形式下载下来,这个程序要能够认识,这里的认识不是单纯的显示出来,更重要的是这些表单在程序中显示出来以后用户要填写,填写后程序还要能把填写的内容取出来以生成所需要的文件(其实这个很显然,我能想到的就是存成XML文档),而那些“表单号”之类的信息也就应该存在于这个XML文档中!所以.........
关键就是怎么来存取处理不同表单下填写的数据
问题是这个“系统”现在已经基本完成,架子已经定死了!要再改为.net,就算是衔接也有点问题:( 再就是,想的这么麻烦就是已经考虑到拨号用户了,就更不用说用户机器上还装有.net框架了:(
csdn的制度什么时候变的????
-----------------------
在用户完成后,登陆,直接上传这个word文件,asp程序还原文件名时间和读取批次标志,调用本批次表格的格式,完成对word文件的读取,将获取的有效信息处理成和在线提交时一样的格式,存数据库。
---------------------
基本的思路就时这样了。实际就是一切的处理还是在服务器上,还是在在线的时候完成。
-----------
供楼主参考,不知道是不是你的要求。。:)
牛,怎么可以发200分的帖子??
csdn的制度什么时候变的????
csdn的制度什么时候变的????
word有病毒,文本的行吧。
----------------------
csdn的制度什么时候变的????
就是啊
楼主先解释一下这个问题吧
不成呀我还没修炼到那种程度呀!希望你能解决呀!到时候不要忘了通知我呀!^_^
其实MYIE有这个功能的
制度没变你达到五个角时也就可以发了呀!!
csdn的制度什么时候变的????
就是啊
楼主先解释一下这个问题吧
看
http://blog.csdn.net/online/archive/2004/07/07/35994.aspx
版权声明:CSDN是本Blog托管服务提供商。如本文牵涉版权问题,CSDN不承担相关责任,请版权拥有者直接与文章作者联系解决。龙卷风关键字:XML,HTTP,COM+1. 伸缩性伸缩性是衡量应用在同一时间内能够处理多少用户的尺度。也是反映应用程序能否满足重要应用的一个指标。在你的应用程序中到底可以容纳多少用户,每个用户每隔多久向服务器提交一次请求,你的用户所处的位置,如局域网还是interner中。这些问题在设计应用的时候,你需要考虑。在设计分布式应用之前,一个问题就是使用的协议。如DCOM、HTTP和MSMQ。DCOM的缺点是显著的。如不能穿越防火墙。不能利用基于请求的负载平衡技术,因而限制了并发用户的数量,还要对每台客户机进行大量的配置等等。HTTP实现简单及各个平台的支持越来越受到欢迎。事实上,构建COM+体系结构是建立在下面这个基础之上的:一个应用必须使用HTTP来实现客户到服务的通信才能获得最大的伸缩性。 2. 实际的问题经常我们会遇到这样的问题,如一个总店与多个分店的情况,要求每天分店将业务数据上传到总店。彼此相隔较远。总店的环境:有自己的固定IP 的WEB服务器(或者没有固定IP)的,或者没有自己的服务器,仅仅有一个虚拟空间的网站。分店的环境:可以通过拨号方式连接。3.达到的要求 总店每天可以通过网站及时的看到分店的情况。并且数据要做到本地保留。4.常见的解决办法最多的一种方式就是分店将数据导出成txt文件,拨号连接成功后,将txt传送到某个ftp目录或者发送到指定的Email里。总店手工接收或者程序接收后,再做处理。 还有一种就是分店的数据库直接连接总店的数据库,做保存更新操作。5.使用HTTP和XML来实现 就是客户端应用程序通过一个XML文档传递参数,向Web服务器提交一个HTTP请求。服务端使用一个Asp页面得到该参数,执行其方法,然后使用XMl文档向客户端返回数据。先看看服务端ASP的代码:1).从服务端返回数据getinfo.asp(以流的方式返回记录集)<%@ Language=VBScript %><%set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb") dim rs Set rs = Server.CreateObject("ADODB.Recordset") rs.open "select * from test",conn rs.save response,1 rs.close%>这里说明一下:只要客户端在请求中发送了符合格式的XML文档,ASP中的Request和Response对象就能工作。(这项技术只能在IIS5和Windows 2000中以及各自的高版本中使用。)在客户端使用vb'引用microsoft activex data object 2.x library‘引用microsoft XML,version2.0Option ExplicitPrivate rs As ADODB.Recordset'从远程数据库得到内容Private Sub Command5_Click()‘提交一个HTTP请求。Set rs = New ADODB.Recordsetrs.Open "http://localhost/webxml\getinfo.asp"Set DataGrid1.DataSource = rsEnd Sub 2)单个记录提交到远程asp文件Getsingleinfo.asp(数据增加并返回结果)<%@ Language=VBScript %><%'这里需要修改,返回客户的xml响应文档Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb")
dim xmldom ' set xmldom = Server.CreateObject("Microsoft.XMLDOM") set xmldom = Server.CreateObject("MSXML.DOMDocument") xmldom.load Request dim sid,name,price,catagory,pdate sid = xmldom.selectSingleNode("//项目编号").text name = xmldom.selectSingleNode("//项目名称").text price = xmldom.selectSingleNode("//价格").text catagory = xmldom.selectSingleNode("//种类").text pdate =xmldom.selectSingleNode("//发生日期").text dim strsql,retval on error resume next strsql="insert into test(sid,name,price,catagory,pdate) values('"& sid &"','"& name &"','"& price &"','"& catagory &"','"& pdate &"')" 'response.write strsql conn.execute strsql if err.number=0 then retval="数据成功提交" else retval="数据提交失败,请检查你的数据" end if set xmldom = Nothing set conn=nothing'下面的代码是将结果以xml形式返回'需要加上<?xml version="1.0" encoding="gb2312"?>这句,否则无法返回中文%><?xml version="1.0" encoding="gb2312"?><Response> <retval><%=retval%></retval></Response> 相应的客户端vb代码:Private Sub Command3_Click() Dim httpRequest As MSXML.XMLHTTPRequest Set httpRequest = New MSXML.XMLHTTPRequest Dim StrXml As String '构造出要上传的XML串,这里节点使用中文 StrXml = "<Request>" & _ "<项目编号>" & Txtbh.Text & "</项目编号>" & _ "<项目名称>" & Txtname.Text & "</项目名称>" & _ "<价格>" & Txtprice.Text & "</价格>" & _ "<种类>" & TxtCategory.Text & "</种类>" & _ "<发生日期>" & Txtpdate.Text & "</发生日期>" & _ "</Request>" httpRequest.Open "POST", "http://localhost/webxml/putsingleinfo.asp", False httpRequest.send StrXml '如果错误 If httpRequest.Status <> 200 Then MsgBox httpRequest.statusText, , httpRequest.Status Exit Sub End If '以下是判断数据是否正确提交 Dim strretval As String Dim ResponseXml As DOMDocument Set ResponseXml = New DOMDocument Set ResponseXml = httpRequest.ResponseXml strretval = ResponseXml.selectSingleNode("//retval").Text MsgBox strretvalEnd Sub 3)多条数据上传putinfo.asp<%@ Language=VBScript %><!--#include file="adovbs.inc"--><%Response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("web.mdb") dim rs on error resume next Set rs = Server.CreateObject("ADODB.Recordset") dim xmldom ' set xmldom = Server.CreateObject("Microsoft.XMLDOM") set xmldom = Server.CreateObject("MSXML.DOMDocument") xmldom.load Request dim sid,name,price,catagory,pdate Set xmlNode = xmlDom.documentElement Set objRetValNode = xmlDom.documentElement For i = 0 To xmlNode.childNodes.length - 1 sid = xmlnode.childNodes(i).childNodes(0).Text name = xmlnode.childNodes(i).childNodes(1).Text price = xmlnode.childNodes(i).childNodes(2).Text catagory = xmlnode.childNodes(i).childNodes(3).Text pdate = xmlnode.childNodes(i).childNodes(4).Text strsql="insert into test(sid,name,price,catagory,pdate) values('"& sid &"','"& name &"','"& price &"','"& catagory &"','"& pdate &"')" 'response.write strsql conn.execute strsql next if err.number=0 then retval="数据成功提交" else retval="数据提交失败,请检查你的数据" end if set conn=nothing%><?xml version="1.0" encoding="gb2312"?><Response> <retval><%=retval%></retval></Response> 相应的vb客户端代码Private Sub Command2_Click()Dim rs1 As New ADODB.Recordsetrs1.CursorLocation = adUseClientrs1.CursorType = adOpenKeysetrs1.LockType = adLockBatchOptimistic rs1.Open "select * from test", conn, adOpenDynamic, adLockPessimistic '由于RequestXml所包含的东西过多,我们直接生成xml文件'直接使用了数据库字段,没有使用中文命名Dim strXMLDim fmstrXML = "<xml>"rs1.MoveFirstDo While Not rs1.EOFstrXML = strXML & "<row>"For Each fm In rs1.FieldsstrXML = strXML & "<" & fm.name & ">" & fm.Value & "</" & fm.name & ">"NextstrXML = strXML & "</row>"rs1.MoveNextLoopstrXML = strXML & "</xml>"Set rs1 = Nothing Dim httpRequest As New MSXML.XMLHTTPRequesthttpRequest.Open "POST", "http://localhost/webxml/putinfo.asp", FalsehttpRequest.send strXML If httpRequest.Status <> 200 Then MsgBox httpRequest.statusText, , httpRequest.Status Exit SubEnd If Set rs = New ADODB.Recordset'重新加载rs.Open "http://localhost/webxml\getinfo.asp"Set DataGrid1.DataSource = rs '以下是判断数据是否正确提交 Dim strretval As String Dim ResponseXml As DOMDocument Set ResponseXml = New DOMDocument Set ResponseXml = httpRequest.ResponseXml strretval = ResponseXml.selectSingleNode("//retval").Text MsgBox strretval End Sub 结束语:这个例子充分的体现了HTTP和XML的优势。对于客户来说,可以订制自己的xml格式,清晰易懂。安全性大大的提高。而且可以在不同的应用服务器上加以扩展使用。如果要提高性能和加大安全性,在服务端可以使用COM组件来扩展ASP,以达到最好的效果。
1.(非常简单)
在目前的在线系统的基础上,想办法将表单网页保存到用户计算机上,然后用户离线去改,上线后,直接用保存的网页提交就行了。(要求你的表单的action指定为你服务器的绝对地址),这个办法是很多人才招聘网站发明的,用来做离线简历。
2.(复杂,按你的思路需要客户端应用程序)
首先你的客户端应用程序不能写死,它得是一个灵活的框架,各种不同类型的表单对应不用的程序模块(可以动态加载的dll),这就解决了主要问题。
现在需要解决的就是第2种方案这个应用程序的设计方案,
俺想了一点东西(当然还只是理论上的):
1,对应不同的模块还不如可以认识不同的XML文档,通过这些XML文档生成所需要的表单样式(至少可以生成所需要接受填写的控件),可~~~:( 这对俺不管是技术上还是时间上都有很大难度。
2,想办法由保存到本地的页面直接生成所需要的文档,但由于javascript不能对本地文档进行操作,也就不能单纯用页面中的javascript生成文件,可我想WSH是不是可以做到,也就是说用WSH与来启动表单页面完成输入,输入结束时由FSO生成文件,但这个没有具体做过,所以心里也没底,不知道哪们WSH高手可以帮一下!
以上想到的两个方法不知道可行否???痛苦ing.................
或者,其实javascript也可以写本地文件,当然需要applet或activex之类的东西配合,首先解决javascript调用插件的问题(网上到处都可以搜到),然后就是签名的问题,插件签名后就可以读写本地文件了,activex不熟,applet签名其实很简单(先用jar打包、再用keytool建立keystore、再用jarsigner签名)
哪们高手来指点一下,不知道可行性如何???
◆◆◆◆◆◆在这里想问一下怎么样用javascript遍历整个表单,得到里面的表单域和其名称及值?◆◆◆文件:demo.wsf
<?xml version="1.0" encoding="gb2312"?>
<DEMO id="CreateFile">
<script language="javascript">
<![CDATA[
var bOK=0;
var strText="";
var strFileName="";
var oIE=WScript.CreateObject("InternetExplorer.Application");
oIE.left=50;
oIE.top=100;
oIE.height=380
oIE.navigate(GetPath()+"Demo.htm");
oIE.Visible=1;
while(oIE.Busy) {
WScript.Sleep(200);
}
try {
while (oIE.Document.Script.chkOK()==false) {
WScript.Sleep(200);
}
}
catch(e) {
WScript.Echo("err");
WScript.Quit();
}
//得到格式化的数据
strText=oIE.Document.Script.GetText();
//得到要生成的文件名
strFileName=oIE.Document.frm_Demo.text_FileName.value;
if(strFileName=="") {
var d=new Date();
strFileName=d.getDate() + "-" + d.getTime() + ".xml"
}
strFileName=GetPath()+strFileName;
//保存文件
SaveToFile(strText,strFileName)
WScript.Echo("成功保存到:"+strFileName);
oIE.Quit();
function GetPath()
{
var path=WScript.ScriptFullName;
path=path.substr(0,path.lastIndexOf("\\")+1);
return path
}
function SaveToFile(strText,strFileName)
{
var fso=new ActiveXObject("Scripting.FileSystemObject");
var oFile=fso.CreateTextFile(strFileName,true);
oFile.WriteLine("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
oFile.Write(strText);
oFile.Close();
}
]]>
</script>
</DEMO>◆◆◆文件:demo.htm
<html><head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>表单保存数据</title>
<script language=javascript >
<!--
var strText;
var bOK;
bOK=0;
strText="";
function CreateFile()
{
strText="<People>"
+"<Name>" + frm_Demo.text_Name.value +"</Name>"
+"<Sex>" + frm_Demo.text_Sex.value+"</Sex>"
+"<Age>"+frm_Demo.text_Age.value +"</Age>"
+"</People>"
bOK=1;
}
function chkOK()
{
if(bOK==0)
{
return false;
}
else
{
return true;
}
}
function GetText()
{
return strText;
}
//-->
</script>
</head><body><form method="POST" action="--WEBBOT-SELF--" name="frm_Demo">
<table border="1" style="border-collapse: collapse" width="100%" height="110">
<tr>
<td width="158">姓名:</td>
<td><input type="text" name="text_Name" size="20"></td>
</tr>
<tr>
<td width="158">性别:</td>
<td><input type="text" name="text_Sex" size="20"></td>
</tr>
<tr>
<td width="158">年龄:</td>
<td><input type="text" name="text_Age" size="20"></td>
</tr>
<tr>
<td width="158">输入XML文件名:</td>
<td><input type="text" name="text_FileName" size="20"></td>
</tr>
<tr>
<td width="158"> </td>
<td><input type="button" value="生成提交文件!" name="btn_CreateFile" onclick="CreateFile()"></td>
</tr>
</table>
</form></body></html>
把两头的
<DEMO id= "CreateFile " > </DEMO>
◆◆◆应该是<job id="CreateFile"> </job> 即把DEMO改成job
这两样咚咚实在是好!infopath 就是专门针对你这种情况的,后台只需要创建样式不同的InfoPath表单就可以了!客户端在Infopath应用界面中连接到你的Sharepoint server就可以下载管理员定制的各种表单,想什么时候上传只要连接存在就可以传!!