如何得到dataGrid控件有多少行中有数据?

解决方案 »

  1.   

    Set DataGrid1.DataSource = Rs    MsgBox Rs.RecordCount    MsgBox DataGrid1.ApproxCount
      

  2.   

    Set DataGrid1.DataSource = Rs    MsgBox Rs.RecordCount    MsgBox DataGrid1.ApproxCount
      

  3.   

    wei1027你回答的是什么?楼主要的是DATAGRID控件的行数,不是结果集的记录个数。DATAGRID应该有这样的属性或方法,我以前用过但是想不起来了,你自己找找吧。
      

  4.   

    不对
    我的datagrid 控件没有和rs相联
    我只有datagrid ,当我手输入的时候添加了几行后
    如何得到datagrid有几行
      

  5.   

    XJB66(斌) ( ) 说的对
    我要的是datagrid 行数
    不是记录级的行数
    我已经找了很久了
    帮帮忙
      

  6.   

    ApproxCount此属性返回网格用于校准垂直滚动条的近似行数。
      

  7.   

    MsgBox (DataGrid1.FirstRow + DataGrid1.Row)
      

  8.   

    记得有个 rows  属性的,记不太清了肯定有一个属性
      

  9.   

    datagrid控件是为绑定大量数据设计的,所以只有显示可见行的firstrow, VisibleRows属性。下面选自MSDN:
    使用DataGrid控件的Columns集合的Count属性和Recordset对象的RecordCount属性,可以决定控件中列和行的数目。DataGrid控件的可包含的行数取决于系统的资源,而列数最多可达32,767列。
      

  10.   

    to:  of123() ( ) 
    这我看过了
    有没有具体的办法可以知道有多少行?
      

  11.   

    .row  最大值 - 1
      

  12.   

    to  csdngoodnight(居然比我还快,你真行!) ( ) 
    可能是吧,我也搞不清?
    那你也来回答,你也好意思?
    会就是会
    不知道就up 一下
    我也不会怪你的
      

  13.   

    问问题这样不虚心,你可以试试的,出此之外,我看也没有什么好办法了。另有,可以对Recordset数据集进行判断,去除空行。留下的数目和datagrid是相等的,你别告诉我这也不会哦........
      

  14.   

    to  csdngoodnight(居然比我还快,你真行!) 
    哈哈
    和解,我没有不虚心的意思用Recordset不行
    因为我实现的是我的grid控件并没有和Recordset关联
    我要判断我的grid控件现在有几行,做个循环把每一行的数据录入到数据库中
    所以我需要知道有几行了
      

  15.   

    没有和Recordset关联?那么,数据是从那里来的?ado控件或data总该有吧?一个笨方法,你先试试,我也不知道好不好用,呵呵
        Dim i As Integer
        DataGrid1.Row = 0
        On Error GoTo l:        
        Do
            i = i + 1
            DataGrid1.Row = i
            Text3.Text = DataGrid1.Columns(0).Text
        Loop
    l:
        MsgBox i
      

  16.   

    to  csdngoodnight(居然比我还快,你真行!) ( ) 
    数据手工输入
      

  17.   

    都是手工输入,我不知道么?呵呵我才搞明白,你要这样把数据导入数据库,偶还是第一次听说呀~~给你个ADO连接Access97/2000数据库的代码,不明白的话,发短信给偶。这个帖子还是别再要了,会被笑话地..........
    ADO连接:
    工程--->引用--->Microsoft ActiveX Data Object 2.x(版本号)Option ExplicitDim WithEvents adoRS As Recordset
    Dim db As Connection
    '提数据事件
        Set db = New Connection
        db.CursorLocation = adUseClient
        db.Open"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & App.Path & "\db1.mdb;Jet OLEDB:Database Password=1234;"
    '                           ##########################################
    '打开密码是1234的Access2000数据库db1.mdb
    '不需要密码,就把Jet OLEDB:Database Password=1234;这段去掉    Set adoRS = New Recordset
        
        adoRS.Open "SELECT * FROM 表", db, adOpenStatic, adLockOptimistic
        '赋值给 DataGrid 表
        Set DataGrid1.DataSource = adoRS
        '表刷新
        DataGrid1.Refresh    '如果要绑定TextBox(数组):
        'Text1(0).DataField = 字段1
        'Text1(1).DataField = 字段2
        '.........
        Dim oText As TextBox 'TextBox
        For Each oText In Me.Text1
            Set oText.DataSource = adoRS
        Next
    '添加事件和保存
        adoRS.AddNew
        '保存
        adoRS![字段a] = text1.Text
        adoRS![字段b] = text2.Text
        adoRS.UpdateBatch adAffectAll'删除
        adoRS.Delete
        '重新赋值给表
        adoRS.Requery
        Set DataGrid1.DataSource = adoRS
        DataGrid1.Refresh    '其他相关操作:
        '上一条
        If Not adoRS.BOF Then adoRS.MovePrevious
        If adoRS.BOF And adoRS.RecordCount > 0 Then
             '已到最后返回
             adoRS.MoveFirst
        End If
        '下一条
        If Not adoRS.EOF Then adoRS.MoveNext    '下一条
        If adoRS.EOF And adoRS.RecordCount > 0 Then
              '已到最后返回
              adoRS.MoveLast
        End If
        '第一条
        If Not adoRS.BOF Then adoRS.MoveFirst
        '最末
        If Not adoRS.EOF Then adoRS.MoveLast
      

  18.   

    to : csdngoodnight(居然比我还快,你真行!) ( ) 
    本不愿意说你了
    就你这德行
    哎。。
    水平比你高的见多了
    看看你的口气首先你要弄明白别人的意图,不要把你的意志加给别人
    用textbox可以的话我就不会在这里浪费时间了
    有能力就把问题回答了如何得到dataGrid控件有多少行?你知道不?
    不知道,就。
      

  19.   

    哈哈
    给你个ADO连接Access97/2000数据库的代码,不明白的话,发短信给偶。这个帖子还是别再要了,会被笑话地..........
      

  20.   

    搂主,应该说你选择的控件不适合你的用途。切肉丁你非得用绞肉机,还问有没有办法切得漂亮。有两个办法:
    1 上策:自己在DATAGRID控件基础上写一个有Rows属性的控件。
    2 下策:自己建立一个变量来记录输入的行数。问题是删除行时,特别是多行时要正确更新。
      

  21.   

    strongfisher(Haiwolf):又忘记告诉你了,select ....from...可以对表视图查询不好用可别再笑俺哦,俺会脸红地............
      

  22.   

    strongfisher(Haiwolf):又忘记告诉你了,select ....from...可以对表视图查询不好用可别再笑俺哦,俺会脸红地............
      

  23.   

    to : of123() ( ) 信誉:105 
    你说的是对的
    我可能是选错了控件
    它本身可能是没有这个属性了
    我本人才疏学浅
    是想问问大家看有没有知道的你提供的两个办法是可行的
    我也打算自己做做谢谢大家的回答
      

  24.   

    楼主,建议可以用用MSFlexGrid这个控件,不过要在“工程/部件”里选择
    Microsoft FlexGrid Control 6.0,就可以使用这个控件了得到行数的代码是:  i=MSFlexGrid.Rows
      

  25.   

    楼上,MSFlexGrid这个控件不能编辑呀。楼主要它何用?
      

  26.   

    楼上,MSFlexGrid这个控件不能编辑呀。楼主要它何用?
      

  27.   

    其实datagrid这个控件不错的,只是楼主要的功能怪怪的。不知道我理解的对不对:你要进行录入,要求若干行为一组记录,就象清单那样的效果是不是呢?
      

  28.   

    可以编辑的。
    这是我前段时间用它编的一个程序,MSFG就是MSFlexGrid控件
     MSFG.Clear
     MSFG.AllowBigSelection = True
     MSFG.Rows = 1
     MSFG.AllowUserResizing = flexResizeBoth
     MSFG.FormatString = "  |源路径   |目标路径    " For i = 1 To no
       MSFG.AddItem CStr(i) & vbTab & s & vbTab & d
     Next
     
     楼主可以参考一下
      

  29.   

    of123() ( )
    要自己用textbox来输入
    就是点到哪里textbox出现
    完了付值
      

  30.   

    其实datagrid这个控件不错的,只是楼主要的功能怪怪的。不知道我理解的对不对:你要进行录入,要求若干行为一组记录,就象清单那样的效果是不是呢?
    对,是这样的
      

  31.   

    我一般都是这样做,不知道对你有没有用,别再笑我哦:1.用textbox录入。有个附加条件字段,用来识别是否为同一组录入的数据,也就是单据序列号,同一组的若干行数据用同一个单据号标识。
    在对数据库查询时,加上单号做为查询条件之一。2.不直接对datagrid输入,它做为一个清单列表来显示数据,也就是textbox每录入完毕一条,保存到数据库,同时更新到datagrid表(将单据号码做为筛选条件)。3.再就是些细节的代码,比如按钮“继续填加”,更新数据到数据库后,清空textbox(保留单据号码),等等。一点愚见,不要笑我。
      

  32.   

    :)
    我用datagrid只是为了客户看的清晰
    我输入几条数据
    一并写入数据库
    而不是写一条就输入一条
    那么写入数据库时,就要一个循环
    我想如果有这个属性就会很方便了
      

  33.   

    strongfisher(Haiwolf)::)
    那样的话,有些本来可以直接用下拉列表选择的项就不好操作了,比如性别,用 combobox只要选择一下就行了;还有产品名称之类的(如果有个产品名称维护型的数据库表的话),可以在加载时填加到combobox,供用户方便的选择,不用再重复录入了,更重要的是,它不会出现录入错误。如果直接输入datagrid,是不是就不能这样方便了呢?愚见,希望多多探讨,:)
      

  34.   

    : csdngoodnight(居然比我还快,你真行!) 
    可以的
    我实际用的不是datagrid
    而是tbddatagrid
    你说的都可以实现我现在就是差那个属性了
      

  35.   

    要实现你的功能还是不要用datagrid,试试msflexgrid控件
    我曾经也这样用过
    msflexgrid控件有rows属性,可以统计行数。编辑时用一个textbox控件输入就行了,如果可行,我给你代码。怎么样????
      

  36.   

    QINYUEH(小小) ( )
    谢谢
    你发个代码给我吧
    我收到会另开贴给你分的
    e_mail:
    [email protected]
      

  37.   

    以添加功能为例
    在添加按钮中写入代码
      n=MSRDC1.Resultset.rowcount
     Text1.Width = MSFlexGrid1.ColWidth(1)
      Text1.Height = MSFlexGrid1.CellHeight
      Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(1)
        Text1.top = MSFlexGrid1.top + MSFlexGrid1.RowPos(n) + (MSFlexGrid1.RowPos(n) - MSFlexGrid1.RowPos(n - 1))
      Text1.Visible = True
      Text1.SetFocus
    保存代码
    re_count=MSRDC1.Resultset.rowcount
    If addrecord = True Then
           '将最后一个值写到msflexgrid1的最后一个单元格内
           MSFlexGrid1.TextMatrix(re_count + 1, 1) = Text1.Text
          
           For i = re_num + 1 To MSFlexGrid1.Rows - 1
              If Text1.Text <> "" Then
                '向库里写记录
                Writerecord i
           Next
    Writerecord 模块代码
    Public Sub Writerecord(r As Integer)
    s = G_struserlogname
    If addrecord = True Then    '添加
      MSFlexGrid1.Row = r
      MSFlexGrid1.Col = 1
      txtsql = "select * from 表名 
      End If
      rs.Open txtsql, CNT, adOpenKeyset, adLockPessimistic
      
      rs.AddNew   '添加
      '给每个字段赋值
      rs.Fields("字段3") = MSFlexGrid1.Text
      rs.update
      rs.Close
    end sub你试试,有的地方可能需要改动一下
    我的邮箱现在暂时不能用了,没法发e_mail