2016-05-13 67 views
1

我在Access中创建一个表单,该表单将用作教室材料的订单。我列出了可用的资源,并在用户输入他们需要的数量的资源旁边有一个文本框。使用字符串和变量时获取.value属性

我的VBA代码检查是否有任何条目通过使用以下。 (我使用NZ(),以允许空的结果):

QuantCheck = Nz(Box1.Value, 0) + Nz(Box2.Value, 0) + Nz(Box3.Value, 0) 

其中“QuantCheck”是我使用中开始工作流程中的IF语句中的变量:

If QuantCheck > 0 Then 

我想通过使用某种循环语句来清理它,但是我无法从字符串中提取.value。我喜欢像下面这样,我可以纳入一个循环:

"Box"&VariableNumber.Value 

从我可以告诉,我不能够使用字符串(串联或以其他方式)作为基地.value的电话。

有趣的是,有一种在使用SQL语句时完成此操作的方法。我有这个其他地方,其中很好地工作代码:

SQLStr = "INSERT INTO OrderRequests VALUES (cbSchool, txtName, Title" & x & ".caption, Box" & x & ")" 

在这里,我有一个变量“x”,这跟每个循环改变标题行,以及箱线增加。

任何帮助表示赞赏。

回答

0

你可以通过检查名称的控制循环,然后如果它是你想要的对它采取行动,这是你在想什么?

Dim Ctrl As Control 

For Each Ctrl In Me.Controls 
    If Ctrl.Name = "TxtPath" Then ' "Box" & VariableNumber Then 
     MsgBox Ctrl.Value 
    End If 
Next 
1

我建议你使用控件的Tag属性。将“QuantCheck”放入要包含的任何控件的标签属性中。然后

Function QuantitiesExist(frm As Form) As Boolean 

    Dim Ctrl As Control 

    Const sQUANTCHK As String = "QuantCheck" 

    For Each Ctrl In frm.Controls 
     If Ctrl.Tag = sQUANTCHK Then 
      If Nz(Ctrl.Value) > 0 Then 
       QuantitiesExist = True 
       Exit For 
      End If 
     End If 
    Next Ctrl 

End Function 

现在你得到自我记录代码

If QuantitiesExist(Me) Then 

而当你添加/删除/变更控制,您不必编辑代码。只需使用适当的标签设置新的控件即可。