以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]ylm老师请教您一下... (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1398) |
-- 作者:菜鸟foxtable -- 发布时间:2008/12/15 22:57:00 -- [求助]ylm老师请教您一下... 您的作品报价系统中的窗口5查询按钮里有一段这样的代码 能否抽空给俺们这些菜鸟讲解一下标记了红色的符号的使用意义及此行条件代码的意思吗? Dim F As String =e.Form.Controls("列名").Value Dim z As String =e.Form.Controls("关键字").Value Dim s As Single Dim d As Date Dim Filter As String If z="" OrElse f= "" Then MessageBox.Show("列名或关键字不能为空.", "提示", MessageBoxButtons.ok, MessageBoxIcon.Information) ElseIf Tables("产品明细").Cols( f ).IsNumeric Then \'如果筛选列中数值型 Single.TryParse(z,s) \'将变量转换成数值型 Filter = F & "= " & s Else Filter = F & " Like \'*" & z & "*\'" End If If Filter > "" Then Tables("产品明细").Filter = Filter End If [此贴子已经被作者于2008-12-15 22:59:07编辑过]
|
-- 作者:kylin -- 发布时间:2008/12/16 8:42:00 -- 暂且说明一下 Filter = F & "= " & s ,形成了关于数值列等于多少的条件表达式(两个& 是一般的字符连接符号) Filter = F & " Like \'*" & z & "*\'" 形成关于字符列包含的条件表达式(第1个& 是一般的字符连接符号,Like \'*" & z & "*\' 约当于 Like \'*你好*\') 总的是对该表的数值列取等于表达式,对该表的字符列取包含表达式,全部连接起来。 |
-- 作者:菜鸟foxtable -- 发布时间:2008/12/16 10:26:00 -- 能否专门出个专题,讲解下什么时候用&&什么时候用"" 还有那个** 哎?好象就在这才见过**..... |
-- 作者:狐狸爸爸 -- 发布时间:2008/12/16 10:29:00 -- 动态合成表达式 不少初次接触编程的用户,对于何时使用双引号,何时使用单引号,感到非常困惑。 其实很简单,代码中的字符串都是用双引号括起来的。 例如: Dim s As String 而单引号主要用于表达式,表达式可以用于计算、筛选。 例如: 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 Compute的第二个参数为计算条件表达式,该表达式分为三部分: "[产品] = \'" & Vars("产品") & "\'" 假定全局变量Vars("产品")的值为PD01,组合三部分的内容后,这个表达式就等效于: "[产品] = \'PD01\'" 假定表A和表B都有品名、型号两列,我们在表A中选择了一行,希望从表B中找出相同品名、规格的行: Dim dr1 As DataRow = Tables("表A").Current.DataRow 上面代码的最后一行,初看非常难以理解。 "[品名] = \'要找品名\' And [规格] = \'要找的规格\'" 其中红色的部分要被dr1中的实际的品名和规格代替,所以最终的表达式成了: "[品名] = \'" & dr1("品名") & "\'And [规格] = \'" & dr1("规格") & "\'" 上面都是用字符型的值作为例子,表达式中字符型的值要用单引号括起来。 Dim StartDate As Date
\'起始日期变量 如果是数值,则不需要括起来,直接使用即可。 Tables("表A").Filter = "[编号] = " & Vars("编号") 一定要记住表达式中的字符用单引号括起来,日期用符号#括起来,数值则不需要任何符号。 Tables("表A").Filter = "[编号] = \'" & dr("编号") & "\'" 然后问我为什么不能执行?我想原因你应该已经知道了。 DataTable和Table都有很多属性和方法用到了表达式,我们必须掌握单引号和双引号的区别,并学会动态合成表达式,才能设计出强大而又灵活的管理系统。 |
-- 作者:菜鸟foxtable -- 发布时间:2008/12/16 11:30:00 -- 学习了.. 专业报表里文本打印算是搞明白了一点点.. rb.Text = tables("基本资料")(0)("单位名称") & "费用清单" 哈.变量+文本... |