关于vba导入数据到sql server数据库,下面是核心代码:
1、连接数据库:
需要microsoft activeX date objects组件支持,系统自带的,但我曾发现有些电脑的默认安装中没有包含它。在vba菜单-工具-引用,找到并勾选,随便什么版本号的都行;
下面是我实际代码的摘录,把你的服务器名称和数据库名称写在下面代码的对应位置:
Const cnnstr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=数据库名称;Data Source=数据服务器名称
Cn.Open cnnstr
2、删除原有数据:在添加数据前一般要先删除原有数据,防止重复添加。其中s1和s3都是我代码中的参数,你适当修改;
FanSql = "delete from fanMaster where rq between '" + s1 + "' and '" + s3 + "'"
Rec.Open FanSql, Cn
3、插入数据:完整复制了我的运行代码,其中的参数你自行替换掉,也包含了个别字段转换的逻辑匹配。要记住:sql数据库都是以文本的方式插入的,即使定义的字段是数字,所以都需要把值添加双引号;
While Cells(i, 1) <> ""
FanSql = "Insert into fanMaster (gs,rq,pzh,kmbm,km,zy,dwbm,wldw,xmh,jf,df) values("
For k = 1 To 9
FanSql = FanSql & "'" & Cells(i, k) & "',"
Next
If IsEmpty(Cells(i, 10)) Then '防止空白到数字的转换问题
FanSql = FanSql & "'0.00',"
Else
FanSql = FanSql & "'" & Cells(i, 10) & "',"
End If
If IsEmpty(Cells(i, 11)) Then
FanSql = FanSql & "'0.00')"
Else
FanSql = FanSql & "'" & Cells(i, 11) & "')"
End If
Rec.Open FanSql, Cn
i = i + 1
Wend
4、其他关于数据库的操作都类似,完全是按照sql语法规范来进行的。在vba中调用sql语句总结下来就是3步:
1)、连接,Rec.Open FanSql, Cn;
2)、执行, Rec.Open FanSql, Cn;
3)、关闭,Cn.Close。
连接和关闭语句只需要开始和结束用一次就ok,但执行每调用一次sql就要执行一次,所以Rec.Open FanSql, Cn是放在循环内的
就这些了。