数据记录的排序
各位:
请查看以下代码,我要在其内增加排序功能
'在标准模块中定义的公共变量
Public db As New ADODB.Connection
Public cnn As String
Public j As Integer
Public i As Integer
Public rst1 As ADODB.Recordset
Public rst2 As ADODB.Recordset
’主窗口启动时打开数据库
If Right(App.Path, 1) <> "\" Then mypath = App.Path & "\"
Set MDIForm1.Picture = LoadPicture(mypath & "zm.jpg")
cnn = "provider=microsoft.jet.oledb.3.51;persist security info=false;data source=" & mypath & "cddz.mdb"
db.Open cnn
以下是查询一号炉炼钢炉在某一时段的历史数据,数据已在另一窗口采集并保存到cddz.mdb中的表yihaolu中
Private Sub Command10_Click()
Dim tjqs As Date
Dim tjzs As Date
Dim tjts1 As Long
Dim tjts2 As Long
Dim tjbs As Date
j = 0
‘打开表yihaolu中的数据记录
Set rst1 = New ADODB.Recordset
rst1.CursorType = adOpenKeyset
rst1.LockType = adLockOptimistic
rst1.Open "yihaolu", db, , , adCmdTable
’打开查询结果表yitemp,若此表有记录,则删除
Set rst2 = New ADODB.Recordset
rst2.CursorType = adOpenKeyset
rst2.LockType = adLockOptimistic
rst2.Open "yitemp", db, , , adCmdTable
If Not rst2.EOF Then
Do Until rst2.EOF
rst2.Delete
rst2.Requery
Loop
‘DATA8和DBGRID8用于显示查询结果表yitemp
Data8.Refresh
DBGrid8.Refresh
End If
’以下开始在表yihaolu中查询从Text7至Text8时段的数据,
’并将结果保存到查询结果表yitemp中
’Text7和Text8分别接受用户输入的起止日期
If Text7 = "" Then Text7 = "2005-02-01"
If Text8 = "" Then Text8 = Date
tjqs = CDate(Text7)
tjzs = CDate(Text8)
tjts1 = DateDiff("d", tjqs, tjzs)
rst1.MoveFirst
For i = 0 To rst1.RecordCount - 1
tjbs = rst1.Fields("日期")
tjts2 = DateDiff("d", tjqs, tjbs)
If tjts2 >= 0 And tjts2 <= tjts1 Then
riqi = rst1.Fields("日期")
shijian = rst1.Fields("时间")
qianwen = rst1.Fields("前温")
houwen = rst1.Fields("后温")
yali = rst1.Fields("压力")
caizhi = rst1.Fields("材质")
shuliang = rst1.Fields("数量")
wendu = rst1.Fields("温度")
gongshi = rst1.Fields("工时")
zhiban = rst1.Fields("值班")
rst2.AddNew
rst2.Fields("日期") = riqi
rst2.Fields("时间") = shijian
rst2.Fields("前温") = qianwen
rst2.Fields("后温") = houwen
rst2.Fields("压力") = yali
rst2.Fields("材质") = caizhi
rst2.Fields("数量") = shuliang
rst2.Fields("温度") = wendu
rst2.Fields("工时") = gongshi
rst2.Fields("值班") = zhiban
rst2.Update
j = j + 1
End If
rst1.MoveNext
Next i
Label19 = j‘显示记录数
If j> 0 Then
Command12.Enabled = True ‘如果有数据则打印按钮有效
!!!请在此处增加对查询结果表yitemp的按日期和时间的先后顺序排序
End If
Command10.Enabled = False‘查询按钮无效
Command11.Enabled = True ’刷新按钮有效
End Sub
’刷新Data8和DBGrid8,使其显示排序后的查询结果
Private Sub Command11_Click()
Data8.Refresh
DBGrid8.Refresh
Command10.Enabled = True
End Sub
如你有更好的实现方法,谢谢你帮忙更改!
邮箱:MASTERN@SINA.COM
问题点数:0、回复次数:3Top
1 楼pweixing(幸运星)回复于 2005-04-04 15:53:52 得分 0
datagrid控件是和数据库绑定操作的,因此你只能在从数据库提出数据的时候进行排序.Top
2 楼daisy8675(莫依 沉迷)回复于 2005-04-04 16:01:18 得分 0
datagrid是反映recordset,你自己用SQL语句去排序Top
3 楼cuizm(射天狼 http://www.j2soft.cn/)回复于 2005-04-04 16:14:55 得分 0
用SQL 排序之后,DATAGRID的显示自然就会排序,你也可以用MSFlexGrid来操作,这样不用每次操作都重新查询数据库,速度比较快!
如下:
http://dev.csdn.net/article/28/article/37/37898.shtmTop




