设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 6174|回复: 19
打印 上一主题 下一主题

[Access本身] “抛物线被截面积”——浅谈查询进度条的实现

[复制链接]
跳转到指定楼层
1#
发表于 2011-12-31 16:10:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 roych 于 2012-1-3 20:22 编辑

       记得读书时,第一次接触微积分的时候,老师给我们出了一道题目,就是如何求抛物线和坐标轴的截面积。一时间我们面面相觑,有如狗咬刺猬——无从下口。这曲线面积的确无法直接求出来。大家只好口呆目瞪地听老师讲了,“我们按等分坐标轴做垂线,连接与抛物线的交点,得到等高的梯形,然后计算这些梯形的面积之和。当坐标轴被无限地分割后,那么这些梯形的面积之和就越来越接近抛物线的面积了。这就是今天要讲的微积分。”
       后来才知道,在十七世纪的德国,同样也有一个跟我们一样困惑不已的人,不同的是,他最后完美地解决了这个问题。我们的老师沿用的正是他的方法。他的名字叫做莱布尼茨。

       这些似乎和主题无关。然而,不得不提的是,正所谓“工夫在诗外”,我们应当把一些学到的思维方式应用到Access当中,相信能很好地解决一些问题了,正如这些日子热议的查询进度条问题。在执行过程中,查询其实是作为一个整体来运行的,因此往往只能获取运行前后时间,一般来说,细节是不太可能直接显示的,正如前面所提的抛物线截面积一样,至少是不能直接用公式(微积分公式除外)计算的。
      
       但是我们知道,从某个方面上讲,查询不过是一个记录集,而记录集的基本单位是一条记录。换句话说,每一条记录就是我们的一个“梯形”,这一个个“梯形”构成了我们的“抛物线”(记录集)。接下来问题就显而易见了:通过计算这些“梯形”的面积(执行记录的条数),来求“抛物线”面积(执行记录的比例)。这显然不算太难了。

       尽管论坛里有不少关于进度条的实例,不过受此前MM的影响,就以老汉的精华帖《杏花村——进度条》中的实例来一次狗尾续貂吧。希望大家能够从中得到一定的启发。
      为了便于观察数据的进度,实例中的目标是追加10万条记录,特此声明一下(详见附件中的进度条3)。大家可以据此举一反三,试试更新查询或者删除查询等例子。
      

      应MM的要求,加上了带子窗体的进度条。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

20#
发表于 2022-4-24 16:14:14 | 只看该作者
学习
回复

使用道具 举报

19#
发表于 2015-12-3 23:25:18 | 只看该作者
0000
回复

使用道具 举报

18#
发表于 2015-12-3 23:25:03 | 只看该作者
0000
回复

使用道具 举报

17#
发表于 2015-12-3 23:24:50 | 只看该作者
000000
回复

使用道具 举报

点击这里给我发消息

16#
发表于 2015-9-3 16:13:04 | 只看该作者
谢谢谢谢谢谢谢谢!!!
15#
 楼主| 发表于 2012-1-3 20:27:39 | 只看该作者
本帖最后由 roych 于 2012-1-3 20:28 编辑
简 发表于 2012-1-3 13:12
我觉得似乎跟moveLast没有多大关系,我把附件传上来了,请看看,附件上我是用echo来实现的,用StatusBarT ...


大体看了下,应该是DAO的MoveNext方法所致。因此把DAO转换为ADO之后就可以了。
即利用RecordSource属性提取数据源语句,用ADO打开,详细看更新后的附件。

PS:StatusText跟Echo属性,孰优孰劣我还真没测试过。就这个例子而言,似乎不相伯仲。
14#
发表于 2012-1-3 13:12:37 | 只看该作者
roych 发表于 2012-1-2 23:41
你的代码似乎漏掉了MoveLast了。建议上传附件看看,此外,如有必要可以考虑优化下查询。——当然这些都需 ...

我觉得似乎跟moveLast没有多大关系,我把附件传上来了,请看看,附件上我是用echo来实现的,用StatusBarText没有实现出想要的效果,不晓得问题出在哪里。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
13#
 楼主| 发表于 2012-1-2 23:41:17 | 只看该作者
简 发表于 2012-1-2 22:05
我用你的例子,遇到一个问题,即用StatusBarText设置状态栏文字,但在状态栏上却不起作用,状态栏上老是显示 ...

你的代码似乎漏掉了MoveLast了。建议上传附件看看,此外,如有必要可以考虑优化下查询。——当然这些都需要看附件才能确定的。
12#
发表于 2012-1-2 22:05:42 | 只看该作者
我用你的例子,遇到一个问题,即用StatusBarText设置状态栏文字,但在状态栏上却不起作用,状态栏上老是显示正在计算……,没办法,我只好用DoCmd.Echo来显示状态栏文字,但这样有个问题就是,栏态栏上的文字有点闪。

请问这是什么原因呢,DoCmd.Echo和StatusBarText哪个稳定,效率高呢?

我的代码如下:

Dim i As Long
Dim j As String
Dim str As String
Dim k As Long

Dim rst As Object

    Set rst = Me.sub1.Form.Recordset
    rst.MoveFirst
    k = rst.RecordCount
   
'为避免出现状态栏上的正在计算…… 以及屏幕闪动,所以添加DoCmd.Echo    DoCmd.Echo False
    DoCmd.Hourglass True

    For i = 1 To k
   
        j = Format(Round(i / k, 2) * 100, "@@@%")
        
        rst.Edit

        If i Mod (k / 50) = 0 Then
            str = str & "■"
            DoCmd.Echo False, j & " " & str   '没办法,才用DoCmd.Echo
'            Me.cmdA.StatusBarText = j & " " & str    'statusbartext不起作用
        End If
        
        rst!单价= Format((rst!成本价 * 0.92), "0")

        rst.Update
        rst.MoveNext
        
    Next

    rst.MoveFirst
    Set rst = Nothing

    MsgBox "处理完毕!"

    DoCmd.Echo True
    DoCmd.Hourglass False

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 21:34 , Processed in 0.098379 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表