Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 8679|回復(fù): 9
打印 上一主題 下一主題

[模塊/函數(shù)] 【Access小品】逐步擴(kuò)展---自定義函數(shù)編制講座一

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2011-4-25 18:20:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 todaynew 于 2011-4-25 21:12 編輯

  數(shù)月前,有版友發(fā)貼希望得到函數(shù)編制方法的講座。在我看來(lái),這個(gè)事情沒(méi)法講,其原因在于函數(shù)和模塊只是抽象的結(jié)果,無(wú)一定之規(guī)和現(xiàn)成之法。后來(lái)風(fēng)行同志還是嘗試著編寫了一個(gè)講座的視頻,寫得很好,對(duì)版友們應(yīng)該有所幫助。通過(guò)風(fēng)行同志的實(shí)踐,看來(lái)函數(shù)的編制還是可以講的,可能著重在于講編寫的策略、處理的思路,抽象的方法。

  今日里,版友yinyt 同志問(wèn)詢一個(gè)一周內(nèi)數(shù)據(jù)的篩選問(wèn)題,給定的條件是某個(gè)確定的日期,要求篩選出本周或者上周或者下周的數(shù)據(jù)來(lái)。就這個(gè)問(wèn)題我編寫了自定義函數(shù),編寫的過(guò)程是我的一個(gè)基本習(xí)慣,就是由淺入深,逐步推進(jìn),逐步擴(kuò)展。我想對(duì)于初學(xué)者來(lái)說(shuō),大都可以采用這一個(gè)基本策略進(jìn)行自定義函數(shù)的編寫。下面把我的思維過(guò)程展示給版友們,希望能對(duì)你有所幫助。

  首先,我想這個(gè)問(wèn)題的解決關(guān)鍵是得到給定日期所在周的周一日期。于是我編寫了以下的函數(shù):

Function Monday(MYDate as Date) as date
'功能:計(jì)算給定日期所在周的周一日期
'參數(shù):MyDate--給定日期
'示例:計(jì)算下周周一日期 Msgbox Monday(Date)
dim n as long
n=1-Weekday(Mydate,vbMonday)
Monday=DateAdd("d",n,MyDate)
END Function

  接下來(lái)我考慮版友yinyt 同志需要在上周或者下周進(jìn)行篩選,于是應(yīng)該增加一個(gè)參數(shù),將函數(shù)擴(kuò)展為能在若干周內(nèi)找到對(duì)應(yīng)周的周一日期,于是我加入了一個(gè)參數(shù)m,使函數(shù)變化為:

Function Monday(MYDate as Date,m as long) as date
'功能:計(jì)算給定日期所在周的周一日期
'參數(shù):MyDate--給定日期,m--0為本周,1為下周,-1為前周
'示例:計(jì)算下周周一日期 Msgbox Monday(Date,1)
dim n as long
n=1-Weekday(Mydate,vbMonday)
Monday=DateAdd("d",n,MyDate)
Monday=DateAdd("d",m*7,Monday)
END Function

  版友yinyt 同志的真正需求不是僅僅找到周一,而是應(yīng)該找到某個(gè)周的周一和周日日期,這樣就可以用Between And 這樣的結(jié)構(gòu)來(lái)構(gòu)成篩選的準(zhǔn)則了。于是我覺(jué)得函數(shù)返回的不應(yīng)該是一個(gè)數(shù),而應(yīng)該是一個(gè)數(shù)組,這個(gè)數(shù)組包含了周一和周日的日期;诖,便將函數(shù)最終修改為如下:

Function MYWeekday(MYDate As Date, m As Long) As Variant
'功能:計(jì)算給定日期所在周的周一日期與周日日期數(shù)組
'參數(shù):MyDate--給定日期,m--0為本周,1為下周,-1為前周
'示例:計(jì)算下周周一日期 Msgbox Monday(Date,1)
Dim A(1)
Dim D As Date
Dim n As Long
n = 1 - Weekday(MYDate, vbMonday)
D = DateAdd("d", n, MYDate)
D = DateAdd("d", m * 7, D)
A(0) = D
A(1) = DateAdd("d", 6, D)
MYWeekday = A
End Function







本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)

x

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖1 訂閱訂閱
2#
發(fā)表于 2011-4-26 00:20:19 | 只看該作者
確實(shí)不好講。。。有些時(shí)候我可以寫一些,但讓我講該如何編寫,為什么這么編寫,我就啞口無(wú)言了。。。
3#
發(fā)表于 2011-4-26 09:13:13 | 只看該作者
todaynew手把手式的教導(dǎo),難得!
4#
發(fā)表于 2011-4-26 16:47:47 | 只看該作者
逐步深入!層層剝皮。
5#
發(fā)表于 2011-4-26 19:41:41 | 只看該作者
循序漸進(jìn),由簡(jiǎn)單到復(fù)雜。
6#
發(fā)表于 2013-5-21 17:20:47 | 只看該作者
我 是火星人。!

點(diǎn)擊這里給我發(fā)消息

7#
發(fā)表于 2014-12-4 11:03:12 | 只看該作者
要頂
回復(fù)

使用道具 舉報(bào)

點(diǎn)擊這里給我發(fā)消息

8#
發(fā)表于 2014-12-4 14:22:08 | 只看該作者
好好看看
回復(fù)

使用道具 舉報(bào)

9#
發(fā)表于 2017-10-31 17:39:13 | 只看該作者
謝謝分享~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

10#
發(fā)表于 2017-12-30 19:13:09 | 只看該作者
很不錯(cuò)的例子
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 08:01 , Processed in 0.119621 second(s), 37 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表