Office中国论坛/Access中国论坛

标题: 请问,我要把筛选后的交叉查询结果保存在表里,而且不允许有重复,该怎么做呢? [打印本页]

作者: 简    时间: 2011-2-13 16:03
标题: 请问,我要把筛选后的交叉查询结果保存在表里,而且不允许有重复,该怎么做呢?
我是按日期来筛选交叉查询,我想把交叉查询结果保存在表tbl0里,如果更改了数据,比如2月份更改了数据,那么重新筛选后将结果保存在表tbl0里时,则对原来不同的记录进行覆盖,如果是对下一个月筛选时,比如3月份,则把该查询结果追加在表tbl0里。这种要求该怎么做呢,我在论坛上搜索了许久,都没有找到相关的例子,还请大家帮帮忙哈。
作者: todaynew    时间: 2011-2-13 18:16
本帖最后由 todaynew 于 2011-2-13 18:24 编辑

其实就是两种办法,其一是把更新查询统一转为追加查询处理(方法是对既有记录进行删除查询);其二是把追加查询统一转为更新查询(方法是先用追加查询增加足够的空白记录)。一般情况下,采用第一种方法比较妥当,应为当第二种方法在表中有若干外键时处理起来比较复杂。以下是第一种方法的一个示例:

dim ssql as string
dim strwh as string
strwh="月度='" & me.月度.value & "'"
if Dcount("*","tbl0",strwh)>0 then
       ssql="DELETE * FROM tbl0 WHERE " & strwh
       docmd.runsql  ssql
end if
ssql="INSERT INTO tbl0 (字段列表) "
ssql=ssql & "select 字段列表 from 交叉查询"
docmd.runsql  ssql

你可以参见《餐饮》一文。这里面的处理和你的问题是类似的,只是我采用的是ADO记录集处理。

作者: todaynew    时间: 2011-2-13 20:06
简 发表于 2011-2-13 16:03
我是按日期来筛选交叉查询,我想把交叉查询结果保存在表tbl0里,如果更改了数据,比如2月份更改了数据,那么 ...

给你一个简化的例子看。

[attach]44821[/attach]

作者: 简    时间: 2011-2-14 07:43
因为输入记录的一个月下来可能几千条,甚至上万条,如果说从提高效率和保证正确的前提上来说,是用追加查询好呢,还是ADO呢。
作者: todaynew    时间: 2011-2-14 10:15
简 发表于 2011-2-14 07:43
因为输入记录的一个月下来可能几千条,甚至上万条,如果说从提高效率和保证正确的前提上来说,是用追加查询 ...

没有测试过,应该差别不会太大吧?
用查询通常语句简单一些,记录间的计算比较复杂的情况下选用记录集会方便处理。
作者: 简    时间: 2011-2-16 21:05
本帖最后由 简 于 2011-2-16 21:06 编辑

我上传了个例子,请看看,为什么会有下列错误。

1.我在日期查询里选择2011,就会弹出以下提示,这是为什么呢。

[attach]44853[/attach]

2.选择卡上的第二页,子窗体2的页脚控件时有时显示为“#错误”,有时又正确,而总计控件值为空白时,我按=nz(sum(子段名),"0.00"设置,有时能显示出0.00,有时不能显示0.00,这又是怎么回事呢。

3.我要把筛选后的交叉查询转存为表tbl0,见命令按钮“统存”的代码,为什么不起作用呢。

[attach]44854[/attach]

唉,这三个问题把我折腾够了~~~~

[attach]44855[/attach]


作者: todaynew    时间: 2011-2-16 21:26
本帖最后由 todaynew 于 2011-2-16 21:27 编辑

1.我在日期查询里选择2011,就会弹出以下提示,这是为什么呢。
答:你的字段名称与控件名称混乱不堪,出错正常,不出错倒是起了怪了。

2.选择卡上的第二页,子窗体2的页脚控件时有时显示为“#错误”,有时又正确,而总计控件值为空白时,我按=nz(sum(子段名),"0.00"设置,有时能显示出0.00,有时不能显示0.00,这又是怎么回事呢。
答:设置默认值为"0.00"。出现“#错误”,应该是两种情况其一是计算公式不对,其二是子窗体无记录。就你说的现象来看,应该属于第二种情况。

3.我要把筛选后的交叉查询转存为表tbl0,见命令按钮“统存”的代码,为什么不起作用呢。
答:请在“统存”代码中不同地方插入msgbox查找原因。


作者: 简    时间: 2011-2-16 21:46
todaynew 发表于 2011-2-16 21:26
1.我在日期查询里选择2011,就会弹出以下提示,这是为什么呢。
答:你的字段名称与控件名称混乱不堪,出错 ...

对于第一个问题,我并没有找到字段名称与控件名称浑乱的情况。
作者: BZD00001    时间: 2011-3-8 21:05
怎样




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