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