【发布时间】:2021-04-12 04:23:13
【问题描述】:
我是连接 vba (excel) 和 oracle 数据库的新手。我试图寻找一些信息,但找不到任何适合我的信息。
我想编写一个查询,它只返回包含特定值的行。
我的查询如下所示:
SQLStr = SQLStr = "SELECT NGKHFHCD, NGKHFNAM, NGKHGNKA, NGKHSZIC, NGKHMTRC, NGKHSNZC, NGKHGCHC, NGKHKKKS, NGKHKTKS FROM NGKH order by NGKHFHCD"
但我想拥有这样的东西SQLStr = "SELECT NGKHFHCD, NGKHFNAM, NGKHGNKA, NGKHSZIC, NGKHMTRC, NGKHSNZC, NGKHGCHC, NGKHKKKS, NGKHKTKS FROM NGKH WHERE NGKHFHCD = SHeet1(A2:A)"
我只是不想从 oracle 中取出整个表,因为这会花费很多时间,所以我想也许我只能从该表中返回特定的行。 另外,如果表中没有搜索到的值,我想以某种方式对其进行标记。
有办法解决吗?
我的代码:
Sub OracleLocalConnect()
Dim RecordSet As New ADODB.RecordSet
Dim con As New ADODB.Connection
Dim ExcelRange As Range
Dim SQLStr As String
Dim ws As Worksheet
con.ConnectionString = "Provider=OraOLEDB.Oracle.1;User ID=***;Password=****;Data Source=*****;"
con.Open
Set RecordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT GNKHFHCD, GNKHFNAM, GNKHGNKA, GNKHSZIC, GNKHMTRC, GNKHSNZC, GNKHGCHC, GNKHKKKS, GNKHKTKS FROM GNKH ORDER BY GNKHFHCD"
RecordSet.Open SQLStr, con, adOpenStatic, adLockReadOnly
Set ws = ActiveWorkbook.Sheets("Prices")
Set ExcelRange = ws.Range("A2")
ExcelRange.CopyFromRecordset RecordSet
RecordSet.Close
con.Close
Exit Sub
Exit Sub
End Sub
【问题讨论】:
-
您想查询单个值?值是数字还是文本?
-
它是一个文本,它将是多个值。 (例如 A2:A1000 的整个范围,因此它将是 999 个不同的值)
-
大概有多少个值(十/百/千?)
-
@TimWilliams 这将是数千个值
-
对于 Oracle,这有点问题 - 例如:stackoverflow.com/questions/400255/…