mysql - 创建返回 Mysql 数据的自定义 Excel 函数

标签 mysql excel function vba

我想创建一个自定义的excel函数,它将单元格值作为参数来查询mysql数据库

Function excelmysql2()

    Dim odjDB As ADODB.Connection
     Dim sqlstr As String
    Dim rs As ADODB.Recordset
    Dim oRS, nRec, oFld
    Dim Row


     '----------------------------------------------------------------------

    Set odjDB = New ADODB.Connection

    Sheets("Sheet1").Select

    odjDB.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};" & _
    "SERVER=192.168.0.64;" & _
    "DATABASE=mifos;" & _
    "Port=3307;" & _
    "USER=root;" & _
    "PASSWORD=admin;"




    Set oRS = odjDB.Execute("SELECT account.customer_id FROM mifos.account WHERE (mifos.account.account_id= '" & Range("A3").Value & "')")

    nRec = 0
    Row = 3

    Do While Not oRS.EOF
        For Each oFld In oRS.Fields

            Worksheets("Sheet1").Cells(Row, 3).Value = oRS("customer_id")


            Row = Row + 1
            On Error Resume Next
            oRS.MoveNext

        Next
    Loop

    oRS.Close
    odjDB.Close

End Function

正如您注意到的那样,在函数中设置了单元格编号 因为我找不到让它动态的方法。 我希望能够像任何 excel 函数一样使用该函数,我可以在其中传递单元格的值并从 mysql 获取查询值

我应该用什么代替 Range("A3") 才能通过传递单元格值在 Excel 中使用此函数? (例如:=excelmysql2(A1)...)

谢谢

最佳答案

下面的例子。与您的问题相关

使用它,只需更改参数....

它说明了一个查询,该查询返回基于月份和年份的(收盘价 “MEND”)外汇汇率,来自名为 finance 的数据库中名为 rates 的表

SELECT rates.MEND 
   FROM rates 
WHERE rates.Cur =  'USD' 
 AND  rates.Month = JAN 
 AND  rates.Year = 2015
returns 14.35

Table : rates

Cur | Month| Year | MEND

ZAR | JAN | 2015 | 1.453

USD | JAN | 2015 | 14.35

Function MySQL_Month_endRate(Curr As String, Monn As Integer, yearr As Integer) As String
'##################
'##  Connection  ##
'##################

Dim conn As Variant
Dim rs As Variant
Dim cs As String
Dim query As String


Dim Table_Name As String
Table_Name = "rates"

Dim Database_Name As String
Database_Name = "finance"


Set conn = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")


     cs = "DRIVER={MySQL ODBC 5.3 ANSI Driver};"
cs = cs & "DATABASE=" & Database_Name & ";"
cs = cs & "SERVER=127.0.0.1"

conn.Open cs, "root", "root" 'UserName and Password else WindowsNT Autentication






'####################
'##      QUERY     ##
'####################

query = "SELECT rates.MEND FROM rates WHERE rates.Cur =  '" & Curr & "' AND  rates.Month = " & Monn & " AND  rates.Year = " & yearr

'Curr As String, Monn As Integer, yearr As

Debug.Print query
rs.Open query, conn


'####################
'##   RECORD SET   ##
'####################




     Do Until rs.EOF


'       row = row + 1
'       Cells(row, 5).Value = rs.Fields("Serial key").Value
      Debug.Print rs.Fields("MEND").Value


      MySQL_Month_endRate = rs.Fields("MEND").Value

       rs.MoveNext
     Loop


'#####################
'##      Return     ##
'#####################










Set rs = Nothing
conn.Close
Set conn = Nothing


'myRibbon.Invalidate
'End
errline:
If Err.Description <> "" Then MsgBox Err.Description
'MsgBox Err.Description


End Function

关于mysql - 创建返回 Mysql 数据的自定义 Excel 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006496/

相关文章:

excel - 如何从使用 Excel VB 的文本框来自两个或多个用户窗体的文本框中输入数据将数据输入到 Excel?

javascript - 为什么 arguments.callee 会损害性能?

mysql - 无法使用 Rails 5.0.1 和 MySQL 更新 bool 列

php - 将找到的项目插入数组

excel - 如何将HAR文件导入excel

java - Apache POI 生成 org.apache.poi.POIXMLException : java. lang.reflect.InitationTargetException

mysql - 如何显示与日期范围匹配的日期的匹配项

php - mysql数据的文本搜索技术

function - 在R中按功能取整输出

Python-创建一个函数以从未知数量的参数中获取唯一列表