任我行/管家婆 导入EXCEL ACCESS数据

来源:互联网 发布:说明书制作软件 编辑:程序博客网 时间:2024/04/29 23:57
  1. <%
  2. 'response.write ASC("+")&""&request("aaa")
  3. '<!--
  4. '程序名:   Grasp_InData.asp
  5. '程序功能:  导入导出管家婆库存商品类别EXCEL数据
  6. '       导入ACCESS单据
  7. '开发者:   Linyee
  8. '联系我:   QQ249033420
  9. 'Email:     mythinker@2911.net
  10. 'Home:      www.linyee.net  blog-hi.baidu.com/jiaguoxinzhi  blog.csdn.net/jiaguoxinzhi/
  11. '-->
  12. Dim SqlName
  13. SqlName =request.form("db")
  14. if SqlName="" then  SqlName="debnC"
  15. Dim SqlIp
  16. SqlIp   =request.form("svr")
  17. if SqlIp="" then  SqlIp="127.0.0.1"
  18. Dim SqlUser
  19. SqlUser =request.form("un")
  20. Dim SqlPass
  21. SqlPass =request.form("up")
  22. strPath =request.form("xls")
  23. 'response.write strPath
  24. 'strPath    ="E:/德标管业/_公司文件/类别.XLS"
  25. ExcelTbl=request.form("tbl")
  26. if ExcelTbl="" then  ExcelTbl="ptype"
  27. Dim Dx,DanType
  28. Dim G1,G2
  29. Dim     objConn1,objConn
  30. Dim     objRs1,objRs
  31. if request.form("daolu")="导入" and strPath<>""  then  call Command1_Click:response.end
  32. if request.form("daocu")="导出" and strPath<>""  then  call Command2_Click:response.end
  33. if request.form("daocuTxt")="导出" and strPath<>""  then  call Command3_Click:response.end
  34. call    ShowDiog
  35. ''将ACCES导出为文本
  36. Sub Command3_Click()
  37. ''SQL连接
  38.     on error resume next
  39.     'ExcelTbl="查询_出货单"
  40.     
  41. ''ACCESS连接
  42.     Set objConn1 = server.CreateObject("ADODB.Connection")
  43.     objConn1.Provider = "Microsoft.Jet.OLEDB.4.0   "
  44.     objConn1.ConnectionString = "Data Source=" & strPath & ";Persist Security Info=False;Jet OLEDB:Database Password=123"
  45.     objConn1.Open
  46.     if err.number<>0 then response.write "2"&err.description:response.end
  47.     
  48.     Set objRs1 = server.CreateObject("ADODB.Recordset")
  49.     objRs1.Open "select * from ["&ExcelTbl"]", objConn1, 1, 1
  50.     Set Rs = server.CreateObject("ADODB.Recordset")
  51.     if err.number<>0 then response.write "3"&err.description:response.end
  52.     
  53. ''完全导入
  54.     'objConn.execute    "SELECT * INTO ptype FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;HDR=YES;DATABASE="&strPath&"', "&ExcelTbl&"$) Rowset_1"
  55.     
  56. ''导出数据  ;管家婆导出数据格式
  57. '管家婆辉煌版8.x                                                      
  58. '单序 P   进货单 科号  现    金  单位号 单位  人员号 人员  主仓库 仓库号 单号  2008-09-01  摘要  
  59. '单序 P1  空白  编号  名称  数量  进货价 进货额 折让  进货价 进货额 税点  进货价 税金  备注
  60. '1  A   101 现    金  100480.6    '会计科目实收实付
  61. 'EXCEL表头
  62. '00 01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16
  63. '编号 序号  名称  颜色  规格  单位  数量  零售价 进货价 进货额 件量  备注  单号  日期  类别  件数  业务员
  64. '版本题头
  65.         Dx=(right("0000000000"&objrs1(12),5))   '单号后四位
  66.         if not isnumeric(Dx) then Dx=(left(right(objrs1(12),5),4))"01":err.clear   '单号后四位
  67.         response.write "管家婆辉煌版8.x"      '摘要
  68.         response.write vbcrlf       '换行
  69. '单据摘要
  70.     call    WriteTitle
  71.     if err.number<>0 then response.write "4"&err.description:response.end
  72.     
  73.     while not objrs1.eof
  74.         if objrs1(2)="合计" then
  75.     
  76. '1  A   101 现    金  100480.6    '会计科目实收实付
  77. '未收不建立会计科目实收实付
  78.             if IsNumeric(objrs1(6)) then
  79.             response.write dx&vbtab     '单序
  80.             response.write "A"&vbtab    '标识
  81.             response.write "101"&vbtab  '结算编号
  82.             response.write "现    金"&vbtab   '现    金
  83.             response.write objrs1(6)&vbtab  '数量当实收实付
  84.             'response.write (0-objrs1(9))&vbtab '数量为空时则置负
  85.             response.write vbcrlf       '换行
  86.             end if
  87.             
  88.             objRs1.movenext
  89.             if objRs1.eof then response.end '如果是结束就就束
  90.     '版本题头
  91.         Dx=(right(objrs1(12),5))    '单号后四位
  92.         if not isnumeric(Dx) then Dx=(left(right(objrs1(12),5),4))"01":err.clear   '单号后四位
  93.             'response.write "管家婆辉煌版8.x"     '摘要
  94.             'response.write vbcrlf      '换行
  95.     
  96.     '单据摘要
  97.             call    WriteTitle
  98.         end if
  99.     '记录生成
  100.         if objrs1(6)<>"" then call  WriteRecord
  101.         objRs1.movenext
  102.     wend
  103.     response.write ";导入完成!"
  104. End Sub
  105. '写记录
  106. sub WriteRecord()
  107.         response.write dx&vbtab     '单序
  108.         response.write "P1"&vbtab   '标识
  109.         response.write ""&vbtab     '空白
  110.         response.write objrs1(1)&vbtab  '编号
  111.         response.write objrs1(2)&vbtab  '名称
  112.         response.write objrs1(6)&vbtab  '数量
  113.         response.write objrs1(8)&vbtab  '进货价
  114.         response.write objrs1(9)&vbtab  '进货额
  115.         response.write "1"&vbtab    '折让
  116.         response.write objrs1(8)&vbtab  '进货价
  117.         response.write objrs1(9)&vbtab  '进货额
  118.         response.write "0"&vbtab    '税点
  119.         response.write objrs1(8)&vbtab  '进货价
  120.         response.write "0"&vbtab    '税金
  121.         response.write objrs1(11)   '备注
  122.         response.write vbcrlf       '换行
  123. End Sub
  124. '写表头
  125. sub WriteTitle()
  126.         response.write dx&vbtab     '单序
  127.         response.write "P"&vbtab    '标识
  128.         if instr(ExcelTbl,"进货") then
  129.         DanType="JH"
  130.         if objrs1(6)<0 then
  131.         response.write "进货退货"&vbtab '进货单
  132.         DanType="JHT"
  133.         else
  134.         response.write "进货单"&vbtab  '进货单
  135.         end if
  136.         else
  137.         DanType="DB"
  138.         if objrs1(6)<0 then
  139.         response.write "销售退货"&vbtab '进货单
  140.         DanType="DBT"
  141.         else
  142.         response.write "销售单"&vbtab  '进货单
  143.         end if
  144.         end if
  145.         response.write "101"&vbtab  '结算编号
  146.         response.write "现    金"&vbtab   '现    金
  147.         response.write ""&vbtab     '单位编号
  148.         if objrs1(11)<>"" then
  149.         response.write objrs1(11)&vbtab '单位
  150.         else
  151.         response.write "德标"&vbtab   '业务
  152.         end if
  153.         response.write ""&vbtab '人员号
  154.         if objrs1(16)<>"" then
  155.         response.write objrs1(16)&vbtab '业务
  156.         else
  157.         response.write "公司"&vbtab   '业务
  158.         end if
  159.         response.write "主仓库"&vbtab  '仓库
  160.         response.write "001"&vbtab  '仓库号
  161.         response.write DanType&objrs1(12)&vbtab '单号
  162.         G1=split(""&objrs1(13),"-")
  163.         G2=G1(0)"-"&right("00"&G1(1),2)"-"&right("00"&G1(2),2)
  164.         response.write G2&vbtab '日期
  165.         response.write ""       '摘要
  166.         response.write vbcrlf       '换行
  167. End Sub
  168. '商品库类别字段
  169. 'ID 父ID 级/进深    子类数 1级子数    修改? 编号  条码  名称  简称  规格  型号  产地
  170. '单位 单位2 关系1 关系2 价1  价2  价3  零价  保质月 保质天 备注  价X  删除?
  171. '加权等    PinYin  顺序上 顺序下 自动数 父级数 价X1 最低价 索引
  172. ''将EXCEL导入到SQL中
  173. Sub Command1_Click()
  174. ''SQL连接
  175.     Dim     connStr
  176.     on error resume next
  177.     Set objConn = server.CreateObject("adodb.connection")
  178.     objConn.ConnectionTimeout = 60
  179.     objConn.CommandTimeout = 60
  180.     objConn.CursorLocation = 3
  181.     connStr="Provider=SQLOLEDB.1;Persist Security Info=False;User ID="&SqlUser";Password="&SqlPass";Initial Catalog=" & SqlName & ";Data   Source=" & SqlIp & ""
  182.     objConn.Open connStr
  183.     'response.write connStr
  184.     if err.number<>0 then response.write "0"&err.description:response.end
  185.     
  186.     objConn.execute "delete from "&ExcelTbl" where 1=1 "   '先清空商品表
  187.     Set objRs = server.CreateObject("ADODB.Recordset")
  188.     objRs.Open "select * from "&ExcelTbl" where 0=1", objConn, 3, 3
  189.     if err.number<>0 then response.write "1"&err.description:response.end
  190.     
  191. ''EXCEL连接
  192.     Set objConn1 = server.CreateObject("ADODB.Connection")
  193.     objConn1.Provider = "Microsoft.Jet.OLEDB.4.0   "
  194.     objConn1.ConnectionString = "Data Source=" & strPath & ";" & "Extended Properties=Excel 8.0;"
  195.     objConn1.Open
  196.     if err.number<>0 then response.write "2"&err.description:response.end
  197.     
  198.     Set objRs1 = server.CreateObject("ADODB.Recordset")
  199.     objRs1.Open "select * from ["&ExcelTbl"$]", objConn1, 1, 1
  200.     if err.number<>0 then response.write "3"&err.description:response.end
  201.     Set Rs = server.CreateObject("ADODB.Recordset")
  202.     
  203. ''完全导入
  204.     'objConn.execute    "SELECT * INTO ptype FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0', 'Excel 5.0;HDR=YES;DATABASE="&strPath&"', "&ExcelTbl&"$) Rowset_1"
  205.     
  206. ''导入数据
  207.     Dim Pid
  208.     while not objrs1.eof
  209.         objRs.addnew
  210.         for fori=0 to objRs.fields.count-1
  211.         'response.write fori&"|"    '调试用于查看哪个字段不正确
  212.             if fori<>30 and fori<>31 then   '30自动编号
  213.             objRs(fori)=objRs1(fori)
  214.             end if
  215.             if fori=31 then '30自动编号
  216.             rs.open "select [Rec] from "&ExcelTbl" where typeId='"&objRs1(1)"'",objConn, 1, 1
  217.             objRs(31)=rs(0)
  218.             rs.close
  219.             end if
  220.         next
  221.         response.write "导入"&objRs(0)"完成!"
  222.         objRs.update
  223.         objRs.Requery
  224.         'objRs.movenext
  225.         objRs1.movenext
  226.     wend
  227.     response.write "导入完成!"
  228. End Sub
  229.     
  230. ''将SQL中导出到EXCEL
  231. Sub Command2_Click()
  232. ''EXCEL连接
  233.     on error resume next
  234.     Set objConn = server.CreateObject("ADODB.Connection")
  235.     objConn.Provider = "Microsoft.Jet.OLEDB.4.0   "
  236.     objConn.ConnectionString = "Data Source=" & strPath & ";" & "Extended Properties=Excel 8.0;"
  237.     objConn.Open
  238.     if err.number<>0 then response.write "1"&err.description:response.end
  239.     
  240. ''SQL连接
  241.     Set objConn1 = server.CreateObject("adodb.connection")
  242.     objConn1.ConnectionTimeout = 60
  243.     objConn1.CommandTimeout = 60
  244.     objConn1.CursorLocation = 3
  245.     objConn1.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID="&SqlUser";Password="&SqlPass";Initial Catalog=" & SqlName & ";Data   Source=" & SqlIp & ""
  246.     if err.number<>0 then response.write "2"&err.description:response.end
  247.     
  248.     Set objRs = server.CreateObject("ADODB.Recordset")
  249.     objRs.Open "select   *   from   ["&ExcelTbl"1$]", objConn, 3, 3
  250.     
  251.     Set objRs1 = server.CreateObject("ADODB.Recordset")
  252.     objRs1.Open "select   *   from   "&ExcelTbl"", objConn1, 1, 1
  253.     if err.number<>0 then response.write "3"&err.description:response.end
  254.     
  255.     Dim i
  256.     Dim strValue  '存放内容
  257.     Dim strTitle  '存放表头
  258.     Dim strSql
  259. ''导入题头
  260.     objRs.addnew
  261.     for fori=0 to objRs.fields.count-1
  262.     'response.write fori&"</br>"    '调试用于查看哪个字段不正确
  263.         objRs(fori)=objRs1(fori).name
  264.     next
  265.     response.write "导出题头"&objrs1(0)"完成!"
  266.     objRs.update
  267.     'objRs.movenext
  268.     
  269.     while not objrs1.eof
  270.         objRs.addnew
  271.         for fori=0 to objrs1.fields.count-1
  272.         'response.write fori&"</br>"    '调试用于查看哪个字段不正确
  273.             'if fori<>30 then   '30自动编号
  274.             objRs(fori)=objRs1(fori)
  275.             'end if
  276.         next
  277.         response.write "导出"&objrs1(0)"完成!"
  278.         objRs.update
  279.         'objRs.movenext
  280.         objRs1.movenext
  281.     'if err.number<>0 then response.write "4-"&fori&err.description:response.end
  282.     wend
  283.     response.write "导出完成!"
  284. End Sub
  285. %>
  286. <%
  287. %>
  288. <%sub   ShowDiog()%>
  289. <form action="" method="post" enctype="application/x-www-form-urlencoded" name="form1">
  290.   <table width="98%"  border="1">
  291.     <tr>
  292.       <td>EXCEL文件</td>
  293.       <td><input name="xls" type="file" size="80" path="<%=strPath%>"></td>
  294.     </tr>
  295.     <tr>
  296.       <td>SQL</td>
  297.       <td>服务器
  298.         <input name="svr" type="text" value="<%=SqlIp%>">
  299.         数据库
  300.         <input name="db" type="text" value="<%=SqlName%>">
  301.         用户
  302.         <input name="un" type="text" value="sa">
  303.         口令 
  304.         <input name="up" type="password" value="jiaguo">               
  305. </td>
  306.     </tr>
  307.     <tr>
  308.       <td> </td>
  309.       <td>表名:
  310.         <input name="tbl" type="text" id="tbl" value="<%=ExcelTbl%>">
  311.       本操作仅适用于本机导入,因管家婆2005辉煌版数据导入所需而做,用于其它地方可能会产生错误。</td>
  312.     </tr>
  313.     <tr>
  314.       <td><a href="?">返回</a></td>
  315.       <td align="center">EXCEL
  316.         <input name="daolu" type="submit" id="daolu" value="导入">
  317.       到SQL
  318.         <input name="daocu" type="submit" id="daocu" value="导出">
  319.         到EXCEL ACCESS
  320.         <input name="daocuTxt" type="submit" id="daocuTxt" value="导出">
  321.         导出为文本</td>
  322.     </tr>
  323.     <tr>
  324.       <td>说明</td>
  325.       <td valign="middle"><p>1、商品类别,表名ptype。</p>
  326.       <p>2、草稿单据,从ACCESS导出,有“进货”字样为进货,其它为出货。导出后,查看源代码另存为文本即可用于管家婆的单据导入,省却对表的直接操作。</p></td>
  327.     </tr>
  328.   </table>
  329. </form>
  330. <%End Sub%>
原创粉丝点击