在access表中,输入商品编号,在第二列表中自动调用对应的商品单价应怎

在access表中,输入商品编号,在第二列表中自动调用对应的商品单价应怎样操作

这个需求,通过手工输入商品名称因为比较随意,无法保证每次都能得到预想的结果。建议改为从列表中选商品比较稳妥。下面示范供参考
1)创建商品定价表并录入数据

2)新建一个窗体
添加两个列表框
List1 显示待选商品

属性设置:列数=2;列标题=是;行来源类型=表/查询;行来源=商品定价

List2 显示已选商品、数量,金额列表
属性设置:列数=4;列宽=3cm;1cm;1cm;2cm;列标题=是;
行来源类型=值列表;行来源=商品名;单价;数量;金额; 绑定列=0;
添加3个命令按钮

Command1 清除选定商品列表中的所有项目
Command2 将选定的商品和数量送到选定商品列表框并进行金额汇总
Command1 清除选定商品列表中的一个项目
添加已给标签 Label8 用于显示总价

添加一个文本框 Text1 用于输入商品数量数量

属性设置:格式=常规数字 (防止输入非数字数量);默认值=1
窗体设计视图如下

为该窗体添加下列代码

Option Compare Database
Private Sub Command1_Click() '清空选定列表
Dim i As Long
i = List2.ListCount - 1
Do Until i = 0
List2.RemoveItem (i)
i = i - 1
Loop
Label8.Caption = "金额合计:"
End Sub

Private Sub Command2_Click() '将选定的商品和数量送到选定商品列表框并进行金额汇总
Dim str As String
If IsNull(Text1) Then
MsgBox "请指定商品数量"
Text1.SetFocus
Exit Sub
End If
With List1
If .ListCount < 1 Then Exit Sub
If .ListIndex < 0 Then
MsgBox "请选定一个待选商品(左边)"
.SetFocus
Exit Sub
End If
str = .Column(0) & ";" & .Column(1) & ";" & Text1 & ";" & .Column(1) * Text1
End With
With List2
.AddItem str
.SetFocus
End With
showSum
End Sub

Private Sub Command3_Click() '清除选定商品列表中的一个项目
Dim i As Long
i = List2.ListIndex
If List2.ListCount = 1 Then Exit Sub
If List2.ListIndex < 0 Then Exit Sub
List2.RemoveItem (i + 1)
List2.SetFocus
showSum
End Sub

Private Sub showSum() '编写自定义过程自动显示总价
Dim i As Long, Hz As Double
With List2
For i = 1 To .ListCount - 1
Hz = Hz + Val(.Column(3, i))
Next i
End With
Label8.Caption = "金额合计:" & Hz
End Sub追问

还有没有简单的,就是只在表中做做文章就可以实现

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-27
新建一个查询,在查询中有两个表,一个表示基础数据表,另一个表是记录表;
记录表中的商品编号与基础数据表中的商品编号是多对一的关系,这样在查询的操作界面中,只要输入了记录表中的商品编号,那么该商品在表基础数据表中的单价就会自动出现本回答被网友采纳
相似回答