Private Sub CopyToBill()
    Dim frmBill As New frmModBL
    Dim rs As ADODB.Recordset
    Dim i As Long
    If TDBGrid1.SelRange = True Then
        Set rs = Adodc1.Recordset.Clone
        For Each Row In TDBGrid1.SelBooks
            rs.Book = Row
            For Col = TDBGrid1.SelStartCol To TDBGrid1.SelEndCol
                frmBill.Adodc1.Recordset.AddNew
                frmBill.Adodc1.Recordset.Fields(i) = TDBGrid1.Columns(Col).Value
                i = i + 1
            Next Col
        Next Row
    End If
End Sub是实现拷贝一个窗体的GRID中被选中的行列矩阵中的数据到另一个窗体中,但是最里面的一个FOR循环中的Col运行时候说类型不匹配。我是这么定义的,请问是怎么回事。Private Col As TrueOleDBGrid80.Column
Private Cols As TrueOleDBGrid80.Columns

解决方案 »

  1.   

    For Col = TDBGrid1.SelStartCol To TDBGrid1.SelEndCol
                    frmBill.Adodc1.Recordset.AddNew
                    frmBill.Adodc1.Recordset.Fields(i) = TDBGrid1.Columns(Col).Value
                    i = i + 1
                Next Col
    这里有问题吧?TDBGrid1.SelStartCol和TDBGrid1.SelEndCol是Long类型的,
    而你定义的Col其实是一个引用类型。
    把Private Col As TrueOleDBGrid80.Column改成
    Dim Col As Long
      

  2.   

    还有你那个Row应该定义成BookMark类型的
      

  3.   

    我测试了一下怎么到If TDBGrid1.SelRange = True Then
    却判断是False,直接条出了。没运行里面代码。
    我一行和几行记录都试过了。都不行。咋回事?