Loops accessvba中的循环

Loops accessvba中的循环,loops,ms-access,vba,Loops,Ms Access,Vba,我对访问VBA有点陌生,我的循环有问题 我查阅了各种书籍、网站,询问了各种朋友。目前我正在尝试让用户输入两个字符,然后如果这两个字符等于某个组合,那么它应该等于一个数值,然后在距离计算中使用该值 用户输入的值是字符串,其他所有值都声明为double 我测试了200多个组合,并尝试了case语句、DLookup、do while、do till、if和elseif循环,但都没有成功 我也受到它的限制,无法使用DAO代码 非常感谢您的帮助。我首先建议创建一个表格,正式定义各种字符组合以及每个组合的相

我对访问VBA有点陌生,我的循环有问题

我查阅了各种书籍、网站,询问了各种朋友。目前我正在尝试让用户输入两个字符,然后如果这两个字符等于某个组合,那么它应该等于一个数值,然后在距离计算中使用该值

用户输入的值是字符串,其他所有值都声明为double

我测试了200多个组合,并尝试了
case
语句、
DLookup
do while
do till
if
elseif
循环,但都没有成功

我也受到它的限制,无法使用DAO代码


非常感谢您的帮助。

我首先建议创建一个表格,正式定义各种字符组合以及每个组合的相应值。这样做的优点是,可以很容易地继续维护这些组合,而不是将这些组合定义为查询的一部分或在VBA代码中

这样的表可以简单到包含三个字段:

  • 字符1(文本)
  • 字符2(文本)
  • 数值(数字)

然后,您可以使用有效的组合填充此表:

通过严格定义组合,您可以选择如何提示用户输入这两个字符并获得对应的值

一种非常简单的方法可能是使用带有三个文本框的表单:

这里,前两个文本框是未绑定的,可能被称为
char1
char2
,第三个文本框可能被称为
result
,并且具有控制源属性,该属性等于:

=DLookup("Value", "LookupTable", "char1 = '" & [char1] & "' and char2 = '" & [char2] & "'")
这将产生以下行为:


考虑使用Access作为数据库和GUI应用程序,将200多个组合存储在一个带有相应数值的表中。然后按用户输入进行SQL查询筛选,并将结果值用于所需的计算。下面需要创建和使用四个:表、查询、表单和模块

表格(待定组合)

SQL(无需循环;使用访问表单控制值)

选择c.combn1、c.combn2、c.numeric\u值
来自TBLCombic
其中c.combn1=形式!我的表格!myUserInputField1
c.combn2=形式!我的表格!myUserInputField2
甚至在距离计算公式中传递所需的数值,该公式可以是标准模块中的VBA函数:

选择c.combn1、c.combn2、距离计算(c.数值)作为距离结果
来自TBLCombic
其中c.combn1=形式!我的表格!myUserInputField1
c.combn2=形式!我的表格!myUserInputField2
VBA(放在标准模块中)

公共功能距离计算(num\u值等于长)为双精度
...
距离计算=某个值
端函数

您可以在结果表单按钮或两个文本框上的事件后使用以下类型函数- Dim resultValue为整数 如果DCount(“数值”、“tblCombinations”、“[combn1]=”&Forms!myForm!myUserInputField1&”和[combn2]=”&Forms!myForm!myUserInputField2&“”)大于0,则

否则 Msgbox“不存在此类组合。请检查组合”,vbinformation,“Information”


如果

并且您也未使用任何DAO记录集,则结束!(我认为这是一次试图束缚你的双手,并使用dlookup()代替DAO的reocrdset对你来说是最棒的!你好,李。谢谢你所做的一切!不过我有一个小问题。我输入了所有内容,就像你说的Yoda一样,但由于某种原因它不起作用。我得到了一个错误的名称?你对如何修复它有什么建议吗?再次感谢你的帮助。我真的很感激你晚点。@Divingmickey不客气。我假设
#Name
出现在结果文本框中?如果是,其他两个文本框名为
char1
char2
?是的,#Name?错误出现在文本框中。我有char1=StartNode和char2=EndNode,两者都是字符串。时间是我其余精彩数字的两倍我的表名为NODES。我做错了什么Yoda?您的字段名是
StartNode
&
EndNode
还是您的文本框?还是两者都有?您是否适当地更改了
DLookup
表达式的所有元素,包括
字段名?感谢您的所有帮助。这让我感到非常激动我的头发变白了。不幸的是,我仍然无法得到数字结果。我想这个周末我会染上头发
 id  combn1  combn2  numeric_value
  1       A       B            150  
  2       C       D            225
  3       E       F            100 
  4       G       H             75
  5       I       J            200
...
  resultValue = Dlookup("numeric_value", "tblCombinations", "[combn1] = '" & Forms!myForm!myUserInputField1 & "' and [combn2] = '" & Forms!myForm!myUserInputField2 & "'")

   txtResult = Distance_Calculation(resultValue) 
  txtResult = 0