ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1785|回复: 4

[求助] SQL update语句报错..请各位老师帮忙..

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-10-8 19:32 | 显示全部楼层 |阅读模式
本帖最后由 bmin1117 于 2013-10-8 23:18 编辑
  1. Public Sub UpdateToSql()
  2.     Dim cnn As New ADODB.Connection
  3.     Dim rs As New ADODB.Recordset
  4.     Dim SQL As String, mydata As String, mytable As String
  5.     mydata = "123"           '指定要修改的数据库
  6.     mytable = "321"              '指定数据表
  7.    
  8.     '建立与指定SQL Server数据库的连接
  9.     cnn.ConnectionString = "Provider=SQLOLEDB;" _
  10.         & "User ID=111;" _
  11.         & "Password =222;" _
  12.         & "Data Source=333;" _
  13.         & "Initial Catalog =" & mydata
  14.     cnn.Open
  15.     '按顺序更新全表某些字段的记录
  16.     For i = 9 To Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
  17.     SQL = " update " & mytable _
  18.             & " set 销货清单日期='" & Sheet1.Cells(i, 2).Value & "',开发公司='" & Sheet1.Cells(i, 3).Value & "',结算性质='" & Sheet1.Cells(i, 4).Value & "',项目部='" & Sheet1.Cells(i, 5).Value & "',施工单位='" & Sheet1.Cells(i, 6).Value & "',工程名称='" & Sheet1.Cells(i, 7).Value & "',栋号='" & Sheet1.Cells(i, 8).Value & "'," _
  19.             & "送货地点='" & Sheet1.Cells(i, 9).Value & "',商品名称='" & Sheet1.Cells(i, 10).Value & "',材质='" & Sheet1.Cells(i, 11).Value & "',规格型号='" & Sheet1.Cells(i, 12).Value & "',长度='" & Sheet1.Cells(i, 13).Value & "',钢厂='" & Sheet1.Cells(i, 14).Value & "',理论重量='" & Sheet1.Cells(i, 15).Value & "',刨根支数='" & Sheet1.Cells(i, 16).Value & "'," _
  20.             & "检尺重量='" & Sheet1.Cells(i, 17).Value & "',采购渠道='" & Sheet1.Cells(i, 18).Value & "',销售运费单价='" & Sheet1.Cells(i, 19).Value & "',钢筋销售单价='" & Sheet1.Cells(i, 20).Value & "',出库时间='" & Sheet1.Cells(i, 21).Value & "'," _
  21.             & "出库重量='" & Sheet1.Cells(i, 22).Value & "',钢筋采购单价_市场价='" & Sheet1.Cells(i, 23).Value & "',一次运费成本='" & Sheet1.Cells(i, 25).Value & "',二次运费成本='" & Sheet1.Cells(i, 26).Value & "',加价起始日='" & Sheet1.Cells(i, 28).Value & "',加价终止日='" & Sheet1.Cells(i, 29).Value & "',已收货款='" & Sheet1.Cells(i, 30).Value & "',未收加价='" & Sheet1.Cells(i, 31).Value & "',已收加价='" & Sheet1.Cells(i, 32).Value & "' where 销货单号='" & Sheet1.Cells(i, 1).Value & "'"
  22.             Set rs = cnn.Execute(SQL)
  23.             
  24.     SQL = " update " & mytable _
  25.             & "销售运费金额=检尺重量 * 销售运费单价,钢筋销售金额=检尺重量 * 钢筋销售单价,差价=钢筋销售单价 - 钢筋采购单价_市场价," _
  26.             & "减掉吨数=理论重量 - 检尺重量,胀库数=检尺重量 - 出库重量,加权含税=财务加权_不含税 * 1.17 where 销货单号='" & Sheet1.Cells(i, 1).Value & "'"
  27.             Set rs = cnn.Execute(SQL)
  28.             
  29.     SQL = " update " & mytable _
  30.             & "运费成本总额_挂牌=二次运费成本 * 检尺重量,运费成本总额_加权=一次运费成本 * 出库重量 + 二次运费成本 * 检尺重量,钢筋成本金额_市场价=出库重量 * 钢筋采购单价_市场价,钢筋成本金额_加权=出库重量 * 加权含税  where 销货单号='" & Sheet1.Cells(i, 1).Value & "'"
  31.             Set rs = cnn.Execute(SQL)
  32.             
  33.     SQL = " update " & mytable _
  34.             & "销售合价=销售运费金额 + 钢筋销售金额,胀库率=胀库数 / 检尺重量  where 销货单号='" & Sheet1.Cells(i, 1).Value & "'"
  35.             Set rs = cnn.Execute(SQL)
  36.             
  37.     SQL = " update " & mytable _
  38.             & "总成本_加权=运费成本总额_加权 + 钢筋成本金额_加权,总成本_挂牌价=运费成本总额_挂牌 + 钢筋成本金额_市场价  where 销货单号='" & Sheet1.Cells(i, 1).Value & "'"
  39.             Set rs = cnn.Execute(SQL)
  40.             
  41.     SQL = " update " & mytable _
  42.             & "毛利_挂牌价=销售合价 - 总成本_挂牌价,毛利_加权=销售合价 - 总成本_加权 where 销货单号='" & Sheet1.Cells(i, 1).Value & "'"
  43.             Set rs = cnn.Execute(SQL)

  44.     Next i
  45.     MsgBox "数据保存完毕!", vbInformation, "保存数据"

  46.     '关机记录集以及与数据库的连接

  47.     cnn.Close
  48.     Set rs = Nothing
  49.     Set cnn = Nothing
  50. End Sub
复制代码


报错在第二个"Set rs = cnn.Execute(SQL)"这里..
个人理解应该是关闭记录集的问题吧..
请老师们帮忙改一改..
ps..
之所以要分6次update..是因为这些数据有前后的逻辑运算关系..
写在一起的话要update 4次才能把数据更新完整..
所以我就只能想到分次更新..不知是否正确..

TA的精华主题

TA的得分主题

发表于 2013-10-8 21:12 | 显示全部楼层
我想这可能是笔误吧
Set re = cnn.Execute(SQL)
中的re应该是rs

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-8 23:19 | 显示全部楼层
ly 发表于 2013-10-8 21:12
我想这可能是笔误吧
Set re = cnn.Execute(SQL)
中的re应该是rs

sorry 这个是笔误..
但源程序没写错..依然报错..
主帖已经改过来了..

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-9 08:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-9 10:45 | 显示全部楼层
自己检查出来了..从第二个update开始全部少写了一个 set
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 16:53 , Processed in 0.036583 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表