我用了两个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