Private Sub Command1_Click()Dim i As IntegerIf select_tabshi_All = True Then
'向MSHFlexGrid加入数据
    With MSHFlexGrid1
        For i = 1 To rowcount - 1
            .AddItem (Str(i))
            .Row = i
            .Col = 0
            .Text = i
            .Col = 1
            .Text = AllQur_tabshi(i).id
            .Col = 2
            .Text = AllQur_tabshi(i).tab_name
            .Col = 3
            .Text = AllQur_tabshi(i).tab_password
            .Col = 4
            .Text = AllQur_tabshi(i).xin
            
      Next
 End WithEnd If
End Sub'清空MSHFlexGrid
Private Sub ClearGlid()
   Dim i As Integer
    For i = MSHFlexGrid1.Rows To 2 Step -1
        MSHFlexGrid1.RemoveItem i
    Next
    With MSHFlexGrid1
        .Row = 1
        .Col = 0
        .Text = ""
        .Col = 1
        .Text = ""
        .Col = 2
        .Text = ""
        .Col = 3
        .Text = ""
        .Col = 4
        .Text = ""
    End With
End Sub
'查询方法  (结果放在AllQur_tabshi数组)
Public Function select_tabshi_All() As Boolean
  Dim RS As ADODB.Recordset
    Dim i As Integer
    Dim sqlStr As String
    sqlStr = "select id,tab_name,tab_password,xin from tabshi"
   
     Debug.Print sqlStr
    
    Set RS = New ADODB.Recordset
    
    RS.Open sqlStr, conn
    i = 1
    select_tabshi_All = False
    Do Until RS.EOF
        select_tabshi_All = True
        If IsNull(RS.Fields("id")) = False Then
        AllQur_tabshi(i).id = RS.Fields("id")
        End If
        
        If IsNull(RS.Fields("tab_name")) = False Then
        AllQur_tabshi(i).tab_name = RS.Fields("tab_name")
        End If
        
        If IsNull(RS.Fields("tab_password")) = False Then
        AllQur_tabshi(i).tab_password = RS.Fields("tab_password")
        End If
        
        If IsNull(RS.Fields("xin")) = False Then
        AllQur_tabshi(i).xin = RS.Fields("xin")
        End If
        
        
        i = i + 1
      RS.MoveNext
     Loop
     
     rowcount = i
      If rowcount > 1 Then
    select_tabshi_All = True
      MsgBox "加载成功!"
    Else
    select_tabshi_All = False
    End If
        End Function能成功加载出数据  单击清空 也能成功清空 
当在次加载的时候  数据显示不全 只能显示一条数据

解决方案 »

  1.   

    这个rowcount应该是公共变量,
    否则
    For i = 1 To rowcount - 1
    时得不到数据
      

  2.   

    rowcount 是公共变量 (在查询方法用到了其他地方没用)
    而且 第二次也成功的进入了 '向MSHFlexGrid加入数据
        With MSHFlexGrid1
            For i = 1 To rowcount - 1
                .AddItem (Str(i))
                .Row = i
                .Col = 0
                .Text = i
                .Col = 1
                .Text = AllQur_tabshi(i).id
                .Col = 2
                .Text = AllQur_tabshi(i).tab_name
                .Col = 3
                .Text = AllQur_tabshi(i).tab_password
                .Col = 4
                .Text = AllQur_tabshi(i).xin
                
          Next
     End With
    就是不显示数据(调试显示赋值了)
    .AddItem (Str(i))  这里是不是有问题 我想不到怎么解决
      

  3.   

    加数据时这样加
    MSHFlexGrid1.AddItem "a" & vbtab & "b" & vbtab & "c"
      

  4.   

    为什么这样做?set MSHFlexGrid1.DataSource = Rs这样不好吗?
      

  5.   

    怎么用 vbTab 
            For i = 1 To rowcount - 1
                .AddItem
                
           '     MSHFlexGrid1.AddItem "a" & vbTab & "b" & vbTab & "c"
                
               
                .Col = 0
                .Text = i
                .Col = 1
                .Text = AllQur_tabshi(i).id
                .Col = 2
                .Text = AllQur_tabshi(i).tab_name
                .Col = 3
                .Text = AllQur_tabshi(i).tab_password
                .Col = 4
                .Text = AllQur_tabshi(i).xin
                
              vbTab
          Next
      
    不对 不懂 怎么搞了
      

  6.   

    我刚学VB 不太明白  VB 执行的结果不是放在一个数组里面吗  通过Rs怎么获得
      

  7.   

    我这样测试没有出现你那样的问题Dim rowcount As IntegerPrivate Sub Command1_Click()Dim i As IntegerIf select_tabshi_All = True Then
    '向MSHFlexGrid加入数据
        With MSHFlexGrid1
            For i = 1 To rowcount
                .AddItem (Str(i))
                .Row = i
                .Col = 0
                .Text = i
                .Col = 1
                .Text = i & ",1"
                .Col = 2
                .Text = i & ",2"
                .Col = 3
                .Text = i & ",3"
                .Col = 4
                .Text = i & ",4"
                
          Next
     End WithEnd If
    End Sub'清空MSHFlexGrid
    Private Sub ClearGlid()
       Dim i As Integer
        For i = MSHFlexGrid1.Rows To 2 Step -1
            MSHFlexGrid1.RemoveItem i
        Next
        With MSHFlexGrid1
            .Row = 1
            .Col = 0
            .Text = ""
            .Col = 1
            .Text = ""
            .Col = 2
            .Text = ""
            .Col = 3
            .Text = ""
            .Col = 4
            .Text = ""
        End With
    End Sub
    '查询方法  (结果放在AllQur_tabshi数组)
    Public Function select_tabshi_All() As Boolean
    '  Dim RS As ADODB.Recordset
        Dim i As Integer
        Dim sqlStr As String
    '    sqlStr = "select id,tab_name,tab_password,xin from tabshi"
    '
    '     Debug.Print sqlStr
    '
    '    Set RS = New ADODB.Recordset
    '
    '    RS.Open sqlStr, conn
        i = 1
        select_tabshi_All = False
    '    Do Until RS.EOF
    '        select_tabshi_All = True
    '        If IsNull(RS.Fields("id")) = False Then
    '        AllQur_tabshi(i).id = RS.Fields("id")
    '        End If
    '
    '        If IsNull(RS.Fields("tab_name")) = False Then
    '        AllQur_tabshi(i).tab_name = RS.Fields("tab_name")
    '        End If
    '
    '        If IsNull(RS.Fields("tab_password")) = False Then
    '        AllQur_tabshi(i).tab_password = RS.Fields("tab_password")
    '        End If
    '
    '        If IsNull(RS.Fields("xin")) = False Then
    '        AllQur_tabshi(i).xin = RS.Fields("xin")
    '        End If
    '
    '
    '        i = i + 1
    '      RS.MoveNext
    '     Loop
         i = 8
         rowcount = i
          If rowcount > 1 Then
        select_tabshi_All = True
          MsgBox "加载成功!"
        Else
        select_tabshi_All = False
        End If
            End FunctionPrivate Sub Command2_Click()
        Call ClearGlid
    End SubPrivate Sub Form_Load()
        MSHFlexGrid1.Cols = 5
    End Sub
      

  8.   

    If select_tabshi_All = True Then
    改为 dim blnT as boolean
    blnT=select_tabshi_All
    if blnT= True then另外清空的时候
        For i = MSHFlexGrid1.Rows-1 To 1 Step -1
            MSHFlexGrid1.RemoveItem i
        Next
    否则就保留了一行,正是你看到的剩下的一行.
    清空也不必你那样写,直接MSHFlexGrid1.rows=1就行了
      

  9.   

    成功了  谢谢 
    清空的 问题  换成
    MSHFlexGrid1.rows=1 以后能正常显示了