if statment with var actual text

时间:2017-11-18 21:38:08

标签: vba ms-access

我需要一些Access VBA的帮助。 我需要从用户输入中定义表单中的变量,并根据选择使用该变量创建If语句。

这样的事情:

'defining var
if text.value = 12 then
ST = "If Not HasValue(Forms!co.Theme) Or Not HasValue(Forms!co.cxlogin) Then"
else
ST = "If Not HasValue(Forms!co.message) Or Not HasValue(Forms!co.fone) Or Not HasValue(Forms!co.cxlogin) Then"
end if

然后,在另一种形式中,调用var和"注入"声明中的var ......

ST            'here i like to have the actual text in the var so i can build the statement
else
end if 

HasValue函数在一个模块中运行良好,我也声明var Public所以我可以从我需要的任何形式调用它:

Option Compare Database
public ST as string

我拍摄月亮,还是真的很容易,而我却无法看到它?

2 个答案:

答案 0 :(得分:0)

从技术上讲,你可以动态编写代码,但它很复杂,可能会导致很多问题,我可以保证有另一种方法来完成你需要做的事情。

没有看到更多的代码&我无法确定的形式,但也许一些嵌套的If会更好,像这样:

Option Compare Database
Option Explicit 'always try to use this option too (for unrelated reasons!)

Public myFlag As Boolean

...然后......

If Text.Value = 12 Then myFlag = True Else myFlag = False

...然后......

If myFlag Then
    If Not HasValue(Forms!co.Theme) Or Not HasValue(Forms!co.cxlogin) Then
        '…_do something here_…
    Else
        '…_do something here_…
    End If
Else
    If Not HasValue(Forms!co.Message) Or Not HasValue(Forms!co.fone) Or Not HasValue(Forms!co.cxlogin) Then
        '…_do something here_…
    Else
        '…_do something here_…
    End If
End If

另外,HasValue只是检查表单上的控件是否有值?如果是这样,另一种完成同样事情的方法就是:

If myFlag Then
    If Nz(Forms!co.Theme, "") = "" Or Nz(Forms!co.cxlogin, "") = "" Then
        '…_do something here_…
    Else
        '…_do something here_…
    End If
Else
    If Nz(Forms!co.Message, "") = "" Or Nz(Forms!co.fone, "") = "" Or Nz(Forms!co.cxlogin, "") = "" Then
        '…_do something here_…
    Else
        '…_do something here_…
    End If
End If

答案 1 :(得分:0)

您可以存储结果:

df['b'] = pd.Series(data=pd.NaT, index=df.index)
df.insert(column='b', loc=0, value=pd.NaT)

然后使用它:

Dim b As Boolean

If text.value = 12 Then
    b = Not HasValue(Forms!co.Theme) Or Not HasValue(Forms!co.cxlogin)
Else
    b = Not HasValue(Forms!co.message) Or Not HasValue(Forms!co.fone) Or Not HasValue(Forms!co.cxlogin)
End If