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


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

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

帅哥哟,离线,有人找我吗?
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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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楼代码是正确的,我希望帮我看看我的代码错在哪儿?


 回到顶部
帅哥哟,离线,有人找我吗?
ahbrq
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

 回复9楼

 

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

 


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/3/5 19:45:00 [显示全部帖子]

 

 运行一下代码:

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

 


'删除与并入数据同年的记录
Dim  y As  Integer = Val.year
Dim  dt1 As  New  Date(y,  1,  1)
Dim  dt2 As Date = dt1.AddYears(1)
Dim  Filter1 As  String =  "截至日期 >= #"  &  dt1  &  "# And 截至日期 < #"  &  dt2  &  "#"
DataTables("储蓄积分").DeleteFor(Filter1)

 

出现这样的错误:


该字符串未被识别为有效的 DateTime。有一个从索引 9 处开始的未知字。

 

什么原因?


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/3/5 19:46:00 [显示全部帖子]

我为什么不能发表新话题?

 


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


加好友 发短信
等级:小狐 帖子:314 积分:2412 威望:0 精华:0 注册:2013/9/29 20:41:00
  发帖心情 Post By:2016/3/5 19:49:00 [显示全部帖子]

 代码错在哪儿呢?请高手指正!

 回到顶部