Foxtable(狐表)用户栏目专家坐堂 → [原创]菜鸟也能用foxtable开发自己的应用程序,图文视频教程[连载结束,整理至1楼]


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

主题:[原创]菜鸟也能用foxtable开发自己的应用程序,图文视频教程[连载结束,整理至1楼]

帅哥哟,离线,有人找我吗?
程兴刚
  101楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/1/22 9:50:00 [只看该作者]

好东西,顶楼主!

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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/22 9:55:00 [只看该作者]

第二章,

第二部分,快速建立会员消费表,并设置表事件

系统设置的预见性——增加时候的事件 (这个部分涉及的知识点较多,请大家多多留意)

我们先观察一下会员消费表的表结构及字段情况


此主题相关图片如下:1.png
按此在新窗口浏览图片


当我们添加一个消费记录的时候,会出现什么情况?哪些部分是需要我们特别注意的地方呢?

1.消费编号按需要进行自动编号;

解决的办法是什么呢?设置为[_identify]

2.消费日期,需要添加的时候自动生成;

自动生成很简单,用系统代码(已经多次提到date.today());

3.消费金额,是计算会员本次消费产品的金额总和;

这里也许有些困惑了,都不知道消费什么产品怎么知道总金额呢?

此处暂时留下第二个问题;

4.折扣需要根据会员的卡号自动从会员表获取;

一般情况下,我最开始的想法就是像Excel一样,直接引用不就可以了吗?

但是怎么做呢?毫无头绪。等会讲述。

5.折后金额,是【消费金额】*【折扣】

可以通过表达式计算,也可以通过代码计算;

这里注意一下区别,表达式是立即显示的,代码不是即时显示的(我的理解)

6.备注列[会员于什么时候,充值了多少钱?]

这里需要将自然羽然转化为计算机foxtable识别的语言

7.会员卡号需要自动从附表中继承。

也就是从会员表引用。

这里有几个重点,大家突出学习一下

一,跨表引用数据;

二,表间的关联设置;

[此贴子已经被作者于2013-1-22 10:05:29编辑过]

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


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
  发帖心情 Post By:2013/1/22 10:16:00 [只看该作者]

楼主确实非常用心,确非常人能够坚持做到的,赞叹!!!!

建议最后将所有讲的内容整合到一个word文件中,便于大家学习,呵呵,再次感谢!

[此贴子已经被作者于2013-1-22 10:16:10编辑过]

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


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2013/1/22 10:29:00 [只看该作者]

等视频

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


加好友 发短信
等级:婴狐 帖子:18 积分:220 威望:0 精华:0 注册:2013/1/15 21:44:00
  发帖心情 Post By:2013/1/22 11:03:00 [只看该作者]


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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/22 11:15:00 [只看该作者]

现在我们打开表属性,为几个简单的列设置属性


此主题相关图片如下:11.png
按此在新窗口浏览图片

我们关注到,消费金额、折扣、备注列我们暂时无法去做。

这个时候,我们考虑到表的关联问题;

在帮助文件中搜索关键词“表间关联”

我们按照帮助设置一下,会员表和会员消费表之间的关联。


此主题相关图片如下:22.png
按此在新窗口浏览图片


这个时候,我们发现一个很大的问题,关联表的列选中中,根本不存在。会员卡号这个一个列。头大了吧。

回想一下,我们刚刚是不是把会员表中的会员卡号和会员消费表中的卡号都设置成了 [_identify],这个是表达式。

再看看帮助,

提示:

1、表达式列不能作为关联列使用。
2
、父表关联列和子表关联列的数据类型必须相同。
3
、如果你的项目中有较多的表和关联,那么千万不要用poco这样过于简洁的关联名称,而应该使用可读性更强的名称,例如“产品_订单”、“客户_订单”

看看帮助第一点:表达式列不能作为关联列使用。

难道这么好的东西我们却无法使用?





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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/22 11:15:00 [只看该作者]

这个时候解决的办法有两个

1,       放弃使用自动编号

2,       让这个自动编号列成为正常列

第一种方法是我们不希望做的。但是如何使一个表达式列成为正常列呢?

能不能再建立一个列,让这个正常列获取那个表达式列的数据?

获取某行某列的数据,我们已经知道啦,e.datarow(“列名”),是不是?

那么现在只需要将这个值赋予一个正常列不就可以了。

好,这个表达式列是自动添加的,那么当这个列添加完成之后,我们将他的值写到一个正常列,这个时候,我们的代码如下

e.DataRow("会员卡号") = e.DataRow("会员编号")

这样是不是蛮简单的。

在打开关联表设置,我们是不是在会员表中看到了“会员卡号”这么一列呢?

同样的办法,我们将已经做过的几个表的自动编号,凡是涉及到以后要设置关联的地方全部都设置为正常列

e.DataRow("消费编号") = e.DataRow("消费编号公式")

e.DataRow("充值编号") = e.DataRow("充值编号公式")

 

按照这样的方法,我们设置了会员表和会员消费表之间的关联。



此主题相关图片如下:33.png
按此在新窗口浏览图片


在如上的下半部分图中,可以直接对某个会员进行消费操作。

这样是不是很容易?

 

紧接着,我在回到字段设置的最初。

关于折扣列的设置。

既然折扣列需要从会员表取值,那么属于跨表引用的问题。

在帮助中搜索“跨表引用”

里面详细介绍了,引用的两种方法

1,       建立关联,用表达式引用

2,       直接用代码

这里我们都介绍一下。


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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/22 11:16:00 [只看该作者]

用表达式的方法,简单易行。

我们在会员消费表中建立一个列,折扣表达式


此主题相关图片如下:44.png
按此在新窗口浏览图片

表达式如下

Parent(会员表_会员消费表).折扣

当我们设置完成之后,回到会员表,你在关联表中增加一行数据,你看看您发现了什么?



此主题相关图片如下:55.png
按此在新窗口浏览图片

折扣表达式列是不是自己出来了?



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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/22 11:17:00 [只看该作者]

用代码的方法,可靠,不需要建立任何关联,也就是说,你想在哪个数据表中取数,都没有任何问题。

'以下的代码需要去做的,在会员表中查找当前的会员卡号,然后将会员表的折扣写入到本表的折扣列中

1,Dim dr As DataRow

2,dr = DataTables("会员表").Find("会员卡号 = '" & e.DataRow("会员卡号"& "'")

3,If dr IsNot Nothing Then

4,    e.DataRow("折扣") = dr("折扣")

5End If

6MessageBox.Show(dr("折扣"))

观察第一行数据,这里是定义一个数据行,既然是在数据库中操作,那么免不了就要定义datarow

第二行,是查找语句,是最关键的地方,意思是从会员表中查找 会员卡号 等于当前  会员卡号的一条数据;

关于find语句本身简单,但是条件却比较复杂。

Find(Filter,Sort,Index)

Filter是表达式,当然用“”括起来

会员卡号 = '" & e.DataRow("会员卡号"& "'

会员卡号  这个地方,是列名 ,不用解释了

后面的地方为什么用 单引号呢?

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

实际上应该为     会员卡号 =    需要查找的内容  

’ 和需要查找的内容之间是字符需要用 & 连接 既然是表达式,所以又需要一个双引号

于是分开这样看: 会员卡号  = ‘  & e.datarow(“会员卡号”) &    ’

找到结果之后,立即将会员表的折扣赋值给当前行的折扣列。

 

接下来,我们关注本表的最后一列,备注列。

先贴出代码:

  e.DataRow("备注") = Date.Today & e.DataRow.GetParentRow("会员表")("会员姓名")  &  "消费了"  &  e.DataRow("折后金额") & ""

这串代码其实很容易理解,中间是字符连接符,其中有一点,提出来说明一下。

e.DataRow.GetParentRow("会员表")("会员姓名")

因为设置了关联,那么当前行的父表就有对应的行,引用父表对应行,直接用getparentrow

[此贴子已经被作者于2013-1-22 11:17:11编辑过]

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


加好友 发短信
等级:三尾狐 帖子:619 积分:3656 威望:0 精华:1 注册:2012/6/13 22:00:00
  发帖心情 Post By:2013/1/22 11:20:00 [只看该作者]

第二章,

第二部分,快速建立会员消费表,并设置表事件

系统设置的预见性——修改编辑事件 

系统设置的预见性——保存事件 

这两个部分在之前的两张表中有过详细的描述,这里就做过多的说明了。

大家按照原来介绍的方法去设置就可以了



 回到顶部