vba操作Mysql使用UPDATE一次更新多组数据

网上查到综合后确定的update语法范例:
UPDATE mytable SET myfield = CASE WHEN 1 THEN ‘value‘ WHEN 2 THEN ‘value‘ WHEN 3 THEN ‘value‘ END WHERE id IN (1,2,3)

下面是我写的一个通用的update库表内容过程:kku为库表,zd为字段,frow为更新值表头空行数,col为更新值所在列,ygs为员工数量。
注:更新字符和数字写法有所不同,因此用IsNumeric(Cells(1 + frow, col))进行了判断。
功能:可以把表在一列数据,写入表的一个字段。写入值数量可控的通用过程。

Sub writeb(kku As String, zd As String, frow As Integer, col As Integer, ygs As Integer)
psw = "123456"
ku = "kp123"
user = "user123"
ip = "127.0.0.1"
Dim Cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim a As String
a = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=" & ip & ";Database=" & ku & ";Uid=" & user & ";Pwd=" & psw & ";Stmt=set names gb2312"
Set Cnn = CreateObject("ADODB.Connection")
Cnn.ConnectionString = a
Cnn.Open
Set rs = CreateObject("ADODB.recordset")
rs.CursorType = adOpenStatic   ‘设置游标类型,否则无法获得行数
rs.CursorLocation = adUseClient   ‘设置游标属性,否则无法获得行数
rr = "(1"    ‘用rr存入id的范围,用qq存入条件和赋值,首先给rr和qq赋个初值(即id为1时的值)
If IsNumeric(Cells(1 + frow, col)) Then
qq = "when id=1 then " & Cells(1 + frow, col)     ‘更新的是数字
Else
qq = "when id=1 then ‘" & Cells(1 + frow, col) & "‘"      ‘更新的为字符串,必须单引号引住
End If
For i = 2 To ygs
rr = rr & "," & i
If IsNumeric(Cells(i + frow, col)) Then
qq = qq + " when id=" & i & " then " & Cells(i + frow, col)
Else
qq = qq + " when id=" & i & " then ‘" & Cells(i + frow, col) & "‘"
End If
Next
rr = rr & ")"
rs.Open "update " & kku & " set " & zd & " = case " & qq & " end where id in " & rr & ";", Cnn, 3, 1
Cnn.Close
Set Cnn = Nothing
End Sub

原文地址:https://www.cnblogs.com/tywusy/p/12129312.html

时间: 2024-11-09 10:04:58

vba操作Mysql使用UPDATE一次更新多组数据的相关文章

MySQL增加,删除,更新,导出数据

导出数据 将检索到的数据,保存到服务器的文件内. 通过:select * into outfile '文件地址' from xxx; select * from teacher_grade; select * into outfile 'd:/testmysql/result' from teacher_grade; 注意: 可以自动创建文件,但是不能重写已有文件. 生成的文件格式:默认的采用行来区分记录,制表符区分字段. 为了满足某种特别的需求,会采用不同的分割方式.支持在导出数据时,设置记录

mysql数据库update时只更新部分数据方法

需求:更新url中最一个字符的'-1'改为'-5',前面的内容保持不变 url列的内容如下:http://h5game.ecs.cedarmg.com/a/captal/dispther.do?deviceid=b-01-1 SELECT * from qrmsg WHERE url LIKE '%1' http://h5game.ecs.cedarmg.com/c/captal/dispther.do?deviceid=b-01-1 需要把最后这个-1改成-5 操作方式如下: UPDATE q

MySQL必知必会——更新和删除数据

** 更新(修改)表中的数据,使用UPDATE语句.** 可采用两种方式使用UPDATE: ? 更新表中特定行: ? 更新表中所有行. 基本的UPDATE语句由3部分组成,分别是: ? 要更新的表: ? 列名和它们的新值: ? 确定要更新行的过滤条件. 简单例子.客户10005现在有了电子邮件地址,因此他的记录需要更 UPDATE customers SET cust_email = '[email protected]' WHERE cust_id = 10005; 更新更多列: UPDATE

MongoDB数据库中更新与删除数据

在MongoDB数据库中,可以使用Collection对象的update方法更新集合中的数据文档.使用方法如下所示: collection.update(selector, document, [options], [callback]); selector参数:该参数值为一个对象,用于查询需要更新的数据文档.该参数值指定的方法和我们前面使用的find方法中使用的selector参数值的指定方法完全相同. document参数:该参数值为一个对象,用于指定用来更新的数据文档. options参数

MySQL中SELECT+UPDATE处理并发更新问题解决方案

这篇文章主要介绍了MySQL中SELECT+UPDATE处理并发更新问题解决方案分享,需要的朋友可以参考下. 问题背景 假设MySQL数据库有一张会员表vip_member(InnoDB表),结构如下: 当一个会员想续买会员(只能续买1个月.3个月或6个月)时,必须满足以下业务要求: 如果end_at早于当前时间,则设置start_at为当前时间,end_at为当前时间加上续买的月数 如果end_at等于或晚于当前时间,则设置end_at=end_at+续买的月数 续买后active_statu

mysql的时间字段 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'

在创建时间字段的时候 DEFAULT CURRENT_TIMESTAMP表示当插入数据的时候,该字段默认值为当前时间 ON UPDATE CURRENT_TIMESTAMP表示每次更新这条数据的时候,该字段都会更新成当前时间 这两个操作是mysql数据库本身在维护,所以可以根据这个特性来生成[创建时间]和[更新时间]两个字段,且不需要代码来维护 如下: CREATE TABLE `mytest` ( `text` varchar(255) DEFAULT '' COMMENT '内容', `cr

codeigniter 操作mysql的PHP代码--更新

支持标前缀 1)查询不等于且有等于 $this->db->get_where('host',array('host'=>'ddd','id !='=>0))->row(); 2)2表相交 return $this->db ->select('f.*,count(s.id) as subtotal') ->from('category as f')->join('category s', 'f.id=s.upid', 'left') ->where

MySQL数据库update更新子查询

比如: UPDATE test.tb_vobile a set a.name = '111 'WHEREa.id = (select max(id) id from test.tb_vobile) 报错: [SQL]UPDATE test.tb_vobile a set a.name = '111 'WHEREa.id = (select max(id) id from test.tb_vobile) [Err] 1093 - You can't specify target table 'a'

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码: