【问题标题】:How to get a variable fieldname?如何获取变量字段名?
【发布时间】:2022-01-17 19:29:26
【问题描述】:

我有一条名为 ouderecord 的记录,我从一个带有 SQL 语句的表中得到。

我有这个代码:

strSQL = "SELECT * from tblS1lijst where id = " & Keuzelijst3.Column(0)
Debug.Print strSQL
ouderecord = CurrentDb.OpenRecordset(strSQL)
Tmpstr = Mid(Keuzelijst3.Column(2), InStr(1, Keuzelijst3.Column(2), ".") + 1, _
  Len(Keuzelijst3.Column(2)) - InStr(1, Keuzelijst3.Column(2), ".") - 1)
veld_naam = "[" & Tmpstr & "]"
tekst = "ouderecord!" & veld_naam
Debug.Print tekst

当我将鼠标悬停在直接窗口中的文本 (ouderecord![Situatie]) 上时,我会看到该字段的内容。如何在变量中获取该内容?

我想要“Situatie”作为变量。

【问题讨论】:

  • Dim s As String / s = ouderecord![Situatie] 其中s 的类型必须正确。
  • 但我想将“Situatie”作为变量。

标签: vba ms-access


【解决方案1】:

如果字段名是静态的,可以这样操作

Dim tekst As String

tekst = Nz(ouderecord![Situatie])

tekst = Nz(ouderecord!Situatie)

[] 仅在列名包含无效字符(如空格字符或连字符)或与关键字冲突时才需要。

但如果名称是在变量中动态给出的,则必须访问 Recordset 的默认属性 Fields

tekst = Nz(ouderecord(veld_naam))

这是一样的

tekst = Nz(ouderecord.Fields(veld_naam).Value)

其中veld_naam 必须是字段的名称,而列名没有转义[]:例如,veld_naam = "Situatie"

注意,参数可以是表示字段名称的String,也可以是表示查询中列索引的Integer。

Nz 函数将 NULL 值转换为给定类型的适当值。在这种情况下,它为 NULL 返回一个空字符串。

【讨论】:

    【解决方案2】:

    Nz 成功了!
    我现在有

    strSQL = "SELECT * from tblS1lijst where id = " & Keuzelijst3.Column(0)
    Debug.Print strSQL
    ouderecord = CurrentDb.OpenRecordset(strSQL)
    Tmpstr = Mid(Keuzelijst3.Column(2), InStr(1, Keuzelijst3.Column(2), ".") + 1, Len(Keuzelijst3.Column(2)) - InStr(1, Keuzelijst3.Column(2), ".") - 1)
    veld_naam = "[" & Tmpstr & "]"
    tekst = "ouderecord!" & veld_naam
    tekst = Nz(ouderecord(veld_naam))
    
    Debug.Print tekst
    

    这行得通。

    【讨论】:

    • 您可以拨打tekst = "ouderecord!" & veld_naam。此外,字段名称现在必须不包含 []veld_naam = Tmpstr
    • 即使字段名中有空格,我可以去掉 [ 和 ] 吗?
    • 如果你像rs![The name]一样直接传递它,你必须保留它们,因为它不会编译,因为VBA不知道名字的结尾。 VBA 假定它在空格处结束。请注意,[ ] 只是分隔符,它们不是名称的一部分。因此它们不能包含在名称变量中:veld_naam = "The name": tekst = rs(veld_naam)
    • 难以置信,您能以多快的速度解决这个问题。我简化了代码并删除了临时字符串和 [].. 现在剩下的......
    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2012-07-27
    • 1970-01-01
    • 2010-12-27
    • 2012-03-09
    相关资源
    最近更新 更多