以文本方式查看主题

-  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=81173)

--  作者:ahbrq
--  发布时间: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
--  发布时间:2016/2/19 22:46:00
--  
上传实例看看,不明白所说的.
--  作者:大红袍
--  发布时间: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
--  发布时间:2016/2/20 20:41:00
--  
 3楼是给所有数据的截至日期赋值,我是每个季度导入数据,希望的是给刚导入的数据赋值。代码怎么写?
[此贴子已经被作者于2016/2/20 20:53:40编辑过]

--  作者:大红袍
--  发布时间:2016/2/21 10:54:00
--  
3楼的代码就是啊。
--  作者:ahbrq
--  发布时间: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楼代码是正确的,我希望帮我看看我的代码错在哪儿?


--  作者:大红袍
--  发布时间: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
--  发布时间: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编辑过]

--  作者:大红袍
--  发布时间: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
--  发布时间:2016/3/1 22:39:00
--  

 回复9楼

 

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