以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]学习 fill中遇到问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16421)

--  作者:gzdw
--  发布时间:2012/2/13 19:59:00
--  [求助]学习 fill中遇到问题

\'测试Fill方法,以下是帮助中的说明:
\'如果需要从从其它表加载数据,则需要使用Fill方法。
\'Fill方法能够根据指定的SQL语句,从指定的数据源中加载数据。


Dim StartDate As Date
StartDate=#2012-1-1 00:00:00#
\'直接指定日期进行“Fill方法”
\'“测试表”为内部表,{远程}为外部数据源的表名,表结构相同。
\' 连接名称为“测试”,
DataTables("测试表").Fill("Select * From {远程} where [日期时间] > #" & StartDate & "#", "测试",False)

 

存在一个问题,上述代码执行后,在表中能看到新增的数据。但再次打开项目时,还是原有数据,没有新增的数据。

这个新增数据还需要用代码来保存吗?


 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目4.rar

[此贴子已经被作者于2012-2-13 23:02:40编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/2/13 21:42:00
--  

Fill使用是sql语法,如果数据源是SQl SERVER,日期常量用单引号而不是#号括起来,例如:
SELECT * FROM {订单} WHERE 日期 >= \'1/1/1999\' AND 日期 <= \'1/31/1999\'
如果是Oracle的数据源,必须用TO_DATE函数转换,例如加载1999年10月21日的订单:
SELECT * FROM {订单} WHERE 日期 = TO_DATE(\'10/21/1999\',\'MM/DD/YYYY\')

 

参考:

 

http://www.foxtable.com/help/topics/2343.htm
 


--  作者:gzdw
--  发布时间:2012/2/13 21:56:00
--  

我这个外部数据源是“Access”文件。

请问老大,怎样才能把新增数据保存起来?


--  作者:狐狸爸爸
--  发布时间:2012/2/13 21:59:00
--  

增加数据之后,保存即可,和内部表没有任何差别。

注意一点: 外部表默认只加载10行数据。


--  作者:gzdw
--  发布时间:2012/2/13 22:08:00
--  

上述命令是用于内部表(原来已有数据)从access文件中增加数据。

使用fill方法后,这个内部表中已能看到新增的数据,但退出项目(并且按了保存按钮)后,再次打开就没有了


--  作者:gzdw
--  发布时间:2012/2/13 23:03:00
--  
我把项目文件上传了,请老大看一下。
--  作者:mr725
--  发布时间:2012/2/14 8:53:00
--  
没看懂,你是要在“测试表”中增加数据源中指定日期的数据?  这样用SQLCommand 加 数据填充器Filler不是很简单吗?
--  作者:狐狸爸爸
--  发布时间:2012/2/14 8:55:00
--  

抱歉,我无法理解你的问题,我不明白你的增加按钮的代码为什么这么复杂。

外部表和内部表本没有差别的,一样的用AddNew增加行,然后保存即可。


--  作者:gzdw
--  发布时间:2012/2/14 9:03:00
--  

不好意思,主要是在帮助中看到“filler”的用法,想使用。

昨晚后来才看明白,“filler”是加载数据至某表,而不是“添加”。

现在我把增加数据的代码修改了,可以实按条件把外部数据源的数据“添加”至“测试表”:

\'增加新数据
\'先把数据加载至表b
DataTables("表b").Fill("Select * From {远程} where [datetime] >= #" & StartDate & "# And [datetime] < #" & EndDate & "#" , "测试",False)

\'再接受数据

Dim f As New Filler
f.SourceTable = DataTables("表b") \'指定数据来源
f.SourceCols = "jqno,datetime" \'指定数据来源列
f.DataTable = DataTables("测试表") \'指定数据接收表
f.DataCols = "jqno,datetime" \'指定数据接收列
f.Fill() \'填充数据
MessageBox.Show("接收数据结束")
DataTables("测试表").Save

 

[此贴子已经被作者于2012-2-14 9:07:25编辑过]