我用语句:rs.Open "select * from 客户", onn, adOpenDynamic,    adLockPessimistic打开了一个记录集
该表总共有9个字段,但是“select * from 客户”返回了所有字段,现在我想把rs中的部分字段显示在DataGrid控件上,也就是说不用Set DataGrid1.DataSource = rs,比如只显示其中5个字段,请问怎么实现?
谢谢!

解决方案 »

  1.   

    rs.Open "select 字段1,字段2,字段3,字段4,字段5 from 客户", onn, adOpenDynamic,    adLockPessimistic
    Set DataGrid1.DataSource = rs
      

  2.   

    rs.Open "select 字段1,字段2,字段3,字段4,字段5 from 客户", onn, adOpenDynamic,    adLockPessimistic
    Set DataGrid1.DataSource = rs 
      

  3.   

    既然你已经把字段全都取出来了,当然最方便的做法是全部显示出来,用一个
    Set DataGrid1.DataSource = rs 
    如果你又只想显示其中的5个字段,有2种方法,1是只select 5个字段出来,2就是把多余的字段隐藏了。
      

  4.   

    两种方法:
    一:
    rs.Open "select 字段1,字段2,字段3,字段4,字段5 from 客户", onn, adOpenDynamic,    adLockPessimistic 
    Set DataGrid1.DataSource = rs 
    二:把多余字段隐藏
    设置DataGrid.columns(i).width=0
    如你写个函数:
    Public Sub InitalDataGrid(Frm As Form, ByVal FieldString As String, ByVal HeadString As String, adorscur As ADODB.Recordset, ByVal FieldW As String, Optional DataGrid1 As DataGrid)
      With DataGrid1
        Set .DataSource = Nothing
        .ClearFields
        Set .DataSource = adorscur
        FieldW = IIf(Right(FieldW, 1) = "|", FieldW, FieldW + "|")
        i = 0
        If Len(FieldString) > 0 Then
          FieldString = IIf(Right(FieldString, 1) = "|", FieldString, FieldString + "|")
          Do While Len(FieldString) > 1
            .Columns(i).DataField = Left(FieldString, InStr(FieldString, "|") - 1)
            FieldString = Right(FieldString, Len(FieldString) - InStr(FieldString, "|"))
            i = i + 1
          Loop
          i = 0
        End If
        If Len(HeadString) > 0 Then
            HeadString = IIf(Right(HeadString, 1) = "|", HeadString, HeadString + "|")
            Do While Len(HeadString) > 1
              .Columns(i).Caption = Left(HeadString, InStr(HeadString, "|") - 1)
              HeadString = Right(HeadString, Len(HeadString) - InStr(HeadString, "|"))
              i = i + 1
            Loop
            i = 0
        End If
        Do While Len(FieldW) > 1
          .Columns(i).Width = Val(Left(FieldW, InStr(FieldW, "|") - 1))
          FieldW = Right(FieldW, Len(FieldW) - InStr(FieldW, "|"))
          i = i + 1
        Loop
        For i = i To .Columns.Count - 1
          .Columns(i).Visible = False
        Next i
      End With
    End Sub 查询时调用这个函数:
    HeadString = "标题1|标题2|标题2|标题3|标题4|标题5|标题6"
    FieldString = "字段1|字段2|字段3|字段4|字段5|字段6"
    FieldW = "1500|1500|1500|1000|1000|0"InitalDataGrid Me, FieldString, HeadString, adorscur, FieldW, DataGrid1