VBA查询、新增SQL数据库

天数无常 2018-11-05 10:33:12
我现在需要的是如何向SQL数据库批量新增、修改、删除数据。请举简单的例子。
本人初学,略懂一二,经过整理网上各种零碎信息,现总结如下两点,欢迎大家加Q:493196216一起讨论。
1,通过VBA查询SQL数据库数据:
Sub 查询()
Dim cnn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim CnStr As String, SQL As String
CnStr = "Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Password=111111;Initial Catalog=DB_22"
cnn.Open CnStr
SQL = "select a.os_id,a.os_no,a.cus_no,b.name from mf_pos a left join cust b on a.cus_no=b.cus_no"
Set rs = New ADODB.Recordset
rs.Open SQL, cnn
With Sheet9
.Range("a1").CopyFromRecordset rs
.Cells.EntireColumn.AutoFit
End With
rs.Close
End Sub

2,通过VBA向SQL插入单元格数据:
Sub EXCEL写入SQL2008()
Dim cnn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim CnStr As String, SQL As String
Dim bgz As String
bgz = Sheet11.[a1].Value

CnStr = "Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Password=111111;Initial Catalog=DB_A"
cnn.Open CnStr

SQL = "select * from A1 where x='" & bgz & "'"
Set rs = New ADODB.Recordset
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
If rs.BOF And rs.EOF Then'当记录集为空时
rs.AddNew'记录集添加新记录
rs.Fields(1) = bgz'为新记录赋值
rs.Update'更新记录集
End If

rs.Close
End Sub
...全文
1030 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
天数无常 2018-11-06
  • 打赏
  • 举报
回复
3,先谢谢大家的回复!以下语句完美的解决了我提出的问题,一位高手的指点,在此表示谢过! Sub CreateAllSheetsInsert() Dim r, i, j As Integer Dim cnn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim conStr As String Dim SQL As String conStr = "Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Password=bnm11121;Initial Catalog=DB_A" cnn.Open conStr r = Range("A65534").End(xlUp).Row For i = 2 To r SQL = "INSERT INTO A1 (x,y,z) VALUES (" For j = 1 To 2 SQL = SQL & "'" & Cells(i, j) & "'," Next SQL = SQL & "'" & Cells(i, 3) & "');" cnn.Execute SQL Next cnn.Close Set cnn = Nothing End Sub
天数无常 2018-11-05
  • 打赏
  • 举报
回复
我写的第2条就是向SQL里插入单元格的数据,是在网上东拼西凑的语句,是能实现单个单元格的插入,但此语句我怎么改也无法实现多行数据的插入,总是报错,关键可能是VBA+EXCEL的数据插入SQL的原理没弄懂,还请您具体指点一下。比如我SQL有个表(x,y,z),EXCEL有两行数据“1、2、3”和“一、二、三”,如何插入?
舉杯邀明月 2018-11-05
  • 打赏
  • 举报
回复
如果你能“新增1条”,那么就能够“批量新增”。
 唯一的区别,就是前者是“执行一次”相应的指令;
 而后者就是用循环(看具体“场景”,For循环或Do循环)实现“多次执行”而已。

要批量修改、删除,其实跟刚才我说的“批量新增”也没有本质区别。
天数无常 2018-11-05
  • 打赏
  • 举报
回复
我的Q是493196216
天数无常 2018-11-05
  • 打赏
  • 举报
回复
我现在需要的是如何向SQL数据库批量新增、修改、删除数据。请举简单的例子。
脆皮大雪糕 2018-11-05
  • 打赏
  • 举报
回复
如果有N条数据,无非

for i = 1 to n
组织第i条数据信息
拼接第i条数据的insert语句
执行insert语句
next
脆皮大雪糕 2018-11-05
  • 打赏
  • 举报
回复
建议你先找一本讲解SQL语法的书看看,了解一下数据库表的增、删、改、查语句如何写。然后进一步看看多表关联。
如果你已经能搞定插入一条数据,那么插入两条数据的操作无非分解成为两个操作:
1、插入第一条数据。
2、插入第二条数据。

2,503

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧