【问题标题】:Error on event click + Getting data from database事件点击错误+从数据库获取数据
【发布时间】:2016-03-13 08:12:24
【问题描述】:

我正在尝试运行一个事件,但是当我运行它时,我得到了错误:

您输入的表达式 On Click 作为事件属性设置 产生以下错误:您输入的表达式有 包含错误数量的参数的函数。

  • 表达式可能不会产生宏名称、用户定义函数名称或 [事件过程]。

  • 评估函数、偶数或宏时可能出错。

我会使用以下代码:

    Public Function CH05_Generate(Sagsnr As String)

Dim WordApp As Word.Application
Dim Doc As Word.Document
Dim WordPath As String
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim sql As String

Set db = CurrentDb
sql = "SELECT * FROM Projektdata WHERE Sagsnr Like '" & Sagsnr & "'"
Set rst = db.OpenRecordset(sql, dbOpenDynaset)


WordPath = "My path (Can't show this"

Set WordApp = CreateObject("Word.Application")
Set Doc = WordApp.Documents.Add(WordPath)

With Doc
    .FormFields("PName").Result = rst![Projektnavn]
    .FormFields("text").Result = Forms![TD-E-PM200-CH05]!Kommentar
    .FormFields("S3").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q1
    .FormFields("S4").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q2
    .FormFields("S5").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q3
    .FormFields("S6").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q4
    .FormFields("S7").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q5
    .FormFields("S8").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q6
    .FormFields("S9").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q7
    .FormFields("S10").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q8
    .FormFields("S11").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q9
    .FormFields("S12").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q10
    .FormFields("S13").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q11
    .FormFields("S14").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q12
    .FormFields("S15").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q13
    .FormFields("S16").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q14
    .FormFields("S17").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q15
    .FormFields("S18").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q16
    .FormFields("S19").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q17
    .FormFields("S20").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q18
    .FormFields("S21").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q19
    .FormFields("S22").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q20
    .FormFields("S23").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q21
    .FormFields("S24").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q22
    .FormFields("S25").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q23
    .FormFields("S26").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q24
    .FormFields("S27").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q25
    .FormFields("S28").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q26
    .FormFields("S29").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q27
    .FormFields("S30").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q28
    .FormFields("S31").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q29
    .FormFields("S32").Result = Forms![TD-E-PM200-CH05]!sub.Form!Q30
    .FormFields("S33").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q31
    .FormFields("S34").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q32
    .FormFields("S35").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q33
    .FormFields("S36").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q34
    .FormFields("S37").CheckBox.Value = Forms![TD-E-PM200-CH05]!sub.Form!Q35



End With

WordApp.visible = True
WordApp.Activate
WordApp.ActiveDocument.Protect wdAllowOnlyFormFields, True

End Function

我想从“Projektdata”数据库中获取数据,并获取正确的数据“Projektnavn”来填写:

 .FormFields("PName").Result = rst![Projektnavn]

我的数据库结构是这样的:

【问题讨论】:

  • 从错误信息来看,问题在于你如何调用你的函数。你是怎样做的?它直接在事件属性中吗?例如=CH05_Generate(foo, bar) ?
  • ms访问还是sql server?
  • 我这样调用我的函数:=CH05_Generate()
  • SagsnrItemID 来自哪里?它们是否也在您的表单上(例如Kommentar)?
  • 不,他们不是。我有很多“Projektnavn”,它们都有一个 Sagsnr。我已经编辑了我的问题,以便您了解数据库的结构。

标签: vba ms-access-2007


【解决方案1】:
"SELECT *
FROM dbo.Projektdata p
JOIN dbo.Items i ON p.Sagsnr = i.Sagsnr
WHERE ItemID =" & ItemID & " AND p.Sagsnr Like '" & Sagsnr & "'" -- change "," to AND

【讨论】:

  • 哦,是的,我忘了改回来。不过,我仍然收到相同的消息。
【解决方案2】:

我这样调用我的函数:=CH05_Generate()

Public Function CH05_Generate(Sagsnr As String, ItemID As String)

这不起作用 - 函数需要两个参数,您需要在函数调用中传递它们。

【讨论】:

  • 所以我必须这样称呼它:=CH05_Generate(Sagsnr As String, ItemID As String)?
  • @Uppah:不,您必须提供值。如果这些是您表单上的文本框,您可以尝试=CH05_Generate([Sagsnr], [ItemID])。或者您可能需要更详细地解释您实际尝试做的事情。
  • 我要实现的,是点击按钮生成word模板。我需要“Projektdata”数据库/表中的一些东西,所以我必须“连接”到它,但我似乎遇到了错误。
猜你喜欢
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多