SSDBGrid-Sort By Col
来源:互联网 发布:unity3d室内 场景模型 编辑:程序博客网 时间:2024/05/01 23:55
Public Function SortSSDBGridByCol(ByRef pgrdSource As SSDBGrid, ByVal pgrdSelCol As Integer)
Dim grdBak As SSDBGrid
Dim rsGrid As ADODB.Recordset
Dim intI As Integer
Dim intCol As Integer
Dim strColName As String
Dim strSelColCaption As String
Dim strSelColName As String
Dim strAddRow As String
On Error GoTo Error_Handler
'//////////////////////////////////////////////////////////
'Use this function, please set grd.column().DateType
'String : DateType=Text
'Numeric: DateType=Double
'Amount : DateType=Currency (12,345.03)
'//////////////////////////////////////////////////////////
Set grdBak = pgrdSource
If pgrdSource.Rows = 0 Then
Exit Function
End If
strSelColCaption = pgrdSource.Columns(pgrdSelCol).Caption
strSelColName = UCase(Trim(pgrdSource.Columns(pgrdSelCol).Name))
'Create Record set By ssdbgrid,each record type deply on grid.col.DateType
Set rsGrid = New ADODB.Recordset
For intI = 0 To pgrdSource.Columns.Count - 1
strColName = UCase(Trim(pgrdSource.Columns(intI).Name))
If pgrdSource.Columns(intI).DataType = 8 Then '8:Text
rsGrid.Fields.Append strColName, adVarChar, 1024
Else
rsGrid.Fields.Append strColName, adDouble
End If
Next intI
rsGrid.Open
pgrdSource.Redraw = False
pgrdSource.MoveFirst
For intI = 0 To pgrdSource.Rows - 1
rsGrid.AddNew
For intCol = 0 To pgrdSource.Cols - 1
'Amount:123,234.00
If pgrdSource.Columns(intCol).DataType = 6 Then '6:Currency
rsGrid.Fields(intCol).Value = Replace(Trim(pgrdSource.Columns(intCol).Value), ",", "")
Else
rsGrid.Fields(intCol).Value = Trim(pgrdSource.Columns(intCol).Value)
End If
Next intCol
rsGrid.Update
pgrdSource.MoveNext
Next
If InStr(1, strSelColCaption, Chr(&HA88B)) Then '原先Desc-->ASC
rsGrid.Sort = "[" & strSelColName & "]" & " Asc"
ElseIf InStr(1, strSelColCaption, Chr(&HA1F8)) Then '原先ASC -->Desc
rsGrid.Sort = "[" & strSelColName & "]" & " Desc"
Else
rsGrid.Sort = "[" & strSelColName & "]" & " Asc"
End If
pgrdSource.RemoveAll
Do While Not rsGrid.EOF
For intCol = 0 To rsGrid.Fields.Count - 1
If pgrdSource.Columns(intCol).DataType = 6 Then '6:Currency
If intCol = 0 Then
strAddRow = Format(rsGrid.Fields(intCol).Value, "#,###.###")
Else
strAddRow = strAddRow & vbTab & Format(rsGrid.Fields(intCol).Value, "#,###.###")
End If
Else
If intCol = 0 Then
strAddRow = rsGrid.Fields(intCol).Value
Else
strAddRow = strAddRow & vbTab & rsGrid.Fields(intCol).Value
End If
End If
Next intCol
pgrdSource.AddItem strAddRow
rsGrid.MoveNext
Loop
For intCol = 0 To pgrdSource.Cols - 1
If intCol = pgrdSelCol Then
If InStr(1, strSelColCaption, Chr(&HA88B)) Then '原先Desc-->ASC "▼"
pgrdSource.Columns(pgrdSelCol).Caption = Replace(strSelColCaption, Chr(&HA88B), Chr(&HA1F8))
ElseIf InStr(1, strSelColCaption, Chr(&HA1F8)) Then '原先ASC -->Desc "▲"
pgrdSource.Columns(pgrdSelCol).Caption = Replace(strSelColCaption, Chr(&HA1F8), Chr(&HA88B))
Else
pgrdSource.Columns(pgrdSelCol).Caption = strSelColCaption & Chr(&HA1F8)
End If
Else
'将未选中行恢复Caption
pgrdSource.Columns(intCol).Caption = Replace(Replace(pgrdSource.Columns(intCol).Caption, Chr(&HA88B), ""), Chr(&HA1F8), "")
End If
Next
rsGrid.Close
Set rsGrid = Nothing
pgrdSource.Redraw = True
Exit Function
Error_Handler:
DBCloseRS rsGrid
Set rsGrid = Nothing
Set pgrdSource = grdBak
pgrdSource.Redraw = True
Err.Raise vbObject + 1024, "Sort SSDBGrid", Err.Description
End Function
- SSDBGrid-Sort By Col
- 【mysql】 GROUP BY col ORDER BY NULL
- Operate SSDBGrid
- PL/SQL函数 over(partition by col)
- col
- col
- col
- hive sort by|order by
- hive order by,sort by,distributed by
- SORT BY C
- hive中的sort by
- hive中的sort by
- hive中的sort by
- SORT ORDER BY STOPKEY
- Map sort by value
- Sort Characters By Frequency
- Order By与Sort
- SORT ORDER BY STOPKEY
- 程序员要喝牛奶吃花生
- ASP中access数据库的路径问题
- .NET消息传送过程中的涉及到加密解密示例图
- js脚本学习
- 解决死锁一例
- SSDBGrid-Sort By Col
- 雪夜与我的女秘书堵车后........
- struts+newxy(新坐标)文件上传,比jspsmart更简单 作者:胡立新
- 上课没精神,想睡觉。
- msxml3.dll 错误'800c0005' 系统未找到指定的资源错误,
- sql server 导入导出语句大全
- 使用input type=file 上传文件时需注意
- 数据库项目无法引入system.web???
- 在托盘图标中添加气球提示