Office中国论坛/Access中国论坛

标题: 怎么设计这样的查询? [打印本页]

作者: chocho22    时间: 2002-10-29 05:52
标题: 怎么设计这样的查询?
我的窗体(每一记录对应一间公司)内含有一子窗体(用于记录对应该公司的联系人),我在挑选要邮寄信件的公司时,遇到了一个问题。由于并不是每间公司都有联系人,所以老板要求这些公司的收件人要写成“公司负责人”,而有的公司有多于一个的联系人,我们会挑选其中一个(假设只允许一个)来作为收件人,为此子窗体内的每一记录都有一个复选框用于标记其是否作为收件人。我现在的做法是在“公司”表内添加一列“收件人”用于在制作邮件标签时(用WORD的邮件合并功能)可方便地作为一个域直接插入,并在窗体上添加一文本框绑定到这个字段,使其默认值为“公司负责人”,然后建立一更新查询,若其子窗体中的记录的“收件人”复选框为选中时将“收件人”文本框的默认值更改为收件人的姓名。我的问题是假若老板要求某些公司同时寄给两个联系人,那我该怎么设计能够让普通用户更容易操作?
同时我想问若只要求寄给一个联系人时,有比我以上所说的更好的设计吗?
作者: 九阳先生    时间: 2002-10-29 18:32
这样如何:
1.公司表中不设收件人,使用联系人表中有收件标识的联系人即可
2.建一查询:SELECT 公司名,联系人 FROM 公司 LEFT JOIN 联系人 ON 公司.公司名=联系人.公司名 WHERE 联系人.收件标识
3. 用此查询作为合并邮件的数据源,设置合并域=iif(isnull(联系人),联系人,"公司负责人")
作者: 九阳先生    时间: 2002-10-29 18:55
不用第3步。直接修改2中的查询为:
SELECT 公司名,iif(isnull(联系人),联系人,"公司负责人") As 联系人 FROM 公司 LEFT JOIN 联系人 ON 公司.公司名=联系人.公司名 WHERE 联系人.收件标识

作者: chocho22    时间: 2002-11-1 05:22
不行啊。我发现在WHERE子句里对复选框进行筛选时,无论是左外部连接还是右外部连接,最后的查询结果都是一样,不会把“公司”表内不含联系人的记录也合并在查询结果中。
作者: 九阳先生    时间: 2002-11-1 21:30
不会的吧。左连接会包括左边表的所有纪录,所以只要公司中有的纪录,都会出现在最后的查询中。记住要把公司表中的联系人字段删除,否则会引起字段冲突。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3