我用了两个datagrid控件,datagrid1是显示大类的列表,点击datagrid1中的表格就在datagrid2中显示相应的大类数据,点击datagrid2中的表格基就可以在文本框中显示相应的信息.
在运行中,第一次点击datagrid1中的表格没有问题,可是第二次点击就出现错误.错误信息如下:
实时错误:91
对象变理或with块变量未设置程序如下:Private Sub Form_Load()
'查询数据库
sql = "select * from JY_class"
DataGrid1.Enabled = True
Set adoRs = ExecuteSQL(sql, msgtext)
LockTheForm
Set DataGrid1.DataSource = adoRs.DataSource
DataGrid1.Columns(0).Visible = False
DataGrid1.Columns(1).Width = 1000
DataGrid1.Columns(2).Width = 600
DataGrid1.Columns(3).Width = 800
DataGrid1.Columns(4).Width = 1600
DataGrid1.Columns(5).Width = 1600
DataGrid1.Columns(5).Locked = False
End SubPrivate Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim stemp As String
Dim mcls As ADODB.Recordset
Dim sql As String, sid As String, title As String, Subheading As String
If DataGrid1.Columns(0).Text > 0 Then
Set mcls = ExecuteSQL("Select * from standard where id=" & DataGrid1.Columns(0).Text, msgtext)
If mcls.EOF = False Then
stemp = mcls.Fields("no")
sid = mcls.Fields("ID") '.....
If mcls.Fields("qt") <> "" Then
txtFields(18).Text = mcls.Fields("QT")
Else
txtFields(18).Text = ""
End If
Else
txtFields(0).Text = ""
txtFields(1).Text = ""
txtFields(2).Text = ""
txtFields(3).Text = ""
txtFields(4).Text = ""
txtFields(5).Text = ""
txtFields(6).Text = ""
txtFields(7).Text = ""
txtFields(8).Text = ""
txtFields(9).Text = ""
txtFields(10).Text = ""
txtFields(11).Text = ""
txtFields(12).Text = ""
txtFields(13).Text = ""
txtFields(14).Text = ""
txtFields(15).Text = ""
txtFields(16).Text = ""
txtFields(17).Text = ""
txtFields(18).Text = ""
End If
End If
mcls.Close
Set mcls = Nothing
DataGrid1.Height = 3400
DataGrid2.Visible = True
sql = "select ID,[NO] as [序号] from standard where [no]='" & stemp & "' order by [no]"
Set adoRs = ExecuteSQL(sql, msgtext)
LockTheForm
DataGrid2.Enabled = True
Set DataGrid2.DataSource = adoRs.DataSource
DataGrid2.Columns(0).Visible = False
DataGrid2.Columns(1).Width = 700
DataGrid2.Columns(2).Width = 800
DataGrid2.Columns(3).Width = 2000
DataGrid2.Columns(4).Width = 2000
DataGrid2.Columns(4).Locked = False
DataGrid2.Refresh
LockTheForm
End Sub
Private Sub DataGrid2_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim mcls As ADODB.Recordset
Dim sql As String, sid As String, title As String, Subheading As String
Set mcls = ExecuteSQL("Select * from standard where id=" & DataGrid2.Columns(0).Text, msgtext)
If mcls.EOF = False Then '错误出现地方
sid = mcls.Fields("ID")
'...........
If mcls.Fields("QT") <> "" Then
txtFields(18).Text = mcls.Fields("QT")
Else
txtFields(18).Text = ""
End If
Else
txtFields(0).Text = ""
txtFields(1).Text = ""
txtFields(2).Text = ""
txtFields(3).Text = ""
txtFields(4).Text = ""
txtFields(5).Text = ""
txtFields(6).Text = ""
txtFields(7).Text = ""
txtFields(8).Text = ""
txtFields(9).Text = ""
txtFields(10).Text = ""
txtFields(11).Text = ""
txtFields(12).Text = ""
txtFields(13).Text = ""
txtFields(14).Text = ""
txtFields(15).Text = ""
txtFields(16).Text = ""
txtFields(17).Text = ""
txtFields(18).Text = ""
End If
End Sub
在运行中,第一次点击datagrid1中的表格没有问题,可是第二次点击就出现错误.错误信息如下:
实时错误:91
对象变理或with块变量未设置程序如下:Private Sub Form_Load()
'查询数据库
sql = "select * from JY_class"
DataGrid1.Enabled = True
Set adoRs = ExecuteSQL(sql, msgtext)
LockTheForm
Set DataGrid1.DataSource = adoRs.DataSource
DataGrid1.Columns(0).Visible = False
DataGrid1.Columns(1).Width = 1000
DataGrid1.Columns(2).Width = 600
DataGrid1.Columns(3).Width = 800
DataGrid1.Columns(4).Width = 1600
DataGrid1.Columns(5).Width = 1600
DataGrid1.Columns(5).Locked = False
End SubPrivate Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim stemp As String
Dim mcls As ADODB.Recordset
Dim sql As String, sid As String, title As String, Subheading As String
If DataGrid1.Columns(0).Text > 0 Then
Set mcls = ExecuteSQL("Select * from standard where id=" & DataGrid1.Columns(0).Text, msgtext)
If mcls.EOF = False Then
stemp = mcls.Fields("no")
sid = mcls.Fields("ID") '.....
If mcls.Fields("qt") <> "" Then
txtFields(18).Text = mcls.Fields("QT")
Else
txtFields(18).Text = ""
End If
Else
txtFields(0).Text = ""
txtFields(1).Text = ""
txtFields(2).Text = ""
txtFields(3).Text = ""
txtFields(4).Text = ""
txtFields(5).Text = ""
txtFields(6).Text = ""
txtFields(7).Text = ""
txtFields(8).Text = ""
txtFields(9).Text = ""
txtFields(10).Text = ""
txtFields(11).Text = ""
txtFields(12).Text = ""
txtFields(13).Text = ""
txtFields(14).Text = ""
txtFields(15).Text = ""
txtFields(16).Text = ""
txtFields(17).Text = ""
txtFields(18).Text = ""
End If
End If
mcls.Close
Set mcls = Nothing
DataGrid1.Height = 3400
DataGrid2.Visible = True
sql = "select ID,[NO] as [序号] from standard where [no]='" & stemp & "' order by [no]"
Set adoRs = ExecuteSQL(sql, msgtext)
LockTheForm
DataGrid2.Enabled = True
Set DataGrid2.DataSource = adoRs.DataSource
DataGrid2.Columns(0).Visible = False
DataGrid2.Columns(1).Width = 700
DataGrid2.Columns(2).Width = 800
DataGrid2.Columns(3).Width = 2000
DataGrid2.Columns(4).Width = 2000
DataGrid2.Columns(4).Locked = False
DataGrid2.Refresh
LockTheForm
End Sub
Private Sub DataGrid2_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
Dim mcls As ADODB.Recordset
Dim sql As String, sid As String, title As String, Subheading As String
Set mcls = ExecuteSQL("Select * from standard where id=" & DataGrid2.Columns(0).Text, msgtext)
If mcls.EOF = False Then '错误出现地方
sid = mcls.Fields("ID")
'...........
If mcls.Fields("QT") <> "" Then
txtFields(18).Text = mcls.Fields("QT")
Else
txtFields(18).Text = ""
End If
Else
txtFields(0).Text = ""
txtFields(1).Text = ""
txtFields(2).Text = ""
txtFields(3).Text = ""
txtFields(4).Text = ""
txtFields(5).Text = ""
txtFields(6).Text = ""
txtFields(7).Text = ""
txtFields(8).Text = ""
txtFields(9).Text = ""
txtFields(10).Text = ""
txtFields(11).Text = ""
txtFields(12).Text = ""
txtFields(13).Text = ""
txtFields(14).Text = ""
txtFields(15).Text = ""
txtFields(16).Text = ""
txtFields(17).Text = ""
txtFields(18).Text = ""
End If
End Sub
If mcls.state=adstateopen then mcls.close
Set mcls=nothing
mcls.CursorLocation = adUseClient
之前增加
if not mcls is nothing and mcls.state=1 then