Foxtable(狐表)用户栏目专家坐堂 → [讨论]关于FoxTable的学习


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

主题:[讨论]关于FoxTable的学习

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/25 15:03:00 [显示全部帖子]

心急吃不得热汤,你想两天学会是不可能的,除非你有非常好的基础。

Foxtable的开发效率比VB快何止10倍,学习难度也小很多,你学一下VB.net就知道了,Foxtable只是用vb的语法而已的,大部分工作都已经做好,你只需关注管理逻辑即可。

[此贴子已经被作者于2009-5-25 15:03:51编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/25 16:57:00 [显示全部帖子]

Dim 的语法就一个。
不同的是As后面的类型。
例如:

Dim d As Double
Dim c As Integer

至于你说的类型,大部分的人开始的时候都会混淆,多看两次就明白了。
其实就是两组类型Table和DataTable,两者的差别看看:
开发篇 - Foxtable编程 - 基本类型 - 基本概念(重要)。
开发篇 - Foxtable编程 - 杂谈 - 再谈Table和DataTable。

过了这一关,基本上就OK了。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/25 17:48:00 [显示全部帖子]

DataTable包括所有的数据,就像一个仓库,而Table就像一个展厅,从仓库中提取符合条件的数据,按指定的顺序展示给客户。
所以Table有Filter(筛选)和Sort(排序)属性,用于决定展厅会展示那些数据,按什么样的顺序展示。
DataTable则不会有这些属性,它始终包括所有数据,且按照输入顺序排列。
展厅是对外开放的,是看得见的,所以我们平时看到的和操作的,都是是Table中的数据。
仓库是不对外开放的,是不可见的,我们只有通过代码才可能操作DataTable。


为什么要区分DataTable和Table呢?
我们的代码有时是针对所有数据的,有时则是针对看得见的数据,所以区分一下当然比较好。
但是这不是最重要的理由,最重要的理由是一个DataTable可能有多个Table,例如在产品表和订单表建立关联的时候,那么订单表就会有两个Table,分别是Tables("订单")和Tables("产品.订单"),也就是有了两个展厅,前者展示所有订单(如果你没有筛选的话),后者展示选定产品的订单;而仓库还是只有一个:DataTables(订单)。
这样我们就可以针对不同的"展厅"进行设置或操作,例如希望只能在"产品.订单"这个关联表中编辑数据,而不能在主表中编辑数据,只需:


Tables("订单").AllowEdit = False
Tables(产品.订单).AllowEdit = True


如果没有Table的概念存在,上述要求是不可能实现的。
随着学习的深入,你会看到,这种双层结构,给编程带来了极大的灵活性。


那么实际编程的时候,什么时候用DataTable,什么是用Table呢?其实很简单:如果你要对看得见的行进行操作,你就用Table,如果你要对所有行进行操作,你就用DataTable。

[此贴子已经被作者于2009-5-25 18:30:06编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/26 8:07:00 [显示全部帖子]

以下是引用xl在2009-5-26 7:50:00的发言:

我还是认为易表好用得多,对FOXTABLE的灵活运用不是1、2年就能解决的,同时FOXTABLE成熟还需一个过程:“粘贴”、“删除”速度特慢,数据填充器到现在仍在问题,连"清零"这些都需编代码........


强大和简单,始终是矛盾的,应该说易表是易用一些,而不是好用一些。
真要设计系统,Foxtable强过易表何止一个等级。
当然,简单的系统,用易表也不错。

掌握Foxtable的时间,看个人天份和耐心,但是1、2年是太超过了,我见过最快的一个用户,一天多点就掌握了精髓,可以灵活运行了。
比天份更重要的是耐心,一个没有耐心多看几次帮助,急于求成,不求甚解的人,别说一、两年,我看永远也掌握不了Foxtable。
易表够简单吧? 不还是有人用了很多年,始终掌握不了,连续快两年都在问一些同样的问题。

可以说,Foxtable在易用和强大之间,有了一个较好的平衡,是一个真正的工具,但是对用户的逻辑能力、理解能力,特别是耐心,都有了比易表更高的要求,如果你掌握不了,基本上你就只能用一些“玩具”型的软件了。

Foxtable定位比易表高一些,将吸引一些更高档次的用户,同时对于部分用户来说,确实用易表更合适的。

此外,复制、粘贴不是Foxtable的长处,不过这对于Foxtable的应用,并没有太大的影响,因为没有多少人动不动就去复制粘贴上千行的,反过来,Foxtable比易表快的地方,要多得多。

[此贴子已经被作者于2009-5-26 8:19:38编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/26 9:07:00 [显示全部帖子]

以下是引用shixia在2009-5-26 8:54:00的发言:
比如compute("Sum(" & ("" & dr("月份")) &")") 


我比窦娥还冤呢,帮助中明明有专门一章,介绍动态合成表达式的。


图片点击可在新窗口打开查看此主题相关图片如下:asd.gif
图片点击可在新窗口打开查看

此外,你的这个太罗嗦,应该:

compute("Sum(月" & dr("月份") & ")")

图片点击可在新窗口打开查看

[此贴子已经被作者于2009-5-26 9:18:07编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/26 10:03:00 [显示全部帖子]

以下是引用sohper在2009-5-26 9:34:00的发言:

您所说的这是定义变量

还有一些
Dim Dr AS  DateRow   /   Dim Dr AS Row 之类的,没有明确的概念给予说明!


呵呵,这个神仙也没有办法明确的。
DataRow表示DataTable中的行。
Row表示Table中的行。
你要定义什么类型的变量,只有你自己清楚啊。

以下内容来自帮助:

DataTable

通过DataTables集合,可以获得指定名称的DataTable(表)。

例如:

Dim dt As DataTable
dt = DataTables("订单")


DataCol表示DataTable中的列。
通过DataCols集合,可以获得指定名称的DataCol(列)。


例如:

Dim dt As DataTable = DataTables("订单")
Dim
dc As DataCol = dt.DataCols("日期")


DataRow表示DataTable中的行。

通过DataRows集合,可以获得某一位置的DataRow(行)。


例如:


Dim
dr As DataRow
dr = DataTables("订单").DataRows(0)


Table

通过Tables集合,可以获得指定名称的Table(表),例如:

Dim t1 As Table
Dim t2 As Table
t1 = Tables("订单"
)

t2 = Tables("产品.订单")

Col表示Table中的列。
通过Cols集合,可以获得指定名称的列(Col),例如:

Dim c1 As Col = Tables("订单").Cols("客户")

 

Row表示Table中的行。
通过Table的Rows集合可以获得指定位置的行,例如:

 

Dim r1 As Row = Tables("订单").Rows(1)

[此贴子已经被作者于2009-5-26 10:07:34编辑过]

 回到顶部