Foxtable(狐表)用户栏目专家坐堂 → [求助]学习 fill中遇到问题


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

主题:[求助]学习 fill中遇到问题

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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
[求助]学习 fill中遇到问题  发帖心情 Post By:2012/2/13 19:59:00 [只看该作者]

'测试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编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2012/2/13 21:56:00 [只看该作者]

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

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/13 21:59:00 [只看该作者]

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

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


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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2012/2/13 22:08:00 [只看该作者]

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

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


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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By:2012/2/13 23:03:00 [只看该作者]

我把项目文件上传了,请老大看一下。

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/2/14 8:53:00 [只看该作者]

没看懂,你是要在“测试表”中增加数据源中指定日期的数据?  这样用SQLCommand 加 数据填充器Filler不是很简单吗?

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/2/14 8:55:00 [只看该作者]

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

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


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


加好友 发短信
等级:小狐 帖子:308 积分:3351 威望:0 精华:0 注册:2011/12/22 17:52:00
  发帖心情 Post By: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编辑过]

 回到顶部