Foxtable(狐表)用户栏目专家坐堂 → 如何给”截止日期“字段赋值?


  共有3183人关注过本帖树形打印复制链接

主题:如何给”截止日期“字段赋值?

帅哥哟,离线,有人找我吗?
ahbrq
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
如何给”截止日期“字段赋值?  发帖心情 Post By:2016/2/19 22:07:00 [只看该作者]

 

 Dim Val As Date = Date.Today
If InputValue(Val, "筛选","请输入导入数据的截至日期:") Then
    Output.Show(Val)
End If

 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls;*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    Dim book As new XLS.Book(dlg.FileName)
    mg.SourceTableName = book.Sheets(0).Name & "$"
    mg.DataTableName = "储蓄积分"
    mg.Format = "Excel"
    mg.Merge()
End If

 

 

先输入截至日期给val,然后导入数据,倒入的数据不含截至日期。目前导入的是2015年底的数据,截至日期是20151231

 

到3月底要导入数据的截至日期是20160331,到六月是20160630,

 

 

接着把VAL赋值给截至日期。

 

代码可能是:FOR EACH   数据行  in  table 中

                          IF 截止日期=“”then  “截至日期”=VAL

具体怎么写呢?

[此贴子已经被作者于2016/2/20 20:40:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1242 积分:9374 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2016/2/19 22:46:00 [只看该作者]

上传实例看看,不明白所说的.

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/20 1:33:00 [只看该作者]

 导入后循环每一行赋值

 

Dim Val As Date = Date.Today
If InputValue(Val, "筛选","请输入导入数据的截至日期:") Then
    Output.Show(Val)
End If
Dim idx As Integer = Tables("储蓄积分").rows.count
 

Dim dlg As New OpenFileDialog '定义一个新的OpenFileDialog
dlg.Filter= "excel文件|*.xls;*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    Dim book As new XLS.Book(dlg.FileName)
    mg.SourceTableName = book.Sheets(0).Name & "$"
    mg.DataTableName = "储蓄积分"
    mg.Format = "Excel"
    mg.Merge()
End If

for i as integer = idx to  Tables("储蓄积分”).rows.count - 1
 Tables("储蓄积分”).rows(i)("截止日期") = val
next


 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/2/20 20:41:00 [只看该作者]

 3楼是给所有数据的截至日期赋值,我是每个季度导入数据,希望的是给刚导入的数据赋值。代码怎么写?
[此贴子已经被作者于2016/2/20 20:53:40编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/21 10:54:00 [只看该作者]

3楼的代码就是啊。

 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/2/29 21:27:00 [只看该作者]

问题一:导入本年度数据前,要删除已有的本年度数据(即导入二季度数据时要删除一季度数据,导入三季度数据时要删除上半年数据,以此类推),代码如下

 

Dim year As Integer = VAL.Year
DataTables("储蓄积分").DeleteFor(" 截至日期.year=VAL.year ")

 

此时系统提示:找不到”截至日期.year“  列。正确代码怎么写?

问题二:

 给新导入的截止日期赋值VAL,下面的代码错在哪儿:

 

For Each r In DataTables("储蓄积分").Row
 r("截至日期") = VAL
Next

 

3楼代码是正确的,我希望帮我看看我的代码错在哪儿?


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 22:42:00 [只看该作者]

1、没有这种语法,不能直接用year

 

DataTables("储蓄积分").DeleteFor(" 截至日期.year=VAL.year ")

 

看看 http://www.foxtable.com/help/topics/2720.htm

 

2、

 

For Each dr As DataRow In DataTables("储蓄积分").DataRows
    dr("截至日期") = VAL
Next


 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/3/1 21:09:00 [只看该作者]

问题一:

 7楼给出的帮助页面是删除给定年份的1月1日到该年的12月31日数据,也能实现我的功能。

 

我想这样实现:输入日期型给VAL,筛选表中“截至日期”字段的年份=VAL的年份,把这些记录删除。

我学习下面的帮助页面,发现是可以用Year的

http://www.foxtable.com/help/index.html?n=2720.htm

利用Year、Month、Day属性,可以获得给定日期的年、月、日值,例如:

Dim d1 As Date = Date.Today
Dim
year As Integer = d1.Year
Dim
month As Integer = d1.Month
Dim
day as Integer = d1.Day

 

希望这样的代码能实现我要的功能:DataTables("储蓄积分").DeleteFor(" 截至日期.year=VAL.year ")

我希望把满足“截至日期”的年份=VAL的年份  的记录删除,

 

但是报错,不知道什么原因。

 

问题二:

 

我希望给并入的数据记录中“截至日期”字段赋值VAL,

 

楼上给出的代码是把所有表中的“截止日期”字段都赋值VAL了,如果是空表这样写是可以的。但是当出现跨年度时,比如我现在并入2016年的数据,2015年数据会保留在表中,只要给并入的2016年数据

 

“截止日期”字段赋值VAL,代码怎么写?

 

 

 

[此贴子已经被作者于2016/3/1 21:30:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/1 22:08:00 [只看该作者]

1、

 

Dim  y As  Integer = val.year
Dim  dt1 As  New  Date(y,  1,  1)
Dim  dt2 As Date = dt1.AddYears(1)
Dim  Filter As  String =  "截至日期 >= #"  &  dt1  &  "# And 截至日期 < #"  &  dt2  &  "#"
DataTables("储蓄积分").DeleteFor(Filter)

 

2、看1,得到filter后,这样写

 

For Each dr As DataRow In DataTables("储蓄积分").Select(Filter)
    dr("截至日期") = VAL
Next


 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/3/1 22:39:00 [只看该作者]

 回复9楼

 

测试后系统提示 :select不是 datarowcollect的成员

 


 回到顶部
总数 15 1 2 下一页