作者:绿色风
分类:
时间:2022-08-17
浏览:97
楼主 wise |
Q:如何使用VBA给SQL Server查询的结果生成一个新的数据表? A:ALT+F11→插入模块,在模块中输入以下代码:- Sub Intodata()
- Dim conn As Object, rs As Object
- Dim SQL As String
- Dim Mytable As String
- Dim MyNewtable As String
- '***********************需要修改此处的SQL Server 数据库条件******************************
- MyServer = "WISE-THINK" '存放数据的SQL Server 服务器
- Mydata = "VBA学习专用" '存放数据的SQL Server 数据库
- Mytable = "套餐" '数据库内的表
- MyNewtable = "小米" '生成新表的名称
- '***********************修改结束*********************************************************
- Set conn = CreateObject("ADODB.Connection") '建立ADODB连接对象
- Set rs = CreateObject("ADODB.recordset") '建立收集器对象
- conn.connectionstring = "Driver={sql server};" _
- & "server=" & MyServer & ";" _
- & "uid=;pwd=;" _
- & "database=" & Mydata _
- & ";AutoTranslate=False"
- '服务器是:WISE-THINK
- conn.Open '打开连接SQL server
- SQL = " Select name from sysobjects where xtype='U' and name='" & MyNewtable & "'"
- Set rs = conn.Execute(SQL)
- 'eof,表示end of the cursor的意思,也就是表示当前游标已经到达最后一条记录.如果游标再往下移就会导致出错.
- 'bof,表示before of the cursor的意思,也就是表示当前游标已经到达了第一条记录.如果游戏再往前移就会出错.
- ' if not rs.eof or rs.bof the 就是说,如果记录指针不是第一条记录,也不在最后一条记录.如果这条件成立..则运行下面的语句
- If rs.bof Or rs.EOF Then
- Else
- If MsgBox("数据表<" & MyNewtable & ">是否存在?是否删除该表?", vbQuestion + vbYesNo) = vbNo Then
- MsgBox "无法查询生成新表,因为存在同名的表", vbCritical
- Exit Sub
- Else
- SQL = "drop table " & MyNewtable
- '执行SQL语句
- conn.Execute SQL
- End If
- End If
- '插入一个新生成的表
- SQL = "Select * into " & MyNewtable & " from " & Mytable & " where 品牌='小米'"
- '执行SQL语句
- Set rs = conn.Execute(SQL)
- MsgBox "生成表查询成功!", vbInformation
- conn.Close
- Set conn = Nothing
- End Sub
|
2楼 纵鹤擒龙水中月 |
学习了 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一