mysql - 如何通过检查Excel中的列使用vba从access中提取数据到excel

标签 mysql sql-server vba excel

我已尝试以下方法来检索信息。从 Access 数据库到 Excel 文件:

Sub ddd()

Const dbloc As String = "C:\Users\mysystem1\Downloads\Database11.accdb"
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim xlbook As Workbook
Dim xlsheet As Worksheet
Dim a As Long
Dim SQL As String

Set xlbook = ActiveWorkbook
Set xlsheet = xlbook.Worksheets(1)
xlsheet.Range("A5:Z100000").ClearContents
Application.StatusBar = "Connecting to external database..."

Set db = OpenDatabase(dbloc)

SQL = "SELECT  Material_ID "
SQL = SQL & "FROM Sheet1"    
'Sheet1 is the the access tablename
'SQL = SQL & "WHERE Material IN (500017,500024,500029)"  
' i want to update the where condition above to a column in the excel wb itself



Set rs = db.OpenRecordset(SQL, dbOpenSnapshot)

If rs.RecordCount = 0 Then

MsgBox "No data retrieved from database", vbInformation + vbOKOnly, "No Data"
    GoTo SubExit

Else

    rs.MoveLast

    recCount = rs.RecordCount

    rs.MoveFirst

End If

xlsheet.Range("C5").CopyFromRecordset rs

End Sub

我想更新 SQL 查询中的 where 条件,以根据 Excel wb 中的列返回结果。但我没有得到正确的语法。

请帮忙。

最佳答案

 SQL = SQL & "WHERE Material IN (" & range("a1") & "," & range("A2") & " ," & range("a3") & ")"  

您可以用单元格引用逐字替换这些值,但请确保引用位于语音标记之外。

如果你想做更多的细胞,你可以做

  SQL = SQL & "WHERE Material IN ("
  Dim r as range
  For each r in range("a1:A20")
       SQL = SQL & r.text & ","
  Next r
  SQL = left(SQL,LEN(SQL)-1)  'Drop last comma
  Sql = SQL &  & ")"

关于mysql - 如何通过检查Excel中的列使用vba从access中提取数据到excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46291779/

相关文章:

excel - 值在一列中,但不在其他列中

mysql - 整个 mysql 表的唯一键?

sql - 期初和期末余额总和

c# - 将 .net decimal 类型转换为 tsql decimal(3,3)

excel - 在 vba 上将值粘贴到另一个工作簿工作表上时出现问题

string - 无法将字符串从 vba 传递到 Windows dll

mysql - 将 sql 中 UNION 的结果合并在一起

mysql - 如何使用 1 个 mySQL 查询返回所有结果的数值箱线图数据?

mysql - SQL 仅选择列上具有最大值的行

mysql - 是否有单独的语言来查询 SQL Server 和 Oracle