Office中国论坛/Access中国论坛
标题:
如何让列表框的选定行在添加物料以后焦点不变?
[打印本页]
作者:
laiguiyou
时间:
2006-6-15 05:00
标题:
如何让列表框的选定行在添加物料以后焦点不变?
如下图: 从未采购清单列表中选定一条数据添加到采购单中,当按[新增物料]按钮后,为何原先在列表框中的焦点总是跳到第一条记录,这样就不知道哪些物料添加了,用什么方法使原来的焦点不变,这样就可以一路点下.我在新增物料事件中并没有刷新列表框啊
[attach]18493[/attach]
作者:
qlm
时间:
2006-6-15 05:21
不刷新应该不会吧?
作者:
laiguiyou
时间:
2006-6-15 05:28
是没有刷新
作者:
laiguiyou
时间:
2006-6-15 05:31
Private Sub Command28_Click() '新增物料事件
On Error GoTo Err_Command28_Click
If IsNull(实际采购量) Then
MsgBox "请输入采购数量,否则不能添加数据", vbInformation, "提示"
Cancel = -1
End If
If [Forms]![采购单]![审核] = -1 Then
MsgBox "此单已审核,不能新增数据", vbCritical, "警告"
Exit Sub
Else
DoCmd.GoToRecord , , acNewRec
DoCmd.SetWarnings False
DoCmd.OpenQuery "库存清单更新"
'Me.List26.Requery
'Me.List78.Requery
End If
Me.List29.Requery
Me.List26.SetFocus
Exit_Command28_Click:
Exit Sub
Err_Command28_Click:
MsgBox Err.Description
Resume Exit_Command28_Click
End Sub
Private Sub List26_Click() '列表框单击事件
Dim a As Integer
a = MsgBox("是否添加此笔数据到采购单中", vbOK + vbQuestion, "提示")
If a = vbOK Then
Me.订单号 = List26.Column(0)
Me.产品代号 = List26.Column(8)
Me.材料编号 = List26.Column(9)
Me.材料名称 = List26.Column(3)
Me.规格 = List26.Column(4)
Me.记账单位 = List26.Column(5)
Me.数量 = List26.Column(7)
Me.客户编号 = List26.Column(10)
Me.采购单价.SetFocus
Me.采购单价 = Me.单价
Me.库存 = DLookup("[数量]", "库存清单", "[材料编号]=" & 材料编号.Value)
Me.随机库存 = IIf(Nz([库存数量], 0) - Nz([数量], 0) < 0, "0", Nz([库存数量], 0) - Nz([数量], 0))
Me.实际采购量 = IIf(Nz([数量], 0) - Nz([库存数量], 0) < 0, "0", Nz([数量], 0) - Nz([库存数量], 0))
End If
End Sub
作者:
laiguiyou
时间:
2006-6-15 05:37
会不会这里有问题:
Private Sub Form_Current()
Me.AllowEdits = 0
If Me.Toggle83.Caption = "裁片采购" Then
Me.Label75.Caption = "库存"
Me.Label15.Caption = "计划量"
Me.Label58.Caption = "规格"
Me.刀模编号.Visible = 0
Me.刀模尺寸.Visible = 0
Me.数量.Visible = -1
Me.库存.Visible = -1
Else
Me.刀模编号.Visible = -1
Me.刀模尺寸.Visible = -1
Me.数量.Visible = 0
Me.库存.Visible = 0
Me.Label75.Caption = "刀模编号"
Me.Label15.Caption = "刀模尺寸"
Me.Label58.Caption = "布料规格"
Me.List78.Visible = False
Me.List26.Visible = -1
Me.Combo34.Visible = True
Me.类别.Visible = True
End If
End Sub
作者:
andymark
时间:
2006-6-15 06:32
在添加前先确定选定的是那行的,返回时再把Itemdata指向那行就行了
作者:
laiguiyou
时间:
2006-6-15 06:51
版主能否讲讲Itemdata的用法,第一次选定第二行,第三次选定第三行,它是不固定的,
作者:
laiguiyou
时间:
2006-6-15 17:31
难道没人知道吗
作者:
qlm
时间:
2006-6-15 20:17
以下是引用
laiguiyou
在2006-6-15 9:31:00的发言:
难道没人知道吗
建议把例子传上来,不看例子,很难发现问题的。
作者:
laiguiyou
时间:
2006-6-16 03:15
太大,没办法上传,有40多M
作者:
andymark
时间:
2006-6-16 03:54
做个简单的例子
作者:
laiguiyou
时间:
2006-6-16 06:54
[attach]18522[/attach]
本来在新增物料按钮的事件中加上me.list26.requery,这样可以把已采购的物料即时消失掉,只剩下未采购的物料,但这样速度非常的慢,只好等多加几笔数据后,一次性点刷新,但这样,列表中焦点每次都会跳回到第一条,或者还有没有办法,当重复点一条数据时,系统可以提示这条数据已添加,不能新增.用什么方法检测?
[此贴子已经被作者于2006-6-15 22:54:41编辑过]
作者:
laiguiyou
时间:
2006-6-16 17:44
已上传示例,请帮忙看看
作者:
andymark
时间:
2006-6-16 19:57
你的文件太大了,没上传,请按下面代码修改
Dim IntIndex As Integer '这句必须放在FORM的前面
'下面是LIST26的代码
Private Sub List26_Click()
Dim a As Integer
a = MsgBox("是否添加此笔数据到采购单中26", vbOK + vbQuestion, "提示")
If a = vbOK Then
IntIndex = Me.List26.ListIndex '增加这一句
Me.订单号 = List26.Column(0)
Me.产品代号 = List26.Column(8)
Me.材料编号 = List26.Column(9)
Me.材料名称 = List26.Column(3)
Me.规格 = List26.Column(4)
Me.记账单位 = List26.Column(5)
Me.数量 = List26.Column(7)
Me.客户编号 = List26.Column(10)
Me.采购单价.SetFocus
Me.采购单价 = Me.单价
' Me.库存 = DLookup("[数量]", "库存清单", "[材料编号]=" & 材料编号.Value)
'Me.随机库存 = IIf(Nz([库存数量], 0) - Nz([数量], 0) < 0, "0", Nz([库存数量], 0) - Nz([数量], 0))
Me.实际采购量 = IIf(Nz([数量], 0) - Nz([库存数量], 0) < 0, "0", Nz([数量], 0) - Nz([库存数量], 0))
End If
End Sub
'下面是刷新的代码
Private Sub Command86_Click()
If Me.Toggle83 = -1 Then
Me.List78.Requery
Else
Me.List26.Requery
Me.List26.Selected(IntIndex + 1) = True '返回上一次选定的记录
End If
End Sub
作者:
laiguiyou
时间:
2006-6-16 20:25
好象还是有问题,其它刷新按钮只是把已采购的物料从list26列表中去掉而已,这时对焦点停在哪里没什么关系,主要是新增物料以后,焦点会从刚才的地方跳到第一条.还有请问版主, Dim IntIndex As Integer '这句必须放在FORM的前面,是放在子窗休的current事件中吗?
作者:
laiguiyou
时间:
2006-6-16 21:24
问题解决了,谢谢版主
作者:
sysyj1030
时间:
2008-5-20 11:27
kankan
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3