VBA直接操作数据库

想要整一个客户端式的查询数据库工具,并且将数据录入到Excel中,整理一下需要的语句

Sub BUtton2_Click()
    
    Set wsConfig = Worksheets("数据控制")
    orderCommand = wsConfig.Cells(3, 3)
    tempStr = LCase(orderCommand)
    If InStr(tempStr, "select") = 1 And checkSQL(tempStr) Then
        If MsgBox("确认需要进行数据导出?", vbOKCancel, "提示") = vbOK Then
            DATABASEIP = "****"
            DATABASEPORT = ****

            DATABASEUSERBAME = ***

            DATABASEPSD = "****"
            DATABASENAME = "rtc_prod"
            sConn = "Provider=IBMDADB2;Database=" & DATABASENAME & ";Hostname=" & DATABASEIP & ";Protocol=TCPIP; Port=" & DATABASEPORT & ";Uid= " & DATABASEUSERBAME & ";Pwd=" & DATABASEPSD & ";"
            Set oConn = CreateObject("ADODB.Connection")
            oConn.Open sConn
            If (Err.Number <> 0) Then
                MsgBox "程序系统参数有错,程序退出!"
                Exit Sub
            Else
              excuteSQL sConn, orderCommand
            End If
              oConn.Close
        End If
    Else
    MsgBox "数据查询格式不正确!"
    End If
    Set wsConfig = Nothing
End Sub
Function excuteSQL(Conn, sql)
     Set Recordset = CreateObject("ADODB.recordSet")
     Set wsData = Worksheets("数据信息")
     wsData.Cells.Clear
     Recordset.Open sql, Conn, 3
     wsData.Cells(2, 1).CopyFromRecordset Recordset
     For i = 1 To Recordset.Fields.count
        wsData.Cells(1, i) = Recordset.Fields(i - 1).Name
     Next
        '尼玛网上各种骗子欺骗我MSDN有问题是吧。注意这边的recordCount需要在open的时候加行参数
        '0 只读,   数据只能向下移动
        '1 可读写,数据可以自由移动,多用户下别人不能看到新增数据(除非重启动)
        '2 可读写,数据可以自由移动,多用户下别人可以看到新增数据
        '3 只读 , 数据可以自由移动
        
        '参数2表示锁定类型,如下:
        '参数2           意    义
        '1 默认值,   只读
        '2                    悲观锁定
        '3                    乐观锁定
        '4                   批次乐观锁定


     MsgBox "数据导入成功,员工导出 " & Recordset.RecordCount & " 条记录"
     Recordset.Close
     Set Recordset = Nothing
End Function

Function checkSQL(tempStr)
resultValue = InStr(tempStr, "insert ") <= 0 And InStr(tempStr, "update ") <= 0 And InStr(tempStr, "delete ") <= 0
checkSQL = resultValue
End Function

 

还有一个其他的,从Excel读取之后操作数据库的,附上源码

Function getDataFromExcel(Conn)
    Dim wsConfig As Excel.Worksheet, wsData As Excel.Worksheet
    Dim employeeCode, employeeName, ORGANIZATIONCODE, ORGANIZATIONNAME, DEPARTMENTCODE, DEPARTMENTNAME, price, supType, bizModule, bizArea  
    Set wsData = Worksheets("数据信息") 
    Dim RowCounts, RowIndex, FirstRowIndex
    FirstRowIndex = 2
    RowCounts = 2
    RowIndex = FirstRowIndex
    Set curCell = wsData.Cells(RowIndex, 1)   
    '计算总行数
    Do While Not IsEmpty(curCell)
        RowIndex = RowIndex + 1
        Set curCell = wsData.Cells(RowIndex, 1)
    Loop
    RowCounts = RowIndex - 2
    For i = 2 To RowCounts + 1
        XX = Trim(wsData.Cells(i, 1))
        XX = Trim(wsData.Cells(i, 2))
        XX = Trim(wsData.Cells(i, 3))
        XX = Trim(wsData.Cells(i, 4))
        XX = Trim(wsData.Cells(i, 5))
        XX = Trim(wsData.Cells(i, 6))
        XX = Trim(wsData.Cells(i, 7))
        XX = Trim(wsData.Cells(i, 8))
        XX = Trim(wsData.Cells(i, 9))
        XX = Trim(wsData.Cells(i, 10))
        XX = isExsitEmpInfo(Conn, employeeCode)
        If XX > 0 Then
           updateEmpInfo Conn,XXXXX
        Else
            insetEmpInfo XXXXX
        End If
    Next
End Function


Function updateEmpInfo(Conn,XXXX)
    Set objCommand = CreateObject("ADODB.COMMAND")
    sql = XXXXXXX
    objCommand.CommandText = sql
     objCommand.ActiveConnection = Conn
    objCommand.Execute
    WriteLog sql
    Set objCommand = Nothing
End Function



 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1-1 利用DAO创建数据库和数据表 7 1-2 利用ADOX创建数据库和数据表: 8 1-3 利用SQL语句创建数据库和数据表 9 1-4 在已有的数据库中创建数据表(DAO) 10 1-5 在已有的数据库中创建数据表(ADOX) 12 1-6 在已有的数据库中创建数据表(SQL,Command对象) 13 1-7 在已有的数据库中创建数据表(SQL,Recordset对象) 13 1-8 利用Access对象创建数据库和数据表 14 1-8-1 不引用Access对象库而使用Access的有关对象、属性和方法 16 1-9 利用Access对象在已有的数据库中创建数据表 17 1-10 利用工作表数据创建数据表(ADOX) 18 1-11 利用工作表数据创建数据表(ADO+SQL) 21 1-12 利用工作表数据创建数据表(DAO) 23 1-13 利用已有的数据表创建新数据表(ADO) 25 1-14 利用已有的数据表创建新数据表(DAO) 27 1-15 利用已有的数据表创建新数据表(Access)(前绑定方法引用Access对象库) 28 2-1 检查数据表是否存在(ADO) 28 •实例2-2 检查数据表是否存在(ADOX) 32 •实例2-3 检查数据表是否存在(DAO) 33 •实例2-4 检查数据表是否存在(Access) 33 •实例2-5 获取数据库中所有表的名称和类型(ADO) 34 •实例2-6 获取数据库中所有表的名称和类型(ADOX) 35 •实例2-8 获取数据库中所有数据表名称(ADO) 36 •实例2-9 获取数据库中所有数据表名称(ADOX) 37 •实例2-10 获取数据库中所有数据表名称(DAO) 37 •实例2-11 获取数据库中所有数据表名称(Access) 38 •实例2-12 检查某字段是否存在(ADO) 39 •实例2-13 检查某字段是否存在(ADOX) 40 •实例2-14 检查某字段是否存在(DAO) 41 •实例2-15 检查某字段是否存在(Access) 41 •实例2-16 获取数据库中某数据表的所有字段信息(ADO) 42 •实例2-17 获取数据库中某数据表的所有字段信息(ADOX) 44 •实例2-18 获取数据库中某数据表的所有字段信息(DAO) 45 •实例2-19 获取数据库中某数据表的所有字段信息(Access) 47 •实例2-20 获取数据库的所有查询信息(ADOX) 48 •实例2-21 获取数据库的所有查询信息(DAO) 49 •实例2-22 获取数据库的模式信息(openschema) 50 •实例2-23 获取表的创建日期和最后更新日期(ADOX) 51 •实例2-24 获取表的创建日期和最后更新日期(DAO) 52 •实例3-1 将数据库记录数据全部导入到excel工作表(ADO,之一) 53 •实例3-2 将数据库记录数据全部导入到excel工作表(ADO,之二) 54 •实例3-3 将数据库记录数据全部导入到Excel工作表(ADO,之三) 55 •实例3-4 将数据库记录数据全部导入到Excel工作表(DAO,之一) 56 •实例3-5 将数据库记录数据全部导入到Excel工作表(DAO,之二) 57 •实例3-6 将数据库记录数据全部导入到Excel工作表(QueryTable集合) 58 •实例3-7 将数据库的某些字段的记录数据导入到Excel工作表(ADO) 59 •实例3-8 将数据库的某些字段记录数据导入到Excel工作表(DAO) 60 •实例3-9 查询前面的若干条记录(全部字段)(TOP) 61 •实例3-10 查询前面的若干条记录(部分字段)(TOP) 62 •实例3-11 查询不重复的字段记录(DISTINCT) 63 •实例3-12 利用Like运算符进行模糊查询 64 •实例3-13 查询某一区间内的记录(BETWEEN) 65 •实例3-14 查询存在于某个集合里面的记录(IN) 67 •实例3-15 将查询结果进行排序(ORDER BY) 68 •实例3-16 进行复杂条件的查询(WHERE) 69 •实例3-17 利用合计函数进行查询(查询最大值和最小值) 70 •实例3-18 利用合计函数进行查询(查询合计值和平均值) 71 •实例3-19 将一个查询结果作为查询条件进行查询 72 •实例3-20 将查询结果进行分组(GROUP BY) 73 •实例3-21 查询结果进行分组(HAVING) 74 •实例3-22 通过计算列进行查询 76 •实例3-23 使用IS NULL运算符进行查询 77 •实例3-24 使用COUNT函

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值