【问题标题】:Dlookup Function in MS Access 2007 vbaMS Access 2007 vba 中的 Dlookup 函数
【发布时间】:2017-01-16 06:29:25
【问题描述】:

我有一个名为 ISCO68CodeISCO68Title 的文本框都是文本。

当我在 ISCO68Code 中编码时,ISCO68Title 上必须出现与我的另一个表 libISCO1968 中对应的标题。


下面是我的代码生成器:

Private Sub ISCO68Code_AfterUpdate()

ISCO68Title = DLookup("ISCO68Code", "libISCO1968", "[ISCO68Code]=" & ISCO68Code&)

End Sub

很遗憾,我收到一条错误消息:

编译错误:类型声明字符与声明的数据不匹配 输入。

任何帮助都可以。

【问题讨论】:

  • 你是怎么Dim ISCO68Title As 的?你的意思是做一个函数(带输出)吗?
  • @Fionnuala :可能是文本,但不需要引号,只需删除最后一个 &! ;)
  • @R3uK 我将其调暗为字符串 Private Sub ISCO68Code_AfterUpdate() 将 ISCO68Title 调暗为字符串 ISCO68Title = DLookup("ISCO68Code", "libISCO1968", "[ISCO68Code]=" & ISCO68Code) End Sub >
  • 将其调暗为 Variant,请参阅 MSDN 资源:msdn.microsoft.com/en-en/library/office/ff834404.aspx 查看我编辑的答案! ;)

标签: ms-access vba ms-access-2007 lookup


【解决方案1】:

你需要引号告诉变量是文本:

Private Sub ISCO68Code_AfterUpdate()

    ISCO68Title = Nz(DLookup("ISCO68Code", "libISCO1968", "[ISCO68Code]='" & ISCO68Code & "'"))
    ' If the control is a Label, set its Caption:    
    ' ISCO68Title.Caption = Nz(DLookup("ISCO68Code", "libISCO1968", "[ISCO68Code]='" & ISCO68Code & "'"))

End Sub

但是您的函数没有多大意义,因为 DLookup 将在您查找时返回相同的 ISCO68Code ...除非您只是检查它是否存在。

【讨论】:

  • 是的,我想检查一条记录是否存在于其他表中。
  • 好的。然后它将起作用。如果是Label,请修改答案如何设置Caption
【解决方案2】:

试试这个功能:

Private Function ISCO68Code_AfterUpdate(ByVal ISCO68Code As String) As Variant

ISCO68Code_AfterUpdate = DLookup("ISCO68Code", "libISCO1968", "[ISCO68Code] = " & ISCO68Code)

End Function 

Private Sub ISCO68Code_AfterUpdate_test()
Dim ISCO68Title As Variant

ISCO68Title = ISCO68Code_AfterUpdate(ISCO68Code)

'MsgBox ISCO68Title
Debug.Print ISCO68Title

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多