使用soaoffice中间件+asp实例编写小型的企业管理程序(二)

      想想都写了一篇还没有碰到soaoffice中间件的一根毛,自己都不好意思了,就继续写batchprint.asp这个文件的代码,这个里面是一定要用到这个中间件的。
      先说这个文件的整体思路,就是根据传递过来的batchid,调取workprocess表中的信息,填写到print.xls这个excel表中,同时将这个文件保存到batchfiles这个子文件夹下面,知道了思路也就好办了,继续coding。

***************************************

batchprint.asp

<%
'首先创建一个服务器对象
set myexcel=server.createobject("aoaofficex.excelresponse")
set myesheet=myexcel.opensheet("sheet1")'这里的sheet1和你print.xls中的sheet名需要对应

'下面这些代码都是从数据库中调取数据的(工序信息)
sql="select b.*,a.batch,a.billdate from workprocess b,batch a where a.id="&batchid&" and a.productid=b.productid"
rs1.open sql,mycn,1
if not rs1.eof then
'假设我们的excel表中:A1里面放的是产品编码 ,B1里面放的是批次数量,C1里面放的是批次号 ,D1里面放的是批次日期
'从A2------>A10放的是加工工序,   A11里面是料废数 A13里面填写的是工废数量,其他地方都是一些excel的公式
'我们先就开始实现excel中数据的填写
mysheet.FormMode = true'提交模式
mysheet.opencell("A1").value=rs1("productid")
mysheet.opencell("B1").value=rs1("qty")
mysheet.opencell("C1").value=rs1("batch")
mysheet.opencell("d1").value=rs1("billdate")
'下面开始填写工序
i=9
do until rs1.eof
i=i+1
mysheet.opencell("A"&i).value=rs1("workprocess")
rs1.movenext
loop
end if
rs1.close
'接下来就需要将我们创建的这个服务器对象内容附加到excel表中
Set myctrl = Server.CreateObject("SOAOfficeX.SOAOfficeCtrl")
myctrl.server="127.0.0.1"'这个是你的soaoffice的服务器地址
myctrl.serverport="4357
'这里你还可以对你的activex对象设置一些属性,比如是否显示菜单,显示工具条,设置保存调用的程序文件
myctrl.Menubar = false
myctrl.Toolbars = false
myctrl.SaveDocURL = "batchsave.asp?batchid="&request("batchid")&""
' 打开文档
myctrl.Assign myexcel
'这个时候我们需要打开我们的print.xls模版文件
myctrl.WebOpen "print.xls", 0, userName, "Excel.Sheet"
'释放对象
set myctrl=nothing
set myexcel=nothing
set mysheet=nothing
%>



 



 
  
本机尚未安装SOAOFFICE客户端控件,请安装浏览器上方黄色提示条或弹出提示框中的SOAOFFICE客户端控件。

 


**********************************
      很好理解上面的这段程序,但是这并没有结束,只是完成了从数据库调取数据填写到excel表的过程。我们还需要batchsave.asp这个文件来保存我们的excel到我们指定的那个batchfile子文件夹中。
     继续开始batchsave.asp文件的编写.

***********************************

<%
'创建保存对象
set mysave=server.createobject(soaofficex.savedocObj")
sql="select filenamestr from batch where id="&request("batchid")&""
rs1.open sql,mycn,1
if not rs1.eof then
filenamestr=rs1("filenamestr")
else
response.end
end if
rs1.close
'将我们刚才产生的那个文件按我们设定的文件名保存到子目录下
mysave.SaveToFile   Server.MapPath("batchfile/") & "/" & filenamestr
set mysave=nothing
%>

*******************************

      到了这里我们对使用soaoffice中间件填充数据和保存文件应该很清楚了.当然上面的过程还是比较粗糙的,还要考虑一些保存不成功及编辑的细节,在这里我们忽略继续往下.
      接着完成如何从excel表中提取数据保存到sql server中.
      首先我们需要先完成batchreport.asp这个文件,主要是给我们检索用的.

***********************************

<%
sql="select *,case when steteflag=1 then '已完工' else '未完工' end as stateflagstr from batch"
rs1.open sql,mycn,1
if not rs1.eof then
response.write"

"
do until rs1.eof
response.write"
日期产品批次数量状态操作
"&rs1("billdate")&""&Rs1("productid")&""&rs1("batch")&""&rs1("qty")&""&rs1("stateflgstr")
if rs1("stateflag")=0 then
'如果未完工的我们还要填写质量信息
response.write"
edit"
else
'如果已经完工的我们只能察看文件了
response.write"
view"
end if
rs1.movenext
loop
end if
rs1.close
%>

*****************************
      在上面这个文件中我们又调用的两个文件:editbath.asp和viewbatch.asp,其中editbatch.asp主要目的就是打开批次卡,然后将我们的质量信息填写进取,最后保存文件的同时将质量信息提取保存到数据库中.viewbatch.asp就采用只读打开的方式对应的批次卡.
      viewbath.asp文件比较简单,我们先来完成这个文件.其实他和我们前面的batchprint.asp文件几乎完全一样.
*********************************
viewbatch.asp

<%
'找到我们要打开的文件名
sql="select filenamestr from batch where id="&request("batchid")&""
rs1.open sql,mycn,1
if not rs1.eof then
filenamestr=rs1("filenamestr")
else
response.end
end if
rs1.close
'接下来就需要将我们创建的
Set myctrl = Server.CreateObject("SOAOfficeX.SOAOfficeCtrl")
myctrl.server="127.0.0.1"'这个是你的soaoffice的服务器地址
myctrl.serverport="4357

'只读方式打开文档
myctrl.WebOpen "batchfiles/"&filenamestr, 1, userName, "Excel.Sheet"
'释放对象
set myctrl=nothing

%>



 
  
本机尚未安装SOAOFFICE客户端控件,请安装浏览器上方黄色提示条或弹出提示框中的SOAOFFICE客户端控件。

 


**********************************
       最后我们来写填写质量信息的文件editbatch.asp,前面我们说了我们的A11里面是料废数 A13里面填写的是工废数量,一旦保存成功,我们就同时需要将数据库对应batch的stateflag设置成1.在这个文件中主要需要了解一个needsubmit属性设置。
待续.....

你可能感兴趣的:(编程体验,企业系统,中间件,asp,excel,sql,javascript,数据库)