我用语句:rs.Open "select * from 客户", onn, adOpenDynamic, adLockPessimistic打开了一个记录集
该表总共有9个字段,但是“select * from 客户”返回了所有字段,现在我想把rs中的部分字段显示在DataGrid控件上,也就是说不用Set DataGrid1.DataSource = rs,比如只显示其中5个字段,请问怎么实现?
谢谢!
该表总共有9个字段,但是“select * from 客户”返回了所有字段,现在我想把rs中的部分字段显示在DataGrid控件上,也就是说不用Set DataGrid1.DataSource = rs,比如只显示其中5个字段,请问怎么实现?
谢谢!
Set DataGrid1.DataSource = rs
Set DataGrid1.DataSource = rs
Set DataGrid1.DataSource = rs
如果你又只想显示其中的5个字段,有2种方法,1是只select 5个字段出来,2就是把多余的字段隐藏了。
一:
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