Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Microsoft Access程序中的这行Visual Basic代码是什么意思?_Ms Access_Vba - Fatal编程技术网

Ms access Microsoft Access程序中的这行Visual Basic代码是什么意思?

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])应该做什么。我不知道美元符号是什么意思。顺便说

我正在调试一个由微软Access的前同事编写的程序。程序今天突然停止工作,这行代码似乎是导致崩溃的原因。(出现的错误代码是3646,也称为数据类型不匹配)。我没有VB和SQL方面的经验,所以我不确定这是什么意思

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