为什么无法取得Combo或List控件的值,老提示“无效属性数组索引”,ListIndex老是-1

cfzx 2013-10-18 12:08:26
环境如下
表格1:门店表jxc_deptcat
表格2:客户表jxc_customer
3个combo,一堆文本框,保存和修改两种按钮。

使用datagrid控件读出数据,然后选择某一行的时候,将该行数据各项赋值给文本框和combo、list等控件。
不管是只有1个combo还是多个combo的窗体,读写数据都会时灵时不灵。或者其中一个combo的值能写入数据库,但另两个combo又变空白了。
本窗体的所属门店在数据库中专门有一个表格,里面有deptcat_id(int),deptcat_name(字符串)。我在combo的list中显示中文,然后再itemData中存储相应的id数字,客户表jxc_customer只存储deptcat_id。
客户类型则是直接在combo的list属性,加了“个人客户”、“单位客户”两种。
希望在修改时,可以自动将combo变为原来存储的数据(DataGrid1_RowColChange,怀疑是这里有问题,大家帮我看下改combo的语句有无错误)

Private Sub Command2_Click()
'修改
Set Rs = Adodc1.Recordset
Conn.BeginTrans
Rs("客户姓名") = Text2.Text
MsgBox ("性别:第" & List2.ListIndex & "项:" & List2.List(List2.ListIndex))
For i = List2.ListCount - 1 To step - 1
If List2.Selected(i) = True Then
Rs("性别") = List2.List(List2.ListIndex) '###20131016严重bug:ListIndex无法取值,总是-1
'Rs("性别") = List2.List(i)
End If
Next i
Rs("客户描述") = Text4.Text
Rs("送货地址") = Text5.Text
Rs("所属门店") = Combo1.ItemData(Combo1.ListIndex)
MsgBox ("客户类型:第" & Combo2.ListIndex & "项:" & Combo2.List(Combo2.ListIndex))
Rs("客户类型") = Combo2.List(Combo2.ListIndex)
Rs("户口类型") = Combo3.List(Combo3.ListIndex)
Rs("手机") = Text6.Text
Rs.Update
'Rs.Close
If MsgBox("你确认修改吗?", vbQuestion + vbYesNo, "确认更改") = vbYes Then
Conn.CommitTrans
Else
Conn.RollbackTrans
End If

End Sub

Private Sub Command4_Click()
'新增
Set Rs = Adodc1.Recordset
Rs.AddNew
Rs("客户姓名") = Text2.Text
Rs("性别") = List2.ItemData(ListIndex)
Rs("客户描述") = Text4.Text
Rs("送货地址") = Text5.Text
Rs("所属门店") = Combo1.ItemData(Combo1.ListIndex)
Rs("客户类型") = Combo2.List(Combo2.ListIndex)
Rs("户口类型") = Combo3.List(Combo3.ListIndex)
Rs("手机") = Text6.Text
Rs.Update
End Sub

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
'Text1.Text = DataGrid1.Columns("客户ID").CellValue(DataGrid1.Bookmark)
Text2.Text = "" & DataGrid1.Columns("客户姓名").CellValue(DataGrid1.Bookmark)
Text4.Text = "" & DataGrid1.Columns("客户描述").CellValue(DataGrid1.Bookmark)
Text5.Text = "" & DataGrid1.Columns("送货地址").CellValue(DataGrid1.Bookmark)
Text3.Text = DataGrid1.Bookmark

If ("" & DataGrid1.Columns("所属门店").CellValue(DataGrid1.Bookmark)) <> "" Then
For i = 0 To Combo1.ListCount - 1
If ("" & DataGrid1.Columns("所属门店").CellValue(DataGrid1.Bookmark)) = Combo1.ItemData(i) Then
Combo1.Text = Combo1.List(i)
Combo1.ItemData(0) = Combo1.ItemData(i)
MsgBox (Combo1.ItemData(i))
Exit For
Else
Combo1.Text = ""
End If
Next
End If

For i = 0 To Combo2.ListCount - 1
If ("" & DataGrid1.Columns("客户类型").CellValue(DataGrid1.Bookmark)) = Combo2.List(i) Then
Combo2.Text = Combo2.List(i)
Combo2.ItemData(0) = Combo1.ItemData(i)
Exit For
Else
Combo2.Text = ""
End If
Next

For i = 0 To Combo3.ListCount - 1
If ("" & DataGrid1.Columns("户口类型").CellValue(DataGrid1.Bookmark)) = Combo3.List(i) Then
Combo3.Text = Combo3.List(i)
Combo3.ItemData(0) = Combo3.ItemData(i)
Exit For
Else
Combo3.Text = ""
End If
Next
Text6.Text = "" & DataGrid1.Columns("手机").CellValue(DataGrid1.Bookmark)
End Sub

Private Sub Form_Load()
'类别
Set Rs = Nothing
Rs.Open "select distinct deptcat_name ,deptcat_id from jxc_deptcat", Conn, adOpenKeyset, adLockOptimistic
If Not Rs.EOF Then
Rs.MoveFirst
'循环将每条记录值加入Combo控件
For i = 0 To Rs.RecordCount - 1
Combo1.AddItem CStr(Rs.Fields("deptcat_name")), i
Combo1.ItemData(i) = Rs.Fields("deptcat_id")
Rs.MoveNext
Next
End If

End Sub


...全文
1011 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2013-11-01
  • 打赏
  • 举报
回复
没有项目被选择的时候就是-1,使用之前,先判断是否是-1
cfzx 2013-10-31
  • 打赏
  • 举报
回复
再顶一下。 在修改记录的界面如何赋值给combo? 需要赋值两个,一个是类型名称(中文),一个是类型ID(数字)。 设想是类型名称存在.list属性内,ID存在.itemdata属性内 哪位大侠能给个例子。
of123 2013-10-31
  • 打赏
  • 举报
回复
Combo1.AddItem "类型名称1" Combo1.ItemData(Combo1.NewIndex) = 1 Combo1.AddItem "类型名称2" Combo1.ItemData(Combo1.NewIndex) = 2
of123 2013-10-21
  • 打赏
  • 举报
回复
Rs("性别") = List2.List(i) '###20131016严重bug:ListIndex无法取值,总是-1
cfzx 2013-10-18
  • 打赏
  • 举报
回复
内容概要:本文围绕“评估多目标跟踪方法”,通过Matlab代码实现,系统研究了9个高度敏捷目标在密集编队飞行中的轨迹生成与测量数据模拟。研究构建了一个高保真的仿真环境,用于测试和验证多目标跟踪算法的性能,重点模拟了目标的高机动性运动行为以及受噪声影响的观测过程,涵盖了轨迹建模、传感器测量仿真、噪声注入与数据处理等关键技术环节。该仿真平台可为雷达系统、无人机集群监控、空中交通管制等领域中的跟踪算法研发提供标准化、可复现的实验基础,尤其适用于评估JPDA、IMM-PF、PHD滤波等先进跟踪算法在复杂动态环境下的鲁棒性与准确性。研究成果具备较强的工程应用价和学术研究意义。; 适合人群:具备一定Matlab编程基础,从事雷达信号处理、多目标跟踪、智能监控、无人机编队控制、自动化与信息工程等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①为多目标跟踪算法(如JPDA、IMM、PHD滤波等)提供标准的高机动目标仿真测试环境;②研究密集编队下高机动目标的轨迹可观测性、测量模糊性与数据关联挑战;③支持学术论文中实验部分的复现、对比分析与算法性能验证。; 阅读建议:建议结合文中提供的Matlab代码深入理解轨迹动力学建模与观测模型的设计逻辑,可通过调整目标机动参数、传感器噪声水平、遮挡概率或引入多传感器融合机制,进一步拓展仿真场景,以全面评估跟踪算法在不同复杂条件下的适应性与鲁棒性。

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧