程序功能:用combo1显示某条件,按条件查询数据库的程序,代码如下:
Private Sub cmdOK_Click()
查询条件
sQSql = "select dm_gl.mc,outh.outh_no,dm_kh.dm,dm_kh.mc,dm_ck.dm,dm_ck.mc,dm_wz.dm,dm_wz.mc,outh.sl,outh.out_danj,outh.o_zk,outh.o_zke,outh.jsfk,outh.jz,outh.yf,outh.bz from outh inner join dm_ywy on outh.ywman = dm_ywy.dm inner join dm_kh on outh.khdm = dm_kh.dm inner join dm_ck on outh.ckdm = dm_ck.dm inner join dm_wz on outh.wzdm = dm_wz.dm where outh.ywman = '" & Trim(Combo1(0).ItemData(Combo1(0).ListIndex)) & "'" /是不是应该改这 If Trim(sQSql) = "" Then
MsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
frmInquireOYWY.txtSQL = sQSql
Me.Hide
frmInquireOYWY.Show 0
End If
End Sub 调用窗体,代码:
Private Sub Form_Load()
txtSQL = "select dm_ywy.dm,dm_ywy.mc from outh inner join dm_ywy on outh.ywman = dm_ywy.dm"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If Not mrc.EOF Then
With mrc
Do While Not .EOF
Combo1(0).AddItem .Fields(1)
Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0)
.MoveNext
Loop
End With
Combo1(0).ListIndex = 0
Else
cmdOk.Enabled = False
End If
mrc.Close
txtSQL = "select distinct datepart(yy,out_date) from outh"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.Close
End Sub请问Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0) 是什么意思?程序运行时,combo1中显示重复信息,应该如何修改?
Private Sub cmdOK_Click()
查询条件
sQSql = "select dm_gl.mc,outh.outh_no,dm_kh.dm,dm_kh.mc,dm_ck.dm,dm_ck.mc,dm_wz.dm,dm_wz.mc,outh.sl,outh.out_danj,outh.o_zk,outh.o_zke,outh.jsfk,outh.jz,outh.yf,outh.bz from outh inner join dm_ywy on outh.ywman = dm_ywy.dm inner join dm_kh on outh.khdm = dm_kh.dm inner join dm_ck on outh.ckdm = dm_ck.dm inner join dm_wz on outh.wzdm = dm_wz.dm where outh.ywman = '" & Trim(Combo1(0).ItemData(Combo1(0).ListIndex)) & "'" /是不是应该改这 If Trim(sQSql) = "" Then
MsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
frmInquireOYWY.txtSQL = sQSql
Me.Hide
frmInquireOYWY.Show 0
End If
End Sub 调用窗体,代码:
Private Sub Form_Load()
txtSQL = "select dm_ywy.dm,dm_ywy.mc from outh inner join dm_ywy on outh.ywman = dm_ywy.dm"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If Not mrc.EOF Then
With mrc
Do While Not .EOF
Combo1(0).AddItem .Fields(1)
Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0)
.MoveNext
Loop
End With
Combo1(0).ListIndex = 0
Else
cmdOk.Enabled = False
End If
mrc.Close
txtSQL = "select distinct datepart(yy,out_date) from outh"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.Close
End Sub请问Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0) 是什么意思?程序运行时,combo1中显示重复信息,应该如何修改?
End With 在你程序里有什么意义,直接引用mrc不就行了吗。fields(0)表示第一个字段。而且
MsgBox "请设置查询条件!", vbOKOnly + vbExclamation, "警告"
Exit Sub
就没有执行的可能
Exit Sub 还有什么要改吗?
mrc.movenext
debug.print mrc.fields(0);mrc.fields(1)
mrc.movefrist
看看是否数据一致
另外,为什么不用datacombo
txtSQL = "select dm_ywy.dm,dm_ywy.mc from outh inner join dm_ywy on outh.ywman = dm_ywy.dm GROUP BY dm_ywy.mc" '********************
Set mrc = ExecuteSQL(txtSQL, MsgText)
If Not mrc.EOF Then
With mrc
Do While Not .EOF
Combo1(0).AddItem .Fields(1)
Combo1(0).ItemData(Combo1(0).NewIndex) = .Fields(0)
.MoveNext
Loop
End With