Ms access Microsoft Access程序中的这行Visual Basic代码是什么意思?
我正在调试一个由微软Access的前同事编写的程序。程序今天突然停止工作,这行代码似乎是导致崩溃的原因。(出现的错误代码是3646,也称为数据类型不匹配)。我没有VB和SQL方面的经验,所以我不确定这是什么意思Ms access Microsoft Access程序中的这行Visual Basic代码是什么意思?,ms-access,vba,Ms Access,Vba,我正在调试一个由微软Access的前同事编写的程序。程序今天突然停止工作,这行代码似乎是导致崩溃的原因。(出现的错误代码是3646,也称为数据类型不匹配)。我没有VB和SQL方面的经验,所以我不确定这是什么意思 NewIndexNumber = Nz(DMax("Mid$([IndexNumbers],5,3)", "QYearOtherRecordList2"), "000") 特别是,我不确定“Mid$([IndexNumbers],5,3])应该做什么。我不知道美元符号是什么意思。顺便说
NewIndexNumber = Nz(DMax("Mid$([IndexNumbers],5,3)", "QYearOtherRecordList2"), "000")
特别是,我不确定“Mid$([IndexNumbers],5,3])应该做什么。我不知道美元符号是什么意思。顺便说一下,索引号只是像“018374”这样的数字字符串。它类似于
Mid()
函数:
Mid$()
函数总是返回一个字符串,并且只对字符串起作用,而Mid()
也对变体起作用。它类似于Mid()
函数:
Mid$()
函数总是返回一个字符串并且只对字符串有效,而Mid()
也对变体有效。Mid$(Something,5,3)
从字符串Something返回3个字符,从位置5开始
例如,?Mid$(“1234567890”,5,3)
返回567
此代码似乎从上一个索引编号中提取了5到7个字符,如果这是Null
,则返回三个零。Mid$(Something,5,3)
从字符串Something返回3个字符,从位置5开始
例如,?Mid$(“1234567890”,5,3)
返回567
这段代码似乎从上一个索引号中提取了5到7个字符,如果这是
Null
,则返回三个零。作为其他两个应答状态,Mid
函数上的$
强制它期望一个字符串输入参数并返回一个字符串值。命令Mid$([IndexNumbers],5,3)
的有效含义是它将返回IndexNumbers
列中的字符5到7
但是,这一行代码(您问题的标题)的完整含义如下:
根据这行代码,您的数据库中有一个名为QYearOtherRecordList2
的查询或表(可能是一个查询)。该代码正在对该查询发出函数调用,该函数将返回该查询的IndexNumbers
列中字符5到7的“最大字符串值”(使用函数)
最后,为了确保NewIndexNumber
包含一个可用值,DMax
被包装在一个函数调用中,这意味着如果出于某种原因DMax
返回一个Null
值(即,您的查询没有返回任何记录,或者现有的indexnumber
值都不超过4个字符)然后我们返回值“000”,以便NewIndexNumber
将包含有用的内容
根据我为尝试复制您的错误而执行的一些快速测试,我怀疑可能是QYearOtherRecordList2
查询已更改(或者在此语句之前有其他代码影响QYearOtherRecordList2
)这就是错误的真正原因3464-条件表达式中的数据类型不匹配。
顺便说一句,在您的评论中,您提到了该消息的正确错误号,并且在您更新的帖子中,您键入了错误号。但在这两种情况下,您都截断了错误消息,这是您在寻求帮助时不应该做的事情。标准表达式中消息的最后部分实际上是非常重要的了解问题所在以及如何调试此问题非常重要
信息的这一部分指出了错误实际上存在于标准
中的可能性,也被称为where
子句或条件。这就是为什么我认为问题与发生错误的代码行间接相关。该代码行没有根本性的错误,但该代码行没有根本性的错误代码确实依赖于QYearOtherRecordList2
查询成功地返回数据集而不出错
所以,请,请,在未来,准确地包括错误号码和完整的错误消息文本,以帮助我们帮助您
谢谢。当其他两个应答状态时,
Mid
函数上的$
强制它期望一个字符串输入参数并返回一个字符串值。以及命令的该部分Mid$([IndexNumbers],5,3)的有效含义
是指它将返回索引编号
列中的字符5到7
但是,这一行代码(您问题的标题)的完整含义如下:
根据这行代码,您的数据库中有一个名为QYearOtherRecordList2
的查询或表(可能是一个查询)。该代码正在对该查询发出函数调用,该函数将返回该查询的IndexNumbers
列中字符5到7的“最大字符串值”(使用函数)
最后,为了确保NewIndexNumber
包含一个可用值,DMax
被包装在一个函数调用中,这意味着如果出于某种原因DMax
返回一个Null
值(即,您的查询没有返回任何记录,或者现有的indexnumber
值都不超过4个字符)然后我们返回值“000”,以便NewIndexNumber
将包含有用的内容
根据我为尝试复制错误而执行的一些快速测试,我怀疑可能是QYearOtherRecordList2
查询已更改(或者在此语句之前可能有其他代码影响QYearOtherRecordList2
的结果),这才是错误的真正原因
'Example output sample
'Lets assume that the query, with the Mid$ function applied returns the following rows
001
034
555
142
099
'Then, the DMax function would return just the following as the Max of those values
555