数据按每小时一次保存在数据库中,
目的:按日期将查询日期内的数据显示到msflexgrid表格内
现象:查询日期超过两天时,能按小时显示出来,例如查询09-05-30到 09-05-31能够显示48个数据,但是查询一天时,只显示最后一个数据,例如查询09-05-30,只显示最后一个数据(23时的)。
郁闷很久了。不清楚怎么回事。
        intRow = 1
        Do While Not rsData.EOF
            If rsData.Fields("日期") >= CDate(strStartDate) And rsData.Fields("日期") <= CDate(strEndDate) And blnSlc(rsData.Fields("时"), intHourRx()) Then
                msfgData.TextMatrix(intRow, 0) = Format(rsData.Fields("日期"), "yyyy年mm月dd日")
                msfgData.TextMatrix(intRow, 1) = Format(rsData.Fields("时"), "00")
                For i = 2 To UBound(strFieldRx) + 1
                    msfgData.TextMatrix(intRow, i) = rsData.Fields(Right$(strFieldRx(i - 1), Len(strFieldRx(i - 1)) - 3))
                    If Left$(msfgData.TextMatrix(intRow, i), 1) = "." Or Left$(msfgData.TextMatrix(intRow, i), 2) = "-." Then
                        msfgData.TextMatrix(intRow, i) = Format$(msfgData.TextMatrix(intRow, i), "#0.##")
                    End If
                Next i
                rsData.MoveNext
                intRow = intRow + 1
                msfgData.AddItem ""
            Else
                rsData.MoveNext
            End If
        Loop
        
        If intRow <= 1 Then
            MsgBox "数据库内无该时间段的记录数据!"
            Exit Sub
        End If
        
        msfgData.RemoveItem (intRow)
        intRow = intRow - 1
        
        tts = intRow
        
        msfgData.Col = 0                        '排序
        msfgData.ColSel = 1
        msfgData.Sort = 5                       '一般升序
        
        For i = 0 To msfgData.Cols - 1
            msfgData.ColAlignment(i) = 4        '设置所有单元格文字居中
        Next i
        msfgData.TopRow = intRow
        dbData.Close
        Erase intHourRx
        sbrMain.Panels(1) = "记录总数:" & intRow
        
        i = i + 1
        Loop 'Next i
    End If

解决方案 »

  1.   

    rsData.Fields("日期") >= CDate(strStartDate) And rsData.Fields("日期") <= CDate(strEndDate) And blnSlc(rsData.Fields("时"), intHourRx()) 比较时间是不是应该用:DateDiff函数?
      

  2.   

    把数据取回来后再筛选,这样的效率有点低,还不如直接在SQL语句里实现。
    另,好像楼主的结贴率有低哦。
      

  3.   

    我也知道这样会慢,可是没办法,系统要赶时间出来,目前对SQL还不是很熟悉,还不能实际应用。所以。
    至于结贴率低,我一共提问了3,4次,结果没有一个问题有有价值的回答的。怎么结贴?白送分?
    毕竟我来这里提问,是想获得帮助的。
      

  4.   

    '数据库为SQL:
    select * from 表名 where 日期字段 between '2009-5-30 00:00:00' and '2009-5-31 23:59:59'
    '数据库为ACCESS:
    select * from 表名 where 日期字段 between #2009-5-30 00:00:00# and #2009-5-31 23:59:59#
      

  5.   

    select * from 表名 where 日期字段 between #2009-5-30 00:00:00# and #2009-5-31 23:59:59#
    结帖可以选择无满意结帖的