Foxtable(狐表)用户栏目专家坐堂 → 关于填充代码问题


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

主题:关于填充代码问题

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


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
关于填充代码问题  发帖心情 Post By:2008/11/24 22:16:00 [只看该作者]

dim f As New Filler
f.SourceTable = DataTables("任课老师表") '指定数据来源
f.SourceCols = "班主任"  '指定数据来源列
f.DataTable = DataTables("班主任成绩表") '指定数据接收表
f.DataCols = "班主任"  '指定数据接收列
f.ExcludeExistValue=true  '逻辑型,设为True,排除接收表中已经存在的内容.
f.ExcludeNullValue=false  '排除空白值
f.Distinct= false    '将不会排除重复内容,也不会排除已有内容和空白值.
f.Filter="[年级]='年级' And [班级]='班级' "
f.Fill() '填充

请教这个代码中的这句: F.Filter="[年级]='年级' And [班级]='班级' "  是否正确?如果不正确应该如何改写?
[此贴子已经被作者于2008-11-24 22:24:32编辑过]

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


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2008/11/25 8:34:00 [只看该作者]

也许这个问题得由贺老师来指教


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


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

完全不对的。

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


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

但是也没有办法帮你改正,具体问题具体分析,而你提的问题不清晰。

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


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

单引号和双引号

不少初次接触编程的用户,对于何时使用双引号,何时使用单引号,感到非常困惑。

其实很简单,代码中的字符串都是用双引号括起来的。

例如:

Dim s As String
s =
"abcd"

而单引号主要用于表达式,表达式可以用于计算、筛选。
表达式本身是一个字符串,所以必须用双引号括起来;表达式内部的字符串,用单引号括起来。

例如:

CurrentTable.Filter = "[产品] = 'PD01'"

上面的代码意思是在当前表中筛选出产品为PD01的行,筛选表达式本身是一个字符串,所以用双引号括起来,表达式中的PD01也是一个字符串,是表达式的一个内部字符串,所以用单引号括起来。
表达式中的日期继续用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

例如:

CurrentTable.Filter = "[产品] = 'PD01' And [日期] = #3/17/1999# And [折扣] = 0"

通过表达式列的Expression属性,可以动态设置其计算公式

例如:

DataTables("表A").DataCols("ID").Expression = "'CA' + [_Identify]"

实际编程的时候,经常要根据用户的输入,动态合成表达式。

例如:

例如要计算某个产品的销售数量,要计算的产品名称由用户输入,假定输入的结果保存在全局变量Vars("产品")中:

Dim Sum As Integer
Sum = 
DataTables("订单").Compute("Sum(数量)", "[产品] = '" & Vars("产品") & "'")

Compute的第二个参数为计算条件表达式,假定全局变量Vars("产品")的值为PD01,第二个参数就等于:

"[产品] = 'PD01'"

假定表A和表B都有品名、型号两列,我们在表A中选择了一行,希望从表B中找出相同品名、规格的行:

Dim dr1 As DataRow = Tables("A").Current.DataRow
Dim
dr2 As DataRow
dr2 =
DataTables("表B").Find("[品名]  = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'")

上面代码的最后一行,初看非常难以理解。
为便于理解,我们首先来看看看正常的查找表达式:

"[品名] = '要找品名' And [规格] = '要找的规格'"

其中红色的部分要被dr1中的实际的品名和规格代替,所以最终的表达式成了:

"[品名]  = '" & dr1("品名") & "'And [规格] = '" & dr1("规格") & "'"

再例如我们要筛选出指定月份的订单,但是因为表达式没有求得日期月份的函数,我们只能这样设置代码:

Dim StartDate As Date '起始日期变量
Dim
EndDate As Date '结束日期变量
Dim
Month As Integer = 6 '指定月份
Dim
Year As Integer = 1999 '指定年份
StartDate = New
Date(Year,Month,1) '获得该月第一天
EndDate = New
Date(Year,Month,Date.DaysInMonth(Year,Month)) '获得该月最后一天
Tables(
"订单").Filter = "[日期] >= #" & StartDate & "# And [日期] <= #" & EndDate & "#"

DataTable和Table都有很多属性和方法用到了表达式,我们必须掌握单引号和双引号的区别,并学会动态合成表达式,才能设计出强大而又灵活的管理系统。


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


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2008/11/25 15:26:00 [只看该作者]

以下是引用狐狸爸爸在2008-11-25 8:44:00的发言:
但是也没有办法帮你改正,具体问题具体分析,而你提的问题不清晰。

谢贺老师!
我是想用F.Filter="[年级]='年级' And [班级]='班级' "  这一句来限定复制的条件,设置的“任课老师表”和“班主任成绩表”两表都有班级、年级和班主任列,要将班主任列的记录按照班级、年级,从“任课老师表”复制到“班主任成绩表”的[班主任]列中,




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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/11/25 15:38:00 [只看该作者]

以下是引用老有所乐在2008-11-25 15:26:00的发言:


我是想用F.Filter="[年级]='年级' And [班级]='班级' "  这一句来限定复制的条件...

我想如"年級"列、"班級"列是整數型的話,則兩列的內容是:1,2,3...
如是字符型的話,則兩列的內容是:一年級,二年級(一班,二班)...

一般情況是不存在叫『年級』的"年級"及叫『班級』的"班級".


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


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2008/11/25 19:34:00 [只看该作者]

以下是引用don在2008-11-25 15:38:00的发言:

我想如"年級"列、"班級"列是整數型的話,則兩列的內容是:1,2,3...
如是字符型的話,則兩列的內容是:一年級,二年級(一班,二班)...

一般情況是不存在叫『年級』的"年級"及叫『班級』的"班級".

是整数列,应该如何表述?谢谢指点。


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/11/26 9:09:00 [只看该作者]

  猜楼主的意思:“班主任成绩表”的[年级] 和[班级]两列都已有数据,想根据这两列的数据在"班主任"列得到相应“任课老师表”的班主任名称!
  这样岂可用Filler,Filler相当易表的AppendFor,CopyFor,SelectFill等,是接在已有数据的后面,这时只能赋值或重算!磨刀不误砍柴工,认真细致多看几次帮助文件才是上策.

Dim T1,T2 As String
T1 = "年级 Is Not Null and 班级 Is Not null"

For Each dr As DataRow in DataTables("老师成绩表").Select(T1)

    T2 = "年级 = " & dr("年级") & "and 班级 =" & dr("班级")

    dr("班主任") = DataTables("任课老师表").FInd(T2)("班主任")

Next


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


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2008/11/26 13:44:00 [只看该作者]

谢谢dou先生!没有编程基础,感到狐表太难了,帮助看来几遍,一到应用就感到不知如何下手。


 回到顶部
总数 14 1 2 下一页