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

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

    1、商品类别,表名ptype。

  317.       

    2、草稿单据,从ACCESS导出,有“进货”字样为进货,其它为出货。导出后,查看源代码另存为文本即可用于管家婆的单据导入,省却对表的直接操作。

  318.     
  319.   
  320. <%End Sub%>

你可能感兴趣的:(web技术,excel,access,sql,border,数据库,email)