如何让Access 空文本框参与计算时默认是0,如图碳粉为空,计算时自动变0,别用VB代码,VB我会,请用VBA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让Access 空文本框参与计算时默认是0,如图碳粉为空,计算时自动变0,别用VB代码,VB我会,请用VBA相关的知识,希望对你有一定的参考价值。

我明白了,null+1+1=null 而不是=2,您要解决的是如何把null 变成0.
有2种方法:(本人推荐用第一种方法)

第一:用Nz([碳粉])。当一个 Variant 为 Null 时,使用 Nz 函数可以返回 0、零长度字符串 (" ") 或其他指定值。例如,可以使用该函数将 Null 值转换为其他值并防止它通过表达式扩散。
Nz(variant, [valueifnull])
Nz 函数具有以下参数:
参数说明
variant 数据类型为 Variant 的变量。
Valueifnull 可选参数(除非在查询中使用)。一个 Variant,提供当 variant 参数为 Null 时的返回值。该参数使您能够返回一个除 0 或零长度字符串以外的其他值。
注释 如果在查询的表达式中使用不带 ValueIfNull 参数的 Nz 函数,则对包含空值的字段,其返回结果为零长度字符串。

Nz 函数对可能包含 Null 值的表达式是很有用的。要使表达式即使在包含 Null 值时也能计算得到一个非 Null 值,可使用 Nz 函数来返回 0、零长度字符串或一个自定义的返回值。

另一种方法是用iif()函数。
iif(表达式,value1,value2),表达式为ture返回value1值,为false时返回value2的值。可设为iif(isnull([碳粉]),0,[碳粉])。追问

VBA我不太会用,我用下面的方法,在VB上可以做到,能不能用类似思路,在VBA上做到。为空时,提示无效使用Null,错误指向i = Val(a)+这行
Dim a, b, c, i As Integer
If Me![碳粉] = "" Then
a = 0
Else: a = 碳粉
End If
If Me![墨盒] = "" Then
b = 0
Else: b = 墨盒
End If
If Me![其他配件] = "" Then
c = 0
Else: c = 其他配件
End If
i = Val(a) + Val(b) + Val(c)
合计 = i

追答

有以下几个问题:
1、null 和 "" 是2个不同的值,""代表空字符串,而null代表没有赋值,虽然外观看上去什么都没有,但注意他们的区分。你的 【If Me![碳粉] = "" Then a=0 else a=碳粉 end if 】 表示="" 时a=0,但是,当=null时呢?因为Me![碳粉]是null 而不是"",还是执行了else a=碳粉 的语句,由于me!碳粉是空值,你还是把null值赋予了a。
2、如果a是null值,val(a)也是null值,所以出现“无效使用Null”的错误提示。
3、Dim a, b, c, i As Integer 实际上只有i 定义为整型数值,其余的a,b,c并没有被定义,一个没被定义的数据默认定义为变体变量。
所以你至少要设置If Me![碳粉] = "" or Me![碳粉] is null Then ……
实际上你只要设置 i=nz( Me![碳粉])+na(Me![墨盒])+nz(Me![其他配件]),就行了。

追问

还是没弄明白,拜托你帮我写个完整的程序吧,单击保存自动合计的,文本框为空也能计算,谢谢了,帮人帮到底吧

追答

好的。你应该告诉我:
1、 碳粉、墨盒、其他配件的控件来源是否来源于表?是的话,请告诉我来源于表的那个字段?
2、添加,你是添加新的记录?还是调出下一条记录?
3、表中应该没有“合计”字段吧,你只是想查看每条记录的合计,对吗?

参考技术A 假定你上图是金额需要求和的话,则:
=nz(me.碳粉)+nz(me.墨盒)+nz(me.其他配件)追问

拜托你帮我写个完整的程序吧,单击保存自动合计的,文本框为空也能计算,谢谢了,帮人帮到底吧

追答

me.合计=nz(me.碳粉)+nz(me.墨盒)+nz(me.其他配件)

本回答被提问者采纳

开发工具让PPT具更强大功能

上期回顾:

在PPT中不仅可以通过点击鼠标实现交互响应,还可以输入内容实现交互,本文介绍几种文本框和其他控件组合使用的例子。

先来了解一下文本框控件的属性。

图1:文本框控件

选择文本框控件之后在页面上拖画出矩形区域,在此区域中点击鼠标右键选择“属性表”,可以设置其属性。

开发工具让PPT具更强大功能(二)

图2:文本框控件属性

“Font”属性是字体样式及大小设置,“Text”属性是初始显示在文本框内的内容,默认可以在放映时编辑,如可以在初始显示提示:“请输入数字”,则在“Text”属性中输入“请输入数字”(引号内文字)

一、计算

通过文本框控件可以实现PPT在放映时输入数据,结合一些代码即可实现计算。例:在前两个文本框中输入数字,点击按钮计算出两数之和显示在第三个文本框中。

开发工具让PPT具更强大功能(二)

图3:利用文本框等控件实现计算

方法:

1、插入3个文本框控件,设置字体属性(默认字号太小)

开发工具让PPT具更强大功能(二)

图4:设置文本框属性


2、插入一个标签控件,放置在前两个文本框中间,设置“Caption”属性为“+”,设置“Font”属性将字号放大。

开发工具让PPT具更强大功能(二)

图5:设置标签控件属性

3、插入一个命令按钮,放置在后两个文本框中间,设置“Caption”属性为“=”,设置字体大小。

开发工具让PPT具更强大功能(二)

图6:设置命令按钮属性

4、双击命令按钮打开代码窗口,输入代码:


Private Sub CommandButton1_Click()

TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)

End Sub



开发工具让PPT具更强大功能(二)

图7:命令代码

注:

(1)按照此方法,修改其中一些属性及代码也可以进行其他运算,如乘法。

(2)标签控件可以用普通文本框代替。

(3)如控件名称修改了,需在代码中做对应的修改。

二、判断

例:在两个文本框中数据数据,点击标签控件判断其大小。

开发工具让PPT具更强大功能(二)

图8:利用文本框等控件实现判断大小

方法:

1、添加两个文本框控件,设置“Font”属性增大字体大小。

2、在两个文本框中间添加一个标签控件,设置“Font”属性增大字体大小,设置“Caption”属性为“判断大小”

图9:设置标签控件属性

3、双击标签打开代码窗口,输入代码:


Private Sub Label1_Click()

If Val(TextBox1.Text) > Val(TextBox2.Text) Then

Label1.Caption = ">"

ElseIf Val(TextBox1.Text) < Val(TextBox2.Text) Then

Label1.Caption = "<"

Else

Label1.Caption = "="

End If

End Sub



图10:设置标签控件代码


总结:用几种简单的控件结合一些代码就可以使PPT具有强大的交互功能,实现“1+1>3”的效果。

以上是关于如何让Access 空文本框参与计算时默认是0,如图碳粉为空,计算时自动变0,别用VB代码,VB我会,请用VBA的主要内容,如果未能解决你的问题,请参考以下文章

根据另一个文本框填充文本框值 - Ms Access

vba inputBox:如何用空文本框区分“取消”和“确定”之间的区别

Access 2007 文本框被视为空,而实际上不是

如何设置access数据表的字段默认值为0

如何使用 Access VBA 将具有默认值的未绑定文本框的值设置为空字符串

怎么设置access查询中空值为0?