Office中国论坛/Access中国论坛

标题: 多选列表框赋值给子窗体的问题? [打印本页]

作者: wktt6833    时间: 2011-4-18 13:18
标题: 多选列表框赋值给子窗体的问题?
本帖最后由 wktt6833 于 2011-4-18 13:21 编辑

Private Sub cmdok_Click()
'将列表框中的选中的名字批量写入表marktemp
    Dim frm As Form, ctl As Control
    Dim varItm As Variant
    Set frm = Forms!mark
    Set ctl = frm!List2
For Each varItm In ctl.ItemsSelected
      
       myname = ctl.ItemData(varItm)
      
此处 将第一列第一个选中行 赋值给 变量  myname  已成功.
现在的问题是
如何 将第二列第一个选中行 赋值给 变量  myDM
        mydm =
        
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset("marktemp", dbOpenDynaset)
        rst.AddNew
        rst("name") = myname
        
        rst("m1") = mydm
        
        rst.Update
        rst.Close
        Set rst = Nothing
    Next varItm
    Me.marktemp_child.Requery
    cmdsave.Enabled = True
    DoCmd.SetWarnings True
End Sub

作者: roych    时间: 2011-4-18 14:02
本帖最后由 roych 于 2011-4-18 14:40 编辑

用Column属性来做……修改后的代码大体如下,貌似比你原先要简单些许(暂时还没做错误处理,你可以根据实际写下):
  1. Dim i As Long
  2. Dim rst As DAO.Recordset
  3. Set rst = CurrentDb.OpenRecordset("marktemp", dbOpenDynaset)
  4. For i = 0 To Me.List2.ListCount - 1
  5. If Me.List2.Selected(i) = True Then
  6. rst.AddNew
  7. rst.Fields("name").Value = Me.List2.Column(0, i)
  8. rst.Fields("m1").Value = Me.List2.Column(1, i)
  9. rst.Fields("m2").Value = Me.List2.Column(2, i)
  10. rst.Update
  11. End If
  12. Next i
  13. rst.Close
  14. Me.marktemp_child.Requery
  15. cmdsave.Enabled = True
  16. DoCmd.SetWarnings True
复制代码
[attach]45373[/attach]
我一般习惯于用ADO……不过,DAO用起来也差不多。


作者: kangking    时间: 2011-4-18 14:29
Private Sub cmdok_Click()

'将列表框中的选中的名字批量写入表marktemp
    Dim i As Integer
   
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("marktemp", dbOpenDynaset)
    With rst
        For i = 0 To Me.List2.ListCount - 1
            If Me.List2.Selected(i) Then
                myname = List2.Column(0, i)
                mydm = List2.Column(1, i)

                rst.AddNew

                rst("name") = myname
                rst("m1") = mydm

                rst.Update
            End If
        Next
    End With
    rst.Close
    Set rst = Nothing

    Me.marktemp_child.Requery

    cmdsave.Enabled = True
    DoCmd.SetWarnings True
End Sub

作者: wktt6833    时间: 2011-4-18 15:02
感谢各位的帮助,昨于在网上找了大半天,没找到 相同的事例,现在问题解决了.
作者: huangdexun    时间: 2012-12-4 00:23
各有千秋,很好的实例。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3