以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  时间问题,当年的时间如何设置  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=160184)

--  作者:hbfnmxb
--  发布时间:2021/1/23 19:17:00
--  时间问题,当年的时间如何设置
这里有一段代码:

Dim dt1 As DataTable = DataTables("一分一档")
For Each ary As String() In dt1.GetValues("选科系列|最低分", "选科系列 is not null")
    Dim filter As String = "选科系列=\'" & ary(0) & "\'And 最低分=\'" & ary(1) & "\'"
    Dim filter1 As String = filter & " And 录取年度 = \'2021\'"
    Dim filter2 As String = filter & " And 录取年度 = \'2020\'"
    Dim filter3 As String = filter & " And 录取年度 = \'2019\'"
    Dim filter4 As String = filter & " And 录取年度 = \'2018\'"
    Dim filter5 As String = filter & " And 录取年度 = \'2017\'"

Dim fdr1 = dt1.find(filter1)
    If fdr1 IsNot Nothing Then
        dt1.ReplaceFor("本年度排名", fdr1("全省排名"), filter)
    End If
    
    Dim fdr2 = dt1.find(filter2)
    If fdr2 IsNot Nothing Then
        dt1.ReplaceFor("减一年排名", fdr2("全省排名"), filter)
    End If
    
    Dim fdr3 = dt1.find(filter3)
    If fdr3 IsNot Nothing Then
        dt1.ReplaceFor("减二年排名", fdr3("全省排名"), filter)
    End If
    
    Dim fdr4 = dt1.find(filter4)
    If fdr4 IsNot Nothing Then
        dt1.ReplaceFor("减三年排名", fdr4("全省排名"), filter)
    End If

    Dim fdr5 = dt1.find(filter5)
    If fdr5 IsNot Nothing Then
        dt1.ReplaceFor("减四年排名", fdr5("全省排名"), filter)
    End If

Next
红色部分中的2021年、2020年、2019年,我希望用Year(today())这种变量格式来表示。目的就是代码设置好后,到明年甚至后年也就是2022年或2023年不再去改动它。这段代码如何修改?谢谢老师

--  作者:李孝春
--  发布时间:2021/1/23 21:07:00
--  回复:(hbfnmxb)时间问题,当年的时间如何设置
Dim t As Date= Date.Now
For Each ary As String() In dt1.GetValues("选科系列|最低分", "选科系列 is not null")
    Dim filter As String = "选科系列=\'" & ary(0) & "\'And 最低分=\'" & ary(1) & "\'"
    Dim filter1 As String = filter & " And 录取年度 = \'" & t.Year & "\'"

是不是这样的?

--  作者:hbfnmxb
--  发布时间:2021/1/23 21:32:00
--  
谢谢老师!2020年,2019年如何定义呢?


--  作者:李孝春
--  发布时间:2021/1/23 21:35:00
--  回复:(hbfnmxb)谢谢老师!2020年,2019年如何定义呢...
你是要当年时间然后对应倒退几年?

Dim d1 As Date = d.AddYears(10\'加上10年
Dim
 d2 
As Date = d.AddYears(-10\'减去10年


Dim t As Date= Date.Now
For Each ary As String() In dt1.GetValues("选科系列|最低分", "选科系列 is not null")
Dim filter As String = "选科系列=\'" & ary(0) & "\'And 最低分=\'" & ary(1) & "\'"
Dim i As Integer
For i = 0 To 4   ‘从当年开始倒退五年
    Dim d2 As Date = t.AddYears(-i) \'减去年
    Dim filter1 As String = filter & " And 录取年度 = \'" & d2.year & "\'"
Next
[此贴子已经被作者于2021/1/23 21:50:50编辑过]

--  作者:hbfnmxb
--  发布时间:2021/1/23 21:53:00
--  
当年2021年,需要这个时间,减一年2020年,这个时间也需要,2019年,减二年的,2018年减三年的,还有2017年,减四年。红色代码部分的年度,都需要修改成变量
--  作者:hbfnmxb
--  发布时间:2021/1/23 22:07:00
--  
无法在 System.Double 和 System.String 上执行“=”操作
这个错误提示是什么原因?哪里出了问题?

--  作者:hbfnmxb
--  发布时间:2021/1/23 22:28:00
--  
Dim t As Date= Date.Now
Dim t1 As Date = t.AddYears(-1\'减去1年,即2020年
Dim t2 As Date = t.AddYears(-2\'减去2年,即2019年
Dim t3 As Date = t.AddYears(-3\'减去3年,即2018年
Dim t4 As Date = t.AddYears(-4\'减去4年,即2017年
Dim dt1 As DataTable = DataTables("一分一档")
For Each ary As String() In dt1.GetValues("选科系列|最低分", "选科系列 is not null")
    Dim filter As String = "选科系列=\'" & ary(0) & "\'And 最低分=\'" & ary(1) & "\'"
    Dim filter1 As String = filter & " And 录取年度 = \'" & t.Year & "\'"
    Dim filter2 As String = filter & " And 录取年度 = \'" & t1.Year & "\'"
    Dim filter3 As String = filter & " And 录取年度 = \'" & t2.Year & "\'"
    Dim filter4 As String = filter & " And 录取年度 = \'" & t3.Year & "\'"
    Dim filter5 As String = filter & " And 录取年度 = \'" & t4.Year & "\'"

Dim fdr1 = dt1.find(filter1)
    If fdr1 IsNot Nothing Then
        dt1.ReplaceFor("本年度排名", fdr1("全省排名"), filter)
    End If
    
    Dim fdr2 = dt1.find(filter2)
    If fdr2 IsNot Nothing Then
        dt1.ReplaceFor("减一年排名", fdr2("全省排名"), filter)
    End If
    
    Dim fdr3 = dt1.find(filter3)
    If fdr3 IsNot Nothing Then
        dt1.ReplaceFor("减二年排名", fdr3("全省排名"), filter)
    End If
    
    Dim fdr4 = dt1.find(filter4)
    If fdr4 IsNot Nothing Then
        dt1.ReplaceFor("减三年排名", fdr4("全省排名"), filter)
    End If

    Dim fdr5 = dt1.find(filter5)
    If fdr5 IsNot Nothing Then
        dt1.ReplaceFor("减四年排名", fdr5("全省排名"), filter)
    End If

Next

嗯,红色部分代码,这样修改应该可以,老师看一下。对吗?

--  作者:李孝春
--  发布时间:2021/1/23 22:30:00
--  回复:(hbfnmxb)无法在 System.Double 和 System.St...
Dim t As Date= Date.Now
\'For Each ary As String() In dt1.GetValues("选科系列|最低分", "选科系列 is not null")
\'Dim filter As String = "选科系列=\'" & ary(0) & "\'And 最低分=\'" & ary(1) & "\'"
Dim i As Integer
For i = 0 To 4   \'从当年开始倒退五年
    Dim d2 As Date = t.AddYears(-i) \'减去年
    Dim filter As String ="ABC"
    Dim filter1 As String = filter & " And 录取年度 = \'" & d2.year & "\'"
    output.Show(filter1 )
Next
上面代码在命令创库运行
得到结果
ABC And 录取年度 = \'2021\'
ABC And 录取年度 = \'2020\'
ABC And 录取年度 = \'2019\'
ABC And 录取年度 = \'2018\'
ABC And 录取年度 = \'2017\'

请自行排查一下 你其他代码

你代码标注的红色部分 换成下面的代码试一试
Dim i As Integer
For i = 0 To 4   \'从当年开始倒退五年
    Dim d2 As Date = t.AddYears(-i) \'减去年
    Dim filter1 As String = filter & " And 录取年度 = \'" & d2.year & "\'"
    output.Show(filter1 )
Next
[此贴子已经被作者于2021/1/23 22:31:16编辑过]

--  作者:hbfnmxb
--  发布时间:2021/1/23 22:33:00
--  
好的,谢谢老师。我再查一查