| 这个查询已经建立起来了,但如果只想看看北京地区的客户订单情况,应当该怎么办吗?其实只需要在这个查询中再添加一个字段,然后再为这个字段添加一条准则就可以解决这个问题,这个查询的数据表中就只有北京地区的客户订单情况了。 添加的字段和准则到底是怎么回事呢?其实在这个查询中添加的字段是“客户信息表”中的“城市”字段,因为这个表和“订单信息表”有关系。所以当我们在查询中添加“城市”字段后,这个字段就会自动将签单公司所在城市的名称信息反映出来。有了这个前提我们只要再添加一个限制条件,也就是让“城市”字段中的值等于“北京”。这时再看查询的数据表视图就会发现,只有满足了这些条件的记录才会显示出来。 往查询里添加选择准则,有两个问题应该考虑, 首先是为哪个字段添加“准则”,其次就是要在这个字段添加什么样的“准则”。 就拿刚才的这个例子来说吧,很明显就是为“城市”字段添加“准则”,而添加的准则就是限制“城市”字段中的值只能等于“北京”。限定了这两个条件,就可以很容易地实现任何一种选择准则了。 如何在查询中添加准则呢?我们就将刚才的例子做一遍吧。首先我们要通过“显示表”对话框添加“客户信息表”到查询窗口中,然后选取这个表中的“城市”字段作为查询中的一个字段,由于我们不想让这个字段中的值显示在数据表中,就取消此字段的可见性,将它的“显示”属性定为“否”。添加完这个字段就可以添加条件规则了,现在我们就可以在“城市”字段的“规则”属性中写上“="北京"”,这样就可以了,如下图所示。 但有时候,当我们需要对查询记录中的几种信息同时进行限制的时候,就需要将所有这些限制规则一一添加到需要的字段上,这样只有完全满足限制条件的那些记录才能显示出来。现在我就在“订货数量”和“总金额”上都添加一个规则,让“订货数量”大于“200”,“总金额”小于“100000”,这个查询的数据表,只有同时满足这三个条件限制的记录才被选了出来,如下图所示。 除此之外,一个字段还可以有多条限制“规则”。每条“规则”之间可以用逻辑符号来连接。比如要为“总金额”字段添加“<100000”或者“>150000”的规则,只要在“规则”栏内输入“<100000 or >150000”就可以了。 |
| 在我们制定规则的时候,有时会用到很多函数或表中的字段名。直接来写的话会很麻烦。 为了解决这种问题,ACCESS提供了一个名叫“表达式生成器”的工具,在这个工具中,给我们提供了数据库中所有的“表”或“查询”中“字段”名称、窗体、报表中的各种控件,还有很多函数、常量及操作符和通用表达式。将它们进行合理搭配,就可以书写任何一种表达式,十分方便。 现在我们就打开“表达式生成器”,在查询的规则行中单击鼠标右键,在弹出的菜单中可以看到一个“生成器...”的命令,单击它以后就会弹出一个“表达式生成器”。 在这个“表达式生成器”中,上方的这个方框用来输入“表达式”,是“表达式编辑框”,下面的一排“按钮”是操作符的快捷按钮,因为在表达式中,操作符出现的频率是最高的,我们单击任何一个按钮,“表达式编辑框”中就会出现相应的操作符 。在这排按钮的下面是三个列表框,最左面的这个框中是最基本的选项,选中这些选项以后,第二个列表框中就会出现次一级的列表。再选中第二个列表中的某一项,第三个列表框中就会出现更下一级的列表,在第三个列表中单击某一项,就可以将这一项加到表达式编辑器中了。 举个例子,现在我要在表达式编辑器中输入“[客户信息表]![公司名称]”,可以在编辑器中直接输入这行字,也可以先单击第一个列表框上的“表”项,这时就会弹出三个表“客户信息表”、“订单信息表”和“产品信息表”。选择“客户信息表”就会发现在第二个列表框中出现了这个表中的所有字段列表。再选择“公司名称”项,并双击第三个列表框中的“值”,这时在表达式编辑框中就出现了“[客户信息表]![公司名称]”。 结果如下图所示。 可以在ACCESS中任何需要表达式的位置上使用,只要单击鼠标右键,然后在弹出的菜单上单击“生成器...”命令,就可以打开它编辑表达式了。 | | 表达式生成器上的这些快捷按钮都有什么用途呢? “+”、“-”、“*”、“/”这几个符号就代表数学运算中的“加”、“减”、“乘”、“除”四种运算符号。使用“&”符号可以使两个表达式强制连接在一起,比如: "数据库"&"使用指南" 将返回: "数据库使用指南",也就是将这两个字符串连接在一起,左面的字符串在前面,右面的字符串在后面。 如下图所示。 “=”、“>”、“<”、“<>”这四个符号分别表示“等于”、“大于”、“小于”、“不等于”,它们都是用来判断某个条件是否为满足,例如: “ =34 ” 表示当某个值等于34时才算满足这个条件。 “<>"北京" ” 表示当某个值不等于字符串“北京”时才算满足了条件。 “And”、“Or”、“Not”这三个逻辑运算符是用来连接上面的这些条件表达式的。比如: “ >100 And <300 ” 就表示只有某个值大于100并且小于300时原能算条件满足; “ >100 Or <300” 则表示这个值要大于100或者小于300,实际上就是任何数都满足这个条件; “Not >100 ” 这个表达式则表示只要这个值不大于100 ,这个条件就算满足了。 还有一个“Like ”, 这个符号又怎么用呢?这个符号常常用在对一个字符型的值进行逻辑判断,是否这个值满足某种格式类型。所以通常“Like”并不单独使用,常常还要跟一些别的符号: “?”表示任何单一字符; “*”表示零个或多个字符; “#”表示任何一个数字; “[字符列表]”表示字符列表中的任何单一字符; “[!字符列表]”表示不在字符列表中的任何单一字符。 我们一起看几个例子, Like "中国?" 则字符串“中国人”、“中国字”都满足这个条件; Like "中国*" 则字符串“中国”、“中国人”、“中国人民银行”这些都满足这个条件; Like "表#" 则字符串“表1”、“表2”都满足这个条件; Like "[北京,上海,广州]" 则只有字符串“北京”、“上海”、“广州”可以满足条件; Like "[!北京,上海,广州]" 则只有字符串“北京”、“上海”、“广州”不能满足条件。 | | Asc(字符串表达式) 代表字符串中首字母的字符代码,返回一个 Integer,。 但是 这个字符串表达式不能没有,不然会出错。 例如: Asc("A") 返回 65 Asc("a") 返回 97 Asc("Apple") 返回 65。 Chr(字符码) 使用 Chr 函数来返回指定所代表的字符。 0 到 31 之间的数字与标准的非打印 ASCII 代码相同。字符码 的正常范围为 0 255。 ChrB 函数作用于包含在 String 中的字节数据。ChrB 总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW 函数返回包含 Unicode 的 String,若在不支持 Unicode 的平台上,则其功能与 Chr 函数相同。 例子: Chr(65) 返回 A Chr(97) 返回 a。 | | | DAvg (数值数据字段, 表或查询) 可用于计算特定记录集中(一个域)一组数的平均值; 例如: DAvg(产品单价,产品信息表) 返回“产品信息表”中的“产品单价”的平均值。 DCount(数值数据字段, 表或查询) 可用于确定特定记录集中的记录数(一个域); 例如: DCount (产品单价,产品信息表) 返回“产品信息表”中的“产品单价”中的记录数。 DLookup(数值数据字段, 表或查询) 用于从指定记录集(一个域)获取特定字段的值; 例如: DLookup (产品单价,产品信息表) 返回“产品信息表”中的“产品单价”中的值。 DMin(数值数据字段, 表或查询); DMax(数值数据字段, 表或查询); DMin 和 DMax 函数用于确定指定记录集(一个域) 中的最小值和最大值; 例如:DMin(产品单价,产品信息表) 返回“产品信息表”中的“产品单价”中的最小值。 DSum(数值数据字段, 表或查询) 用于计算指定记录集(一个域)中的一组值的总和; 例如:DMin(产品单价,产品信息表) 返回“产品信息表”中的“产品单价”中的和。 DVar(数值数据字段, 表或查询) DVarP(数值数据字段, 表或查询) 用于估算特定记录集(一个域)中一组值的方差, DVarp用于计算总体的方差,而 DVar 函数用于计算总体抽样的方差; 如果引用的记录少于两条,DVar 和 DVarP 函数将返回Null,表示不能计算方差。 数值数据字段 可以是用来标识表或查询中字段的字符串表达式,也可以是执行在域合计函数中计算字段的表达式。在 expr 中可以使用表中字段的名称、窗体上的控件、常量或函数。函数可以是内置的,也可以是用户自定义的,但不能是另一个域合计函数或 SQL 合计函数。 表或查询:用来标识组成域的记录集的字符串表达式。 | | | DDB(cost, salvage, life, period[, factor]) 指定一笔资产在一特定期间内的折旧,可使用双下落收复平衡方法或其它指定的方法进行计算。 cost 必要。Double 指定资产的初始成本。 salvage 必要。Double.指定使用年限结束时的资产价值。 life 必要。 Double 指定资产可用的可用年限。 period 必要。Double 指定计算资产折旧所用的那一期间。 factor 可选。Variant 指定收复平衡下落时的速度。如果省略的话,缺省值为2(双下落方法)。 FV(rate, nper, pmt[, pv[, type]]) 返回一个 Double,指定未来的定期定额支付且利率固定的年金。 rate 必要。Double,指定每一期的利率。例如,如果有一笔贷款年百分率 (APR) 为百分之十且按月付款的汽车贷款,则利率为 0.1/12 或 0.0083。 nper 必要。Integer,指定一笔年金的付款总期限。例如,如果对一笔为期四年的汽车贷款选择按月付款方式,则贷款期限共有 4 * 12(或 48)个付款期。 pmt 必要。Double 指定每一期的付款金额。付款金额通常包含本金和利息,而且此付款金额在年金的有效期间是不会改变的。 pv 可选。Variant,指定未来一系列付款(或一次付清款项)的现值。例如,当借钱买一辆汽车时,向贷方所借的金额为未来每月付款给贷方的现值。如果省略的话,缺省值为 0。 type 可选。Variant,指定贷款到期时间。如果贷款在贷款周期结束时到期,请使用 0。如果贷款在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。 说明:年金是一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。 在支付期间,必须用相同的单位来计算 rate 和 nper 参数。 例如,如果 rate 用月份来计算,则 nper 也必须用月份来计算。 对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。 | | | IPmt(rate, per, nper, pv[, fv[, type]]) 返回一个 Double,指定在一段时间内对定期定额支付且利率固定的年金所支付的利息值。 rate 必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分率 (APR) 为百分之十且按月付款的汽车贷款,则每一期的利率为 0.1/12,或 0.0083。 per 必要。Double 指定在 nper 间范围 1 中的付款周期。 nper 必要。Double 指定一笔年金的付款总期数。例如,如果在一笔为期四年的汽车贷款中选择按月付款方式,则贷款共有 4 * 12(或 48)个付款期。 pv 必要。Double,指定未来一系列付款或收款的现值。例如,当借钱买汽车时,向贷方所借金额为将来每月偿付给贷方款项的现值。 fv 可选。Variant 指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。 type 可选。Variant 指定贷款到期时间。如果贷款在贷款周期结束时到期,请使用 0。如果贷款在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。 说明:年金是指在一段时间内的一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。在支付期间必须用相同的单位计算 rate 和 nper 参数。例如,如果 rate 用月份计算,则 nper 也必须用月份计算。 对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。 | | | IRR(values()[, guess]) 返回一个 Double,指定一系列周期性现金流(支出或收入)的内部利率。 values() 必要。Double 数组,指定现金流值。此数组必须至少含有一个负值(支付)和一个正值(收入)。 Guess 可选。Variant,指定 IRR 返回的估算值。如果省略,guess 为 0.1 (10%)。 说明:返回的内部利率是在正常的时间间隔内,一笔含有支出及收入的投资得到的利率。 IRR 函数使用数组中数值的顺序来解释支付和收入的顺序。要确保支付和收入的顺序正确,每一时期的现金流不必像年金那样固定不变。 IRR 是利用叠代进行计算。先从 guess 的值开始,IRR 反复循环进行计算,直到精确度达到 0.00001%。如果经过 20 次反复叠代测试还不能得到结果,则 IRR 计算失败。 MIRR(values(), finance_rate, reinvest_rate) 返回一个 Double,指定一系列修改过的周期性现金流(支出或收入)的内部利率。 values() 必要。Double 数组,指定现金流值。此数组至少要包含一个负值(支付)和一个正值(收入)。 finance_rate 必要。Double 指定财务成本上的支付利率。 reinvest_rate 必要。Double 指定由现金再投资所得利率。 说明:修改过的返回内部利率是指在用不同的利率计算支出和收入时的内部利率。MIRR 函数既考虑投资成本 (finance_rate),也考虑现金再投资所得利率 (reinvest_rate)。 finance_rate 和 reinvest_rate 参数是用十进制数值表示的百分比。例如,0.12 表示百分之十二。 MIRR 函数用数组中的数值顺序来解释支付和收入的顺序。要确保支付和收入的输入顺序正确。 | | | NPer(rate, pmt, pv[, fv[, type]]) 返回一个 Double,指定定期定额支付且利率固定的总期数。 rate 必要。Double 指定每一期的利率。例如,如果有一笔贷款年百分率 (APR) 为百分之十并按月付款的汽车贷款,则每一期的利率为 0.1/12 或 0.0083。 pmt 必要。Double 指定每一期所付金额。付款金额通常包含本金和利息,且付款金额在年金的有效期间不变。 pv 必要。Double 指定未来一系列付款或收款的现值。例如,当贷款买一辆汽车时,向贷方所借贷的金额为将来每月偿付给贷方款项的现值。 fv 可选。Variant 指定在付清贷款后所希望的未来值或现金结存。例如,贷款的未来值在贷款付清后为 0 美元。但是,如果想要在 18 年间存下 50,000 美元作为子女教育基金,那么 50,000 美元为未来值。如果省略的话,缺省值为 0。 type 可选。Variant 指定贷款到期时间。如果贷款是在贷款周期结束时到期,请使用 0,如果贷款是在周期开始时到期,请使用 1。如果省略的话,缺省值为 0。 说明 年金是在一段时间内一系列固定现金支付。年金可以是贷款(如房屋抵押贷款),也可以是一笔投资(如按月储蓄计划)。 对所有参数,用负数表示现金支出(如储蓄存款),而用正数表示现金收入(如红利支票)。 | | | NPV(rate, values()) 返回一个 Double,指定根据一系列定期的现金流(支付和收入)和贴现率而定的投资净现值。 rate 必要。Double 指定在一期间内的贴现率,用十进制表示。 values() 必要。Double 数组 指定现金流值。此数组至少要包含一个负值(支付)和一个正值(收入)。 说明:资的净现值是未来一系列支付或收入的当前价值。 NPV 函数使用数组中数值的顺序来解释支付和收入的顺序。要确保支付和收入值是用正确的顺序输入的。 NPV 投资在第一笔现金流值之前开始计算周期,而结束于数组中最后的现金流值。 净现值是根据未来的现金流进行计算的。如果第一笔现金流在第一期开始时发生,那么 NPV 返回的值必须加上第一笔值才是净现值。而且 values() 数组不可包含第一笔值。 NPV 函数与 PV 函数(现值)相似,只是 PV 函数在一个期间的开始或结束时才允许有现金流。与可变的 NPV 现金流值不同, PV 的现金流在整个投资期间必须固定。 | | |