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



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值