欢迎光临
我们一直在努力

一篇关于客户端用ASP+rds+VBA参生报表的好东东(高级篇)

建站超值云服务器,限时71元/月

test_print_report.asp

<html>
<head>
<meta content="text/html; charset=big5" http-equiv="content-type">
<title>client use rds produce excel report</title>
</head>
<body bgcolor="skyblue" topmargin=0 leftmargin="20" oncontextmenu="return false" rightmargin="0" bottommargin="0">
<form action="test_print_report.asp" method="post" name="myform">
<div align="center"><center>        
<table border="5" bgcolor="#ffe4b5" style="height: 1px; top: 0px" bordercolor="#0000ff">
    <tr>
         <td align="middle" bgcolor="#ffffff" bordercolor="#000080">
         <font color="#000080" size="3">    
         client use rds produce excel report
         </font>
         </td>
    </tr>
</table>
</div>
<div align="left">
<input type="button" value="query data" name="query" language="vbscript" onclick="fun_query()" style="height: 32px; width: 90px">
<input type="button" value="clear data" name="clear" language="vbscript" onclick="fun_clear()" style="height: 32px; width: 90px">
<input type="button" value="excel report" name="report" language="vbscript" onclick="fun_excel()" style="height: 32px; width: 90px">
</div>
<div id="adddata"></div>
</form></center>
</body>
</html>
<script language="vbscript">
dim rds,rs,df    
dim strsql,strrs,strcn,rowcnt
dim xlapp, xlbook, xlsheet1,xlmodule,xlpagesetup
dim headrowcnt,titlerowcnt,contentrowcnt,footrowcnt
dim pagerowcnt,pageno,totalpagecnt,contentrownowcnt
dim columnallwidth,columnawidth,columnbwidth,columncwidth,columndwidth

sub fun_query()
    set rds = createobject("rds.dataspace")
    set df = rds.createobject("rdsserver.datafactory","http://iscs00074")
    strcn="driver={sql server};server=iscs00074;uid=sa;app=microsoft development environment;database=pubs;user id=sa;password=;"
    strsql = "select * from jobs"
    set rs = df.query(strcn, strsql)
     
    if not rs.eof then
          strrs="<table border=1><tr><td>job_id</td><td>job_desc</td><td>max_lvl</td><td>min_lvl</td></tr><tr><td>"+ rs.getstring(,,"</td><td>","</td></tr><tr><td>"," ") +"</td></tr></table>"   
          adddata.innerhtml=strrs
          strrs=""
    else
          msgbox "no data in the table!"  
    end if
end sub
    
sub fun_clear()
    strrs=""
    adddata.innerhtml=strrs
end sub    

sub fun_excel()
    set rds = createobject("rds.dataspace")
    set df = rds.createobject("rdsserver.datafactory","http://iscs00074")
    strcn="driver={sql server};server=iscs00074;uid=sa;app=microsoft development environment;database=pubs;user id=sa;password=;"
    strsql = "select count(*) as recordcnt from jobs"
     set rs = df.query(strcn, strsql)
    totalpagecnt=rs("recordcnt")
    rs.close
    set rs=nothing
    strsql = "select * from jobs"
     set rs = df.query(strcn, strsql)
    set xlapp = createobject("excel.application")
    set xlbook = xlapp.workbooks.add
    set xlsheet1 = xlbook.activesheet
    set xlmodule = xlbook.vbproject.vbcomponents.add(1)      
    xlsheet1.application.visible = true
    xlsheet1.application.usercontrol = true  
    i=0
    rowcnt=1
    pageno=1  
    headrowcnt=4    the header number to print in one page!
    titlerowcnt=3   the title  number to print in one page!
    contentrowcnt=6 the record number to print in one page!
    footrowcnt=1    the footer number to print in one page!
    pagerowcnt=headrowcnt+titlerowcnt+contentrowcnt+footrowcnt
    totalpagecnt=int((totalpagecnt+contentrowcnt-1)/contentrowcnt)
    columnawidth=5  the columna width!
    columnbwidth=30 the columnb width!
    columncwidth=5  the columnc width!
    columndwidth=5  the columnd width!
add the head and title
    call head_title
add the data
    do while not rs.eof
       with xlsheet1
            .cells(rowcnt,1).value  = rs(0)
            .cells(rowcnt,2).value  = rs(1)
            .cells(rowcnt,3).value  = rs(2)
            .cells(rowcnt,4).value  = rs(3)
       end with
       rs.movenext
       contentrownowcnt=contentrownowcnt+1
       if not rs.eof then
          if contentrownowcnt mod (contentrowcnt) =0 then
             contentrownowcnt=0
             rowcnt = cint(rowcnt) + 1
             add the foot
             call foot_title
             add the head and title
             call head_title
          else
             rowcnt = cint(rowcnt) + 1
          end if   
       else
          rowcnt = cint(rowcnt) + 1
          call foot_title
       end if
    loop
format the grid and font
    call format_grid
release references         
        xlsheet1.printout   
    xlbook.saved = true
    set xlmodule = nothing
    set xlsheet1 = nothing
    set xlbook = nothing
    xlapp.quit
    set xlapp = nothing   
    rs.close
    set rs=nothing
end sub

sub head_title()
    dim headrow
    headrow=1
    do while headrow<= headrowcnt
       with xlsheet1
            .range("c"+trim(rowcnt)+":"+"d"+trim(rowcnt)).merge    
       end with
       rowcnt=rowcnt+1
       headrow=headrow+1
    loop
    
    format the head name of cells (the new page of row=5,6,7)
      
    with xlsheet1
        .cells(rowcnt-3, 2).value = "the job information table"
        .cells(rowcnt-3, 3).value = date()
        .cells(rowcnt-4, 3).value = "the "+trim(pageno)+"/"+trim(totalpagecnt) +" pages"
    end with
    format the title field name of cells
    with xlsheet1
        .range("a"+trim(rowcnt)  +":b"+trim(rowcnt)).merge           
        .range("a"+trim(rowcnt+1)  +":a"+trim(rowcnt+2)).merge    
        .range("b"+trim(rowcnt+1)  +":b"+trim(rowcnt+2)).merge    
        
        .range("c"+trim(rowcnt)  +":d"+trim(rowcnt)).merge
        .range("c"+trim(rowcnt+1)  +":c"+trim(rowcnt+2)).merge    
        .range("d"+trim(rowcnt+1)  +":d"+trim(rowcnt+2)).merge                  
  
        .cells(rowcnt,  1).value = "the job"
        .cells(rowcnt+1,1).value = "job_id"
        .cells(rowcnt+1,2).value = "job_desc"
        .cells(rowcnt,  3).value = "level"
        .cells(rowcnt+1,3).value = "max level"
        .cells(rowcnt+1,4).value = "min level"
   end with
   rowcnt=int(rowcnt)+3
   pageno=pageno+1
end sub

sub foot_title()
    dim footrow
    footrow=1
    do while footrow<= footrowcnt
       with xlsheet1
            .range("c"+trim(rowcnt)+":"+"d"+trim(rowcnt)).merge    
       end with
       rowcnt=rowcnt+1
       footrow=footrow+1
    loop
    with xlsheet1
        .cells(rowcnt-1, 1).value = "a:"
        .cells(rowcnt-1, 2).value = "b:"
        .cells(rowcnt-1, 3).value = "c:"
    end with
end sub

sub format_grid()
dim strcode
dim mymacro
strcode = _
"sub mymacro() " & vbcr & _  
"dim headrowcnt" & vbcr & _  
"dim titlerowcnt" & vbcr & _  
"dim contentrowcnt" & vbcr & _  
"dim footrowcnt" & vbcr & _  
"dim pagerowcnt" & vbcr & _  
"dim bgncnt" & vbcr & _  
"headrowcnt="& headrowcnt &"" & vbcr & _
"titlerowcnt="& titlerowcnt &"" & vbcr & _
"contentrowcnt="& contentrowcnt &"" & vbcr & _
"footrowcnt="& footrowcnt &"" & vbcr & _
"pagerowcnt=headrowcnt+titlerowcnt+contentrowcnt+footrowcnt" & vbcr & _
"bgncnt=1" & vbcr & _  
"pageno=1" & vbcr & _
"range(""a""+trim(bgncnt)+"":d""+trim(bgncnt)).select" & vbcr & _
"with sheet1" & vbcr & _
"    .range(""a1"").columnwidth = "& columnawidth&"" & vbcr & _
"    .range(""b1"").columnwidth = "& columnbwidth&"" & vbcr & _
"    .range(""c1"").columnwidth = "& columncwidth&"" & vbcr & _
"    .range(""d1"").columnwidth = "& columndwidth&"" & vbcr & _
"end with" & vbcr & _          
"do while pageno<= "& totalpagecnt&"" & vbcr & _
   "if pageno= "& totalpagecnt& " then" & vbcr & _   
   "   contentrowcnt="& contentrownowcnt &"" & vbcr & _
   "   pagerowcnt=headrowcnt+titlerowcnt+contentrowcnt+footrowcnt" & vbcr & _      
   "end if" & vbcr & _   
   "range(""a""+trim(bgncnt)+"":d""+trim(bgncnt+pagerowcnt-1)).select" & vbcr & _
   "with range(""a""+trim(bgncnt)+"":d""+trim(bgncnt+pagerowcnt-1))" & vbcr & _
   "    .borders.linestyle = xlcontnuous" & vbcr & _
   "    .borders.weight = xlthin" & vbcr & _
   "    .borders.colorindex = 10" & vbcr & _
   "    .rowheight = 15" & vbcr & _
   "    .verticalalignment = xlcenter" & vbcr & _
   "    .horizontalalignment = xlleft" & vbcr & _
   "    .font.size = 9" & vbcr & _
   "end with" & vbcr & _    
   "with range(""a""+trim(bgncnt)+"":d""+trim(bgncnt+headrowcnt-1))" & vbcr & _
   "    .font.size = 11" & vbcr & _
   "    .font.bold = true" & vbcr & _
   "    .borders.linestyle = xllinestylenone" & vbcr & _
   "    .verticalalignment = xlcenter" & vbcr & _
   "    .horizontalalignment = xlcenter" & vbcr & _
   "    .orientation = xlhorizontal" & vbcr & _
   "end with" & vbcr & _
   "with range(""a""+trim(bgncnt+headrowcnt)+"":d""+trim(bgncnt+headrowcnt+titlerowcnt-1))" & vbcr & _
   "    .wraptext = true" & vbcr & _
   "    .font.size = 9" & vbcr & _
   "    .font.bold = true" & vbcr & _
   "    .verticalalignment = xlcenter" & vbcr & _
   "    .horizontalalignment = xlcenter" & vbcr & _
   "    .orientation = xlhorizontal" & vbcr & _
   "end with" & vbcr & _
   "with range(""a""+trim(bgncnt+headrowcnt+titlerowcnt+contentrowcnt)+"":d""+trim(bgncnt+headrowcnt+titlerowcnt+contentrowcnt+footrowcnt-1))" & vbcr & _
   "    .font.size = 9" & vbcr & _
   "    .font.bold = true" & vbcr & _
   "    .borders.linestyle = xllinestylenone" & vbcr & _
   "    .verticalalignment = xlcenter" & vbcr & _
   "    .horizontalalignment = xlleft" & vbcr & _
   "    .orientation = xlhorizontal" & vbcr & _
   "end with" & vbcr & _   
   "pageno=pageno+1" & vbcr & _
   "bgncnt=bgncnt+pagerowcnt" & vbcr & _
"loop" & vbcr & _   
"with sheet1.pagesetup" & vbcr & _   
"       .headermargin = application.centimeterstopoints(0)" & vbcr & _   
"       .leftmargin = application.centimeterstopoints(2)" & vbcr & _   
"       .rightmargin =application.centimeterstopoints(2)" & vbcr & _   
"       .topmargin = application.centimeterstopoints(1)" & vbcr & _   
"       .bottommargin = application.centimeterstopoints(1)" & vbcr & _   
"       .footermargin = application.centimeterstopoints(0)" & vbcr & _   
"      .orientation = xllandscape" & vbcr & _   
"       .orientation = xlportrait" & vbcr & _    
"       .centerhorizontally = true" & vbcr & _   
"       .centervertically = false" & vbcr & _
"       .papersize = xlpapera4" & vbcr & _       
"end with" & vbcr & _
"range(""a1"").select" & vbcr & _
"end sub"
xlmodule.codemodule.addfromstring (strcode)
xlapp.run "mymacro"
end sub
</script>

    

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一篇关于客户端用ASP+rds+VBA参生报表的好东东(高级篇)
分享到: 更多 (0)