【问题标题】:Store a sql select statement, ran from VBA, in a numeric variable将一条从 VBA 运行的 sql 选择语句存储在一个数值变量中
【发布时间】:2014-02-11 12:16:48
【问题描述】:

我正在创建一个动态传递查询,为此我首先需要查询我的本地数据库并获取一个 ID。 这个 ID 是我将在查询的 WHERE 子句的传递查询中放入的 ID。

我的字符串:

getCorpID = "SELECT corpID " & _
            "FROM dbo_corp " & _
            "WHERE name = " & Forms.frmMain.Combo4.Value

然后我正在尝试做类似的事情:

CorpID (integer) = docmd.runsql (getCorpID)

我意识到,但是 docmd runsql 不适用于 select 语句,甚至不能返回一个值。我可以用什么来运行我的字符串

getCorpId

作为 sql 并将结果(每次只有一个结果......一个数字)存储在我的变量 CorpID 中

谢谢。

【问题讨论】:

  • 请注意,以这种方式构造查询会使您对 SQL 注入开放。如果你要做数据库开发,你应该熟悉这个主题。
  • 您可以在一个组合中包含很多内容,那么为什么不直接引用一个组合列呢?
  • 乔恩,我只是个实习生,甚至在我大四的时候都没有。边走边学。
  • @user3191081:没问题,大家从头开始。请在发布生产代码之前覆盖它!如果你在老板之前提出来,他或她可能会印象深刻。
  • @JonofAllTrades 我最终与一位同事讨论了我正在尝试的方法,他向我介绍了 ADO,我们确保在子结束时关闭连接,我想这就是你所指的。感谢您的提醒,很高兴知道人们正试图让我们这些业余爱好者避免犯太多重大错误。

标签: sql ms-access select vba


【解决方案1】:

考虑使用Recordset

Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim getCorpID As String
Dim CorpID 

Set dbs = CurrentDb


getCorpID = "SELECT corpID " & _
        "FROM dbo_corp " & _
        "WHERE name = " & Forms.frmMain.Combo4.Value
Set rsSQL = dbs.OpenRecordset(getCorpID , dbOpenSnapshot)
rsSQL.MoveFirst
CorpID = rsSQL.Fields("corpID")

【讨论】:

  • 谢谢,这绝对让我朝着正确的方向前进。
猜你喜欢
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多