我做的一个VB窗体上有7个datacombo控件 分别对应显示一张数据表的7个字段 我想达到的要求是单击其中任意一个的下拉箭头入能显示该字段的所以记录, 但是当单击选中任意一个或者自己输入记录的内容时 其他6个datacombo就只显示同一条记录的对应字段的内容 下面是我写的一个datacombo控件对应的代码 我想问下这样写有问题没有?还有就是我是不是得这样再写六个?是不是还要写7个Adodc的Refresh方法
Ado_Cnumber.ConnectionString = Conn
Ado_Cnumber.RecordSource = "Select * From Cargo Order By CId"
Ado_Ccode.Refresh
Ado_Cname.Refresh
Ado_Ctype.Refresh
Ado_Cunit.Refresh
Ado_Cwsprice.Refresh
Ado_Csrprice.Refresh
Set dco_Cnumber.RowSource = Ado_Cnumber
dco_Cnumber.ListField = "Cnumber"
dco_Cnumber.BoundColumn = "CId"
Ado_Cnumber.ConnectionString = Conn
Ado_Cnumber.RecordSource = "Select * From Cargo Order By CId"
Ado_Ccode.Refresh
Ado_Cname.Refresh
Ado_Ctype.Refresh
Ado_Cunit.Refresh
Ado_Cwsprice.Refresh
Ado_Csrprice.Refresh
Set dco_Cnumber.RowSource = Ado_Cnumber
dco_Cnumber.ListField = "Cnumber"
dco_Cnumber.BoundColumn = "CId"
private sub datacombo_click(index as integer)
dim intTemp as integer
dim I as integer intTemp=datacombo(index).listindex '取你操作的datacombo的listindex for i = 0 to ubound(datacombo)
datacombo(i).listindex = intTemp '全部datacombo的listindex 相同
next i
end sub
七个datacombo分别显示 数据表的七个字段的
只写一次 click 事件.如1楼所说.如果你一定要用七个不同名字的表示.那就可有写七个事件了.
If Len(Trim(dco_Ccode.Text)) > 0 Then
Ado_Ccode.ConnectionString = Conn
Ado_Ccode.RecordSource = "Select * From Cargo Where CId=" + Trim(dco_Ccode.BoundText()) + " Order By CId"
Ado_Ccode.Refresh
Set dco_Ccode.RowSource = Ado_Ccode
dco_Ccode.ListField = "Ccode"
dco_Ccode.BoundColumn = "CId"
dco_Ccode.Text = ""
End If
End Sub
这是我写的一个Refresh方法 如果按这样的话 那7个datacombo都得分别命名了 还有就是我按照一楼说的把里面的datacombo换成我命名的了 但是会报错 说错误的阐述号或者无效的属性赋值 这是个什么问题
private sub datacombo_click(index as integer)
dim intTemp as integer
dim I as integer intTemp=datacombo(index).listindex '取你操作的datacombo的listindex for i = 0 to ubound(datacombo)
datacombo(i).listindex = intTemp '全部datacombo的listindex 相同
next i
end sub如果分别命名
private sub datacombo1_click()
dim intTemp as integer intTemp=datacombo1.listindex '取你操作的datacombo的listindex datacombo2.listindex = intTemp '全部datacombo的listindex 相同
datacombo3.listindex = intTemp
datacombo4.listindex = intTemp
datacombo5.listindex = intTemp
datacombo6.listindex = intTemp
datacombo7.listindex = intTemp
end subprivate sub datacombo2_click()
dim intTemp as integer intTemp=datacombo2.listindex '取你操作的datacombo的listindex datacombo1.listindex = intTemp'全部datacombo的listindex 相同
datacombo3.listindex = intTemp
datacombo4.listindex = intTemp
datacombo5.listindex = intTemp
datacombo6.listindex = intTemp
datacombo7.listindex = intTemp
end subprivate sub datacombo3_click()
dim intTemp as integer intTemp=datacombo3.listindex '取你操作的datacombo的listindex datacombo1.listindex = intTemp
datacombo2.listindex = intTemp '全部datacombo的listindex 相同
datacombo4.listindex = intTemp
datacombo5.listindex = intTemp
datacombo6.listindex = intTemp
datacombo7.listindex = intTemp
end sub
private sub datacombo4_click()
dim intTemp as integer intTemp=datacombo4.listindex '取你操作的datacombo的listindex datacombo1.listindex = intTemp
datacombo2.listindex = intTemp '全部datacombo的listindex 相同
datacombo3.listindex = intTemp
datacombo5.listindex = intTemp
datacombo6.listindex = intTemp
datacombo7.listindex = intTemp
end subprivate sub datacombo5_click()
dim intTemp as integer intTemp=datacombo5.listindex '取你操作的datacombo的listindex datacombo1.listindex = intTemp
datacombo2.listindex = intTemp '全部datacombo的listindex 相同
datacombo3.listindex = intTemp
datacombo4.listindex = intTemp
datacombo6.listindex = intTemp
datacombo7.listindex = intTemp
end subprivate sub datacombo6_click()
dim intTemp as integer intTemp=datacombo6.listindex '取你操作的datacombo的listindex datacombo1.listindex = intTemp
datacombo2.listindex = intTemp '全部datacombo的listindex 相同
datacombo3.listindex = intTemp
datacombo4.listindex = intTemp
datacombo5.listindex = intTemp
datacombo7.listindex = intTemp
end sub
private sub datacombo7_click()
dim intTemp as integer intTemp=datacombo7.listindex '取你操作的datacombo的listindex datacombo1.listindex = intTemp
datacombo2.listindex = intTemp '全部datacombo的listindex 相同
datacombo3.listindex = intTemp
datacombo4.listindex = intTemp
datacombo5.listindex = intTemp
datacombo6.listindex = intTemp
end sub呵呵,是不是很恐怖?
Dim intTemp As Integer
Dim i As Integer intTemp = DataCombo(index).ListIndex '取操作的datacombo的listindex For i = 0 To UBound(dco_Cnumber)
DataCombo(i).ListIndex = intTemp '全部datacombo的listindex 相同
Next i
End SubPrivate Sub Refresh_Cnumber()
If Len(Trim(DataComo(0).Text)) > 0 Then
Ado_Cnumber.ConnectionString = Conn
Ado_Cnumber.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(0).BoundText()) + " Order By CId"
Ado_Cnumber.Refresh
Set DataComo(0).RowSource = Ado_Cnumber
DataComo(0).ListField = "Cnumber"
DataComo(0).BoundColumn = "CId"
DataComo(0).Text = ""
End If
End Sub
Private Sub Refresh_Ccode()
If Len(Trim(DataComo(1).Text)) > 0 Then
Ado_Ccode.ConnectionString = Conn
Ado_Ccode.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(1).BoundText()) + " Order By CId"
Ado_Ccode.Refresh
Set DataComo(1).RowSource = Ado_Ccode
DataComo(1).ListField = "Ccode"
DataComo(1).BoundColumn = "CId"
DataComo(1).Text = ""
End If
End Sub
Private Sub Refresh_Cname()
If Len(Trim(DataComo(2).Text)) > 0 Then
Ado_Cname.ConnectionString = Conn
Ado_Cname.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(2).BoundText()) + " Order By CId"
Ado_Cname.Refresh
Set DataComo(2).RowSource = Ado_Cname
DataComo(2).ListField = "Cname"
DataComo(2).BoundColumn = "CId"
DataComo(2).Text = ""
End If
End Sub
Private Sub Refresh_Ctype()
If Len(Trim(DataComo(3).Text)) > 0 Then
Ado_Ctype.ConnectionString = Conn
Ado_Ctype.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(3).BoundText()) + " Order By CId"
Ado_Ctype.Refresh
Set DataComo(3).RowSource = Ado_Ctype
DataComo(3).ListField = "Ctype"
DataComo(3).BoundColumn = "CId"
DataComo(3).Text = ""
End If
End Sub
Private Sub Refresh_Cunit()
If Len(Trim(DataComo(4).Text)) > 0 Then
Ado_Cunit.ConnectionString = Conn
Ado_Cunit.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(4).BoundText()) + " Order By CId"
Ado_Cunit.Refresh
Set DataComo(4).RowSource = Ado_Cunit
DataComo(4).ListField = "Cunit"
DataComo(4).BoundColumn = "CId"
DataComo(4).Text = ""
End If
End Sub
Private Sub Refresh_Cwsprice()
If Len(Trim(DataComo(5).Text)) > 0 Then
Ado_Cwsprice.ConnectionString = Conn
Ado_Cwsprice.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(5).BoundText()) + " Order By CId"
Ado_Cwsprice.Refresh
Set DataComo(5).RowSource = Ado_Cwsprice
DataComo(5).ListField = "Cwsprice"
DataComo(5).BoundColumn = "CId"
DataComo(5).Text = ""
End If
End Sub
Private Sub Refresh_Csrprice()
If Len(Trim(DataComo(6).Text)) > 0 Then
Ado_Csrprice.ConnectionString = Conn
Ado_Csrprice.RecordSource = "Select * From Cargo Where CId=" + Trim(DataComo(6).BoundText()) + " Order By CId"
Ado_Csrprice.Refresh
Set DataComo(6).RowSource = Ado_Csrprice
DataComo(6).ListField = "Csrprice"
DataComo(6).BoundColumn = "CId"
DataComo(6).Text = ""
End If
End Sub
Dim intTemp As Integer
Dim i As Integer intTemp = DataCombo(index).ListIndex '取操作的datacombo的listindex For i = 0 To UBound(DataCombo) ——这里的我改正了
DataCombo(i).ListIndex = intTemp '全部datacombo的listindex 相同
Next i
End Sub
Dim intTemp As Integer
Dim i As Integer intTemp = DataCombo(index).ListIndex '取操作的datacombo的listindex For i = 0 To UBound(dco_Cnumber) ——这里的我改正了
DataCombo(i).ListIndex = intTemp '全部datacombo的listindex 相同
Next i
End Sub
datacombo要改成你自己的名字
和下面一样修改
Private Sub dco_Cnumber_click(index As Integer)————这里出错
Dim intTemp As Integer
Dim i As Integer
if not blnIsClick then '加一个判断,防止相互调用
blnIsClick=true intTemp = DataCombo(index).ListIndex '取操作的datacombo的listindex For i = 0 To UBound(dco_Cnumber) ——这里的我改正了
DataCombo(i).ListIndex = intTemp '全部datacombo的listindex 相同
Next i blnIsClick =false
end ifEnd Sub
datacombo要改成你自己的名字
和下面一样修改
Dim intTemp As Integer
Dim i As Integer
if not blnIsClick then '加一个判断,防止相互调用
blnIsClick=true intTemp = DataCombo(index).ListIndex '取操作的datacombo的listindex For i = 0 To UBound(dco_Cnumber) ——这里的我改正了
DataCombo(i).ListIndex = intTemp '全部datacombo的listindex 相同
Next i blnIsClick =false
end if End Sub
datacombo要改成你自己的名字
和下面一样修改