以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]日期列不同值的集合  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=154107)

--  作者:天一生水
--  发布时间:2020/9/3 20:35:00
--  [求助]日期列不同值的集合

老师好!

获取[日期]列中不同的日期,放入集合;

遍历不同日期时,比如把[日期]是明天的行选出来,按照 换手率  排序,取前10行。

下面的代码哪里错了?

谢谢!

 

Dim dr As DataRow
Dim dr1 As DataRow
\'获得所有日期,保存在集合中
Dim rq0s As List(Of String) = DataTables("批量预测").SQLGetValues("日期")
For Each rq0 As String In rq0s
    \'获得该日期的全部行,按换手率排序
   
    If CDate(rq0) = Date.Today.AddDays(1) Then     \'预测明天,将字符转为日期
        Dim rqs As List(Of DataRow) = DataTables("批量预测").sqlSelect("[日期] = \'" & CDate(rq0) & "\' And 4.5 < 预测涨跌幅 < 5.5 ", "平均换手率 DESC")
       
        msgbox(rqs.Count)
        If rqs.Count > 1 Then
            For n As Integer = 0 To 3   \'遍历前10行
                dr = DataTables("牛熊池").sqlFind("[日期] = " & rq0  And "代码 = \'" &  rqs(n)("代码") & "\'")
                If dr IsNot Nothing Then \'如果找到的话
                    dr("代码") = rqs(n)("代码")
                    dr("日期") = rqs(n)("日期")
                    dr("预测涨跌幅") = rqs(n)("预测涨跌幅")
                    dr("预测时间") = Date.Now
                    dr("预测来源") = "自动"
                Else
                    dr1 = DataTables("牛熊池").AddNew()
                    dr1("代码") = rqs(n)("代码")
                    dr1("日期") = rqs(n)("日期")
                    dr1("预测涨跌幅") = rqs(n)("预测涨跌幅")
                    dr1("预测时间") = Date.Now
                    dr("预测来源") = "自动"
                End If
            Next
        Else
        End If
    End If
Next

 


--  作者:有点蓝
--  发布时间:2020/9/3 20:45:00
--  
For n As Integer = 0 To math.min(3,rqs.Count - 1   \'遍历前10行
--  作者:天一生水
--  发布时间:2020/9/3 21:10:00
--  

谢谢蓝老师!

这句代码有数据,但是没有显示出来,请老师再帮忙看看。

 

Dim rqs As List(Of DataRow) = DataTables("批量预测").sqlSelect("[日期] = \'" & CDate(rq0) & "\' And 4.5 < 预测涨跌幅 < 5.5 ", "平均换手率 DESC")

 

msgbox(rqs.Count)


--  作者:有点蓝
--  发布时间:2020/9/3 21:18:00
--  
 And 4.5 < 预测涨跌幅 and 预测涨跌幅 < 5.5 
--  作者:天一生水
--  发布时间:2020/9/3 22:11:00
--  

谢谢!

可以了,但是加上排序,又找不到了,

 

 Dim rqs As List(Of DataRow) = DataTables("批量预测").sqlSelect("[日期] = \'" & CDate(rq0) & "\' And 4.5 < 预测涨跌幅 and 预测涨跌幅 < 5.5  ", "","平均换手率 DESC")

 

 

知道了,[平均换手率]是表达式列,代码:

(isnull([上1日换手率],0) + isnull([上2日换手率],0) + isnull([上3日换手率],0)) / (iif([上1日换手率] is null, 0, 1) + iif([上2日换手率] is null, 0, 1) + iif([上3日换手率] is null, 0, 1))
       


图片点击可在新窗口打开查看此主题相关图片如下:截屏图片.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2020/9/3 22:37:23编辑过]

--  作者:有点蓝
--  发布时间:2020/9/3 22:37:00
--  
不可能和排序有关
--  作者:天一生水
--  发布时间:2020/9/3 22:39:00
--  

刚看到,这个是表达式列。

求3列的平均值,老师有没有好用的代码?

谢谢!


--  作者:有点蓝
--  发布时间:2020/9/3 22:44:00
--  
试试:
Dim rqs As List(Of DataRow) = DataTables("批量预测").sqlSelect("[日期] = \'" & CDate(rq0) & "\' And 4.5 < 预测涨跌幅 and 预测涨跌幅 < 5.5  ", "","(表达式代码放到这里) DESC")

如果不行就使用SQLcommand和sql获取数据吧