这是对应的源码,我实在是看不出那里的错!高手们帮忙看看!! Option Explicit Dim db As Database Dim rs As DAO.Recordset Dim rs1 As DAO.Recordset Dim rs2 As DAO.Recordset Dim rs3 As DAO.Recordset Dim rs4 As DAO.Recordset Dim rs5 As DAO.Recordset Dim full As String Dim cn As New ADODB.Connection Private Sub Form_Load() '以下是数据连接部分++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ On Error Resume Next cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False" '连接字符串的数据库路径可能有错,最好用相对路径 cn.Open Set db = OpenDatabase(App.Path + "\db.mdb") Set rs = db.OpenRecordset("select 字段1 from A group by 字段1") Set rs1 = db.OpenRecordset("select 字段1 from B group by 字段1") Set rs2 = db.OpenRecordset("select 字段1 from C where 字段1") Set rs3 = db.OpenRecordset("select 字段1 from A group by 字段1") Set rs4 = db.OpenRecordset("select 字段1 from B group by 字段1") Set rs5 = db.OpenRecordset("select 字段1 from C where 字段1") Do While Not rs.EOF Combo1.AddItem rs.Fields("字段1") Combo3.AddItem rs1.Fields("字段1") Combo5.AddItem rs2.Fields("字段1") Combo9.AddItem rs3.Fields("字段1") Combo7.AddItem rs4.Fields("字段1") Combo6.AddItem rs5.Fields("字段1") rs.MoveNext rs1.MoveNext rs2.MoveNext rs3.MoveNext rs4.MoveNext rs5.MoveNext Loop '以上是数据连接部分+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++End Sub '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '以下是录入模板,========可能是出错的地方======================== Private Sub Combo1_Click() Set rs = db.OpenRecordset("select 字段2 from A where 字段1='" & Combo1.Text & "'") Combo2.Clear '由于要重新加入成员,所以把之前的成员清除 Do While Not rs.EOF Combo2.AddItem rs.Fields("字段2") rs.MoveNext Loop Label3.Caption = Combo1.Text End Sub Private Sub Combo3_Click() Set rs1 = db.OpenRecordset("select 字段2 from B where 字段1='" & Combo3.Text & "'") Combo4.Clear '由于要重新加入成员,所以把之前的成员清除 Do While Not rs1.EOF Combo4.AddItem rs1.Fields("字段2") rs1.MoveNext Loop Label8.Caption = Combo3.Text End Sub Private Sub Combo5_Click() Set rs2 = db.OpenRecordset("select * from C where 字段1='" & Combo5.Text & "'") Label10.Caption = Combo5.Text End Sub Private Sub Combo9_Click() Set rs3 = db.OpenRecordset("select 字段2 from A where 字段1='" & Combo9.Text & "'") Combo10.Clear '由于要重新加入成员,所以把之前的成员清除 Do While Not rs3.EOF Combo10.AddItem rs3.Fields("字段2") rs3.MoveNext Loop Label14.Caption = Combo9.Text End Sub Private Sub Combo7_Click() Set rs4 = db.OpenRecordset("select 字段2 from B where 字段1='" & Combo7.Text & "'") Combo8.Clear '由于要重新加入成员,所以把之前的成员清除 Do While Not rs4.EOF Combo8.AddItem rs4.Fields("字段2") rs4.MoveNext Loop Label16.Caption = Combo7.Text End Sub Private Sub Combo6_Click() Set rs5 = db.OpenRecordset("select * from C where 字段1='" & Combo6.Text & "'") Label18.Caption = Combo6.Text '以上是录入模板================================== End Sub '以下是保存模板这里应该不会是有错=========================================== Private Sub Command1_Click() If Combo1 = full Or Combo2 = full Or Text1 = full Or Combo3 = full Or Combo4 = full Or Combo5 = full Then '检测是否未选择信息 MsgBox "信息不完整,请重新选择完整信息" Else cn.Execute "INSERT INTO D(字段1,字段2,字段3,字段4,字段5) valueS('" + Combo1.Text + "','" + Combo2.Text + "','" + Combo3.Text + "','" + Combo4.Text + "','" + Combo5.Text + "')" End If Combo2.Clear Combo4.Clear Text1.Text = "" Label3.Caption = "" Label4.Caption = "" Label5.Caption = "" Label7.Caption = "" Label8.Caption = "" Label9.Caption = "" Label10.Caption = "" Label11.Caption = "" End Sub Private Sub Command2_Click() If Combo8 = full Or Combo10 = full Or Text2 = full Or Combo7 = full Or Combo9 = full Or Text2 = full Then '检测是否未选择信息 MsgBox "信息不完整,请重新选择完整信息" Else cn.Execute "INSERT INTO D(字段1,字段2,字段3,字段4,字段5) valueS('" + Combo9.Text + "','" + Combo10.Text + "','" + Combo7.Text + "','" + Combo8.Text + "','" + Combo6.Text + "')" End IfCombo10.Clear Combo8.Clear Text2.Text = "" Label14.Caption = "" Label15.Caption = "" Label16.Caption = "" Label17.Caption = "" Label18.Caption = "" Label19.Caption = "" Label20.Caption = "" Label21.Caption = "" End Sub
还是没改好:但是应该定位在这段代码: Do While Not rs.EOF Combo1.AddItem rs.Fields("字段1") Combo3.AddItem rs1.Fields("字段1") Combo5.AddItem rs2.Fields("字段1") Combo9.AddItem rs3.Fields("字段1") Combo7.AddItem rs4.Fields("字段1") Combo6.AddItem rs5.Fields("字段1") rs.MoveNext rs1.MoveNext rs2.MoveNext rs3.MoveNext rs4.MoveNext rs5.MoveNext Loop 和: Private Sub Combo1_Click() Set rs = db.OpenRecordset("select 字段2 from A where 字段1='" & Combo1.Text & "'") Combo2.Clear '由于要重新加入成员,所以把之前的成员清除 Do While Not rs.EOF Combo2.AddItem rs.Fields("字段2") rs.MoveNext Loop Label3.Caption = Combo1.Text End Sub Private Sub Combo3_Click() Set rs1 = db.OpenRecordset("select 字段2 from B where 字段1='" & Combo3.Text & "'") Combo4.Clear '由于要重新加入成员,所以把之前的成员清除 Do While Not rs1.EOF Combo4.AddItem rs1.Fields("字段2") rs1.MoveNext Loop Label8.Caption = Combo3.Text End Sub
Do While Not rs.EOF Combo1.AddItem rs.Fields("字段1") Combo3.AddItem rs1.Fields("字段1") Combo5.AddItem rs2.Fields("字段1") Combo9.AddItem rs3.Fields("字段1") Combo7.AddItem rs4.Fields("字段1") Combo6.AddItem rs5.Fields("字段1") rs.MoveNext rs1.MoveNext rs2.MoveNext rs3.MoveNext rs4.MoveNext rs5.MoveNext Loop 这一段代码循环的次数就是rs的记录数,如果rs的recordcount=3,就会导致所有的下拉框赋值都只有3个
但是rs里的纪录在数据库中有26个呀,我在里面写了A-Z,26个字母,应为26条纪录呀!!
问题找到了:假定:有表A-F; rs1-rs5 也就是假如当rs对应A表中的字段1,这个A表中字段1的数据数量决定了和对应rs1,rs2,rs3,rs4,rs5的combox中显示的出来的下拉列表项数目的多少。也就是说如果和rs对应的A表中字段1中只有:张、王、李、赵;这四个纪录的话,那末不管对应rs1的b表字段1,rs2的c表字段1,rs3的d表字段1,rs4的e表字段1,rs5的f表字段1中有对少数据,分别对应的combox的下拉列表项也就只能显示出四项!!而且还有一个大毛病:也就是如果rs1对应的A表中字段1的记录数必须是这几个表中最少的,当rs<rs1andrs2andrs3andrs4andrs5时,对应rs1,rs2,rs3,rs4,rs5的combox中显示的出来的数目=rs的数目,当rs>rs1 OR rs2 OR rs3 OR rs4 OR rs5时出现运行错误,提示为:找不到对应的记录!!! 终于找到毛病了!可是该怎么改呢??请高手出招!!!
Option Explicit
Dim db As Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim rs4 As DAO.Recordset
Dim rs5 As DAO.Recordset
Dim full As String
Dim cn As New ADODB.Connection
Private Sub Form_Load()
'以下是数据连接部分++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
On Error Resume Next
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False" '连接字符串的数据库路径可能有错,最好用相对路径
cn.Open
Set db = OpenDatabase(App.Path + "\db.mdb")
Set rs = db.OpenRecordset("select 字段1 from A group by 字段1")
Set rs1 = db.OpenRecordset("select 字段1 from B group by 字段1")
Set rs2 = db.OpenRecordset("select 字段1 from C where 字段1")
Set rs3 = db.OpenRecordset("select 字段1 from A group by 字段1")
Set rs4 = db.OpenRecordset("select 字段1 from B group by 字段1")
Set rs5 = db.OpenRecordset("select 字段1 from C where 字段1")
Do While Not rs.EOF
Combo1.AddItem rs.Fields("字段1")
Combo3.AddItem rs1.Fields("字段1")
Combo5.AddItem rs2.Fields("字段1")
Combo9.AddItem rs3.Fields("字段1")
Combo7.AddItem rs4.Fields("字段1")
Combo6.AddItem rs5.Fields("字段1")
rs.MoveNext
rs1.MoveNext
rs2.MoveNext
rs3.MoveNext
rs4.MoveNext
rs5.MoveNext
Loop
'以上是数据连接部分+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++End Sub
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'以下是录入模板,========可能是出错的地方========================
Private Sub Combo1_Click()
Set rs = db.OpenRecordset("select 字段2 from A where 字段1='" & Combo1.Text & "'")
Combo2.Clear '由于要重新加入成员,所以把之前的成员清除
Do While Not rs.EOF
Combo2.AddItem rs.Fields("字段2")
rs.MoveNext
Loop
Label3.Caption = Combo1.Text
End Sub
Private Sub Combo3_Click()
Set rs1 = db.OpenRecordset("select 字段2 from B where 字段1='" & Combo3.Text & "'")
Combo4.Clear '由于要重新加入成员,所以把之前的成员清除
Do While Not rs1.EOF
Combo4.AddItem rs1.Fields("字段2")
rs1.MoveNext
Loop
Label8.Caption = Combo3.Text
End Sub
Private Sub Combo5_Click()
Set rs2 = db.OpenRecordset("select * from C where 字段1='" & Combo5.Text & "'")
Label10.Caption = Combo5.Text
End Sub
Private Sub Combo9_Click()
Set rs3 = db.OpenRecordset("select 字段2 from A where 字段1='" & Combo9.Text & "'")
Combo10.Clear '由于要重新加入成员,所以把之前的成员清除
Do While Not rs3.EOF
Combo10.AddItem rs3.Fields("字段2")
rs3.MoveNext
Loop
Label14.Caption = Combo9.Text
End Sub
Private Sub Combo7_Click()
Set rs4 = db.OpenRecordset("select 字段2 from B where 字段1='" & Combo7.Text & "'")
Combo8.Clear '由于要重新加入成员,所以把之前的成员清除
Do While Not rs4.EOF
Combo8.AddItem rs4.Fields("字段2")
rs4.MoveNext
Loop
Label16.Caption = Combo7.Text
End Sub
Private Sub Combo6_Click()
Set rs5 = db.OpenRecordset("select * from C where 字段1='" & Combo6.Text & "'")
Label18.Caption = Combo6.Text
'以上是录入模板==================================
End Sub
'以下是保存模板这里应该不会是有错===========================================
Private Sub Command1_Click()
If Combo1 = full Or Combo2 = full Or Text1 = full Or Combo3 = full Or Combo4 = full Or Combo5 = full Then '检测是否未选择信息
MsgBox "信息不完整,请重新选择完整信息"
Else
cn.Execute "INSERT INTO D(字段1,字段2,字段3,字段4,字段5) valueS('" + Combo1.Text + "','" + Combo2.Text + "','" + Combo3.Text + "','" + Combo4.Text + "','" + Combo5.Text + "')"
End If
Combo2.Clear
Combo4.Clear
Text1.Text = ""
Label3.Caption = ""
Label4.Caption = ""
Label5.Caption = ""
Label7.Caption = ""
Label8.Caption = ""
Label9.Caption = ""
Label10.Caption = ""
Label11.Caption = ""
End Sub
Private Sub Command2_Click()
If Combo8 = full Or Combo10 = full Or Text2 = full Or Combo7 = full Or Combo9 = full Or Text2 = full Then '检测是否未选择信息
MsgBox "信息不完整,请重新选择完整信息"
Else
cn.Execute "INSERT INTO D(字段1,字段2,字段3,字段4,字段5) valueS('" + Combo9.Text + "','" + Combo10.Text + "','" + Combo7.Text + "','" + Combo8.Text + "','" + Combo6.Text + "')"
End IfCombo10.Clear
Combo8.Clear
Text2.Text = ""
Label14.Caption = ""
Label15.Caption = ""
Label16.Caption = ""
Label17.Caption = ""
Label18.Caption = ""
Label19.Caption = ""
Label20.Caption = ""
Label21.Caption = ""
End Sub
Do While Not rs.EOF
Combo1.AddItem rs.Fields("字段1")
Combo3.AddItem rs1.Fields("字段1")
Combo5.AddItem rs2.Fields("字段1")
Combo9.AddItem rs3.Fields("字段1")
Combo7.AddItem rs4.Fields("字段1")
Combo6.AddItem rs5.Fields("字段1")
rs.MoveNext
rs1.MoveNext
rs2.MoveNext
rs3.MoveNext
rs4.MoveNext
rs5.MoveNext
Loop
和:
Private Sub Combo1_Click()
Set rs = db.OpenRecordset("select 字段2 from A where 字段1='" & Combo1.Text & "'")
Combo2.Clear '由于要重新加入成员,所以把之前的成员清除
Do While Not rs.EOF
Combo2.AddItem rs.Fields("字段2")
rs.MoveNext
Loop
Label3.Caption = Combo1.Text
End Sub
Private Sub Combo3_Click()
Set rs1 = db.OpenRecordset("select 字段2 from B where 字段1='" & Combo3.Text & "'")
Combo4.Clear '由于要重新加入成员,所以把之前的成员清除
Do While Not rs1.EOF
Combo4.AddItem rs1.Fields("字段2")
rs1.MoveNext
Loop
Label8.Caption = Combo3.Text
End Sub
Combo1.AddItem rs.Fields("字段1")
Combo3.AddItem rs1.Fields("字段1")
Combo5.AddItem rs2.Fields("字段1")
Combo9.AddItem rs3.Fields("字段1")
Combo7.AddItem rs4.Fields("字段1")
Combo6.AddItem rs5.Fields("字段1")
rs.MoveNext
rs1.MoveNext
rs2.MoveNext
rs3.MoveNext
rs4.MoveNext
rs5.MoveNext
Loop
这一段代码循环的次数就是rs的记录数,如果rs的recordcount=3,就会导致所有的下拉框赋值都只有3个
也就是假如当rs对应A表中的字段1,这个A表中字段1的数据数量决定了和对应rs1,rs2,rs3,rs4,rs5的combox中显示的出来的下拉列表项数目的多少。也就是说如果和rs对应的A表中字段1中只有:张、王、李、赵;这四个纪录的话,那末不管对应rs1的b表字段1,rs2的c表字段1,rs3的d表字段1,rs4的e表字段1,rs5的f表字段1中有对少数据,分别对应的combox的下拉列表项也就只能显示出四项!!而且还有一个大毛病:也就是如果rs1对应的A表中字段1的记录数必须是这几个表中最少的,当rs<rs1andrs2andrs3andrs4andrs5时,对应rs1,rs2,rs3,rs4,rs5的combox中显示的出来的数目=rs的数目,当rs>rs1 OR rs2 OR rs3 OR rs4 OR rs5时出现运行错误,提示为:找不到对应的记录!!!
终于找到毛病了!可是该怎么改呢??请高手出招!!!