首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问,一个和数据的类型和比较的有关问题

2012-01-29 
请教,一个和数据的类型和比较的问题在vba 代码中有如下的内容需要进行一个比较。Dim rs as dao.recordsetse

请教,一个和数据的类型和比较的问题
在vba 代码中有如下的内容需要进行一个比较。

Dim rs as dao.recordset

set rs = CurrentDB.OpenRecordset("table1", dbopentable, dbinconsistent)

rs.movefirst

do until rs.eof
  if rs.[ID TB1] = Nz(Me.myEditBox1.value) then
  msgbox "发现一个重复项目"
  end if
  rs.movenext
loop
... ... ...


我希望在myEditBox这个textbox里面输入一个值后,
用do until循环到table1之中寻找[ID TB1]项是否有同样的值在重复。
(table1中的[ID TB1]字段在table1中是长整数型)

可是却发现,这个比较if rs.[ID TB1] = Nz(Me.myEditBox1.value) 在
rs.[ID TB1] 和 Nz(Me.myEditBox1.value)的值同为一个整数
  (比如591)的时候,
无法被视为相等,msgbox 无法被执行到。

并且在调试中发现
如果把等式 if rs.[ID TB1] = Nz(Me.myEditBox1.value)
无论换成: if 591 = Nz(Me.myEditBox1.value) 
或者换成: if 591 = rs.[ID TB1]
都能够被正确的执行

请问这个比较有什么问题?
正确的写法应该是怎样?

[解决办法]
使用 Nz 函数可以返回 0,或一个空字符串(" ") ,或者当一个 Variant 为 Null 时,该函数返回其他的指定值。例如,您可以使用该函数将 Null 值转换为其他值并防止它通过表达式扩散。

语法

Nz(variant[, valueifnull])

Nz 函数具有如下参数:

参数 说明 
variant 各种数据类型的 Variant。 
Valueifnull 可选参数(除非在查询中使用)。一个 Variant,提供当 variant 参数为 Null 时的返回值。该参数使您能够返回一个值(除了 0 或空字符串以外的其他值)。
注意 如果在查询的表达式中使用了不带 ValueIfNull 参数的 Nz 函数,则对包含 Null 值的字段,其返回结果为空字符串。
 

[解决办法]

探讨

多谢回复!

15楼的
这代码即使通过了问题也很大, 效率低, 易崩溃.

指的是那一段,具体原因是什么?

热点排行