问题描述
您好,
我们使用访问数据库进行数千名音乐家的会员管理。会员资格状态与有效状态不同暂停 驱逐出去。
音乐家进出活跃的会员资格。数据库会跟踪成员被暂停的最后时间以及成员被驱逐的最后时间。不幸的是,像许多程序一样,历史记录都是每次都写的。
我的目标是自动捕获30年的会员资格。日期和50年会员资格日期。我们每年为30和50年的会员举办特别活动。由于我们的文件可以追溯到100多年前,旧的手写记录非常棒。在那些日子里,人们没有写过旧日期!我们使用DaysOut字段和AsOfDate字段将旧的计算机前信息带入我们的数据库。例如,首席小号手Willy Makeit于2/25/46被录取并且已经退出工会656天,我写了一个简单的查询来进行数学计算,并为30年提供数据。籍"领域和50年的会员资格表格中的字段。
但是,在AsOfDate之后需要考虑新的数据。
由于此数据库的历史有限,我必须使用的是历史表。对会员编号1072的查询得出以下数据:
日期描述MusID
2/4/2003暂停未缴纳会费1072
2/21/2003会费至3/31/03(Rec#19401)。状态为暂停1072
11/7/2003暂停未缴纳会费1072
12/15/2003会费至12/31/03(建议#24630) 。状态为暂停1072
2/9/2004暂停未缴纳会费1072
4/5/2004会费至6/30/2004(Rec#28110) 。状态为Susp 1072
10/31/2004暂停未缴纳会费1072
7/31/2005暂停未缴纳会费1072
9/30/2005因未缴纳会费而被驱逐1072
10/17/2005会费至12/31/2005(Rec#51852)。状态为Exp 1072
1/31/2006暂停未缴纳会费1072
3/10/2006会费至6/30/2006(Rec#58927) 。状态为Susp 1072
7/31/2006暂停未缴纳会费1072
8/9/2006会费至12/31/2006(Rec#64736) 。状态为Sus 1072
1/31/2007暂停未缴纳会费1072
我的目标是编写一个代码,选择第一个*非*日期和下一个*是*日期并减去差异。每个日期差异的总和将是总DaysOut。
如果这个帖子太长,请原谅。基本上我需要在记录中获取下一个日期并从第一个上一个日期中减去它并将每个组合两个。如果最后一个日期是*非*,它将从日期中减去()
任何帮助都会得到极大的认可。
Unionhorse
Hello,
We use an access database for the membership administration of thousands of musicians. Membership status varies from "active" to "suspended" to "expelled".
Musicians go in and out of active membership. The database keeps track of the last time a member was suspended and the last time a member was expelled. Unfortunately, like many programs, the history is written over each time.
My goal is to automate capturing a "30-years of membership" date and a "50-years membership" date. We hold a special event each year for 30 and 50 year members. Since our files go back over 100 years, the old handwritten records are great. Folks did not write over old dates in those days! We have brought the old pre-computer imformation into our database with a DaysOut field and an AsOfDate field. For example, Willy Makeit, a lead trumpet player, was admitted on 2/25/46 and has been out of the union for 656 days, I wrote a simple query to do the math and provide data for a "30-years of membership" field and a 50-years of membership" field in a form.
However, there is new data to be considered after the AsOfDate.
Due to the limited history in this database all I have to work with is a History Table. A query of Member Number 1072 yields the following data:
Date Desc MusID
2/4/2003 Suspended for non-payment of dues 1072
2/21/2003 Dues thru 3/31/03 (Rec# 19401). Status was Suspen 1072
11/7/2003 Suspended for non-payment of dues 1072
12/15/2003 Dues thru 12/31/03 (Rec# 24630). Status was Suspe 1072
2/9/2004 Suspended for non-payment of dues 1072
4/5/2004 Dues thru 6/30/2004 (Rec# 28110). Status was Susp 1072
10/31/2004 Suspended for non-payment of dues 1072
7/31/2005 Suspended for non-payment of dues 1072
9/30/2005 Expelled for non-payment of dues 1072
10/17/2005 Dues thru 12/31/2005 (Rec# 51852). Status was Exp 1072
1/31/2006 Suspended for non-payment of dues 1072
3/10/2006 Dues thru 6/30/2006 (Rec# 58927). Status was Susp 1072
7/31/2006 Suspended for non-payment of dues 1072
8/9/2006 Dues thru 12/31/2006 (Rec# 64736). Status was Sus 1072
1/31/2007 Suspended for non-payment of dues 1072
My goal is to write a code that selects the first *non* date and the next *was* date and subtracts the difference. The aggregate of each date difference will be the total DaysOut.
Please excuse me if this post is too long winded. Basically I need to get the next date in the record and subtract it from the first previous date and add up each group of two. If the last date is a *non* it will be subtracted from Date()
Any help will be greatly appredciated.
Unionhorse
推荐答案
- 第一条记录表明1072在2003年2月4日被暂停,所以大概是他的会员资格在此之前预订,但这些天不会包括在内,因此只能计算DaysOut。 (对于DaysIn来说,运行一个总数来检查是非常好的。)
- 在2003年2月21日,记录表明会费是通过但是2003年3月31日的日期是什么?这两个日期中的哪一个将被使用?第一次约会很容易,但提取第二次约会将会更具挑战性。
- 2004年10月31日,这个家伙被暂停,但2005年7月31日的记录显示他是再次暂停,没有中间会员记录。他终于于2005年9月30日被驱逐出去,直到2005年10月17日(或截止日期为31年12月?)才成为会员。在2015年10月31日至10月17日(截至2003年12月31日)期间,TotalDaysOut计算得出,或更难的事情?
- 您的数据是否足够一致,描述的第一个字母是D,S还是E?所以这些可以用来解释''ins''和''outs''?
S7
- 第一条记录表明1072在2003年2月4日被暂停,所以大概是他的会员资格在此之前预订,但这些天不会包括在内,因此只能计算DaysOut。 (对于DaysIn来说,运行一个总数来检查是非常好的。)
- 在2003年2月21日,记录表明会费是通过但是2003年3月31日的日期是什么?这两个日期中的哪一个将被使用?第一次约会很容易,但提取第二次约会将会更具挑战性。
- 2004年10月31日,这个家伙被暂停,但2005年7月31日的记录显示他是再次暂停,没有中间会员记录。他终于于2005年9月30日被驱逐出去,直到2005年10月17日(或截止日期为31年12月?)才成为会员。在2015年10月31日至10月17日(截至2003年12月31日)期间,TotalDaysOut计算得出,或更难的事情?
- 您的数据是否足够一致,描述的第一个字母是D,S还是E?所以这些可以用来解释''ins''和''outs''?
S7
Hello S,
感谢您的快速回复。
1.是的,他的AdmitDate早于2003年2月4日。我在一张桌子中有一个字段,该字段在某个特定日期之前已经有他之前的总DaysOut。这是一项庞大的工作。如果事情有效,总DaysIn是一个好主意。
2. 2003年2月21日,会员缴纳了会费。这是相关日期。他的会员资格活跃于2003年3月31日,即第一季度末。会费可以按季度支付。因此,日期字段中的日期是我们需要使用的日期。
3.描述中的数据是一致的。这些数据来自
一个较大的组,其中包括常规会费付款和收据编号的描述性历史记录。我使用了通配符*非*和*是*用于一致的''ins''和''outs''但是其他通配符可以工作。
这家伙有一些健康问题所以我们让他滑倒另一个季度然后驱逐他(看看我们不是底特律的硬核!)是的,TotalDayOut计算在2004年10月31日到2005年10月17日之间
我写这段代码并不是很懒。
在尝试了几个访问功能,比如日期差异和日期最大值后,我碰壁了。
再次感谢,
UH
Hello S,
Thank you for your quick response.
1. Yes, his AdmitDate pre-dates 4-Feb-2003. I have a field in a table that already has his previous total DaysOut as of a certain date. This was a huge job done by hand. A total DaysIn is a good idea if things work out.
2. On 21-Feb-2003 the member paid his dues. This is the relevant date. His membership was active thru 31-Mar-2003 which is the end of the first quarter. Dues can be paid by the quarter. So, the dates in the Date field are the ones we need to use.
3. The data in the Description is consistent. This data was culled from
a larger group which includes a descriptive history of routine dues payments and receipt numbers. I used the wildcard *non* and *was* for consistent ''ins'' and ''outs'' but other wildcards could work.
This guy had some health problems so we let him slide for another quarter before expelling him (see we are not that hardcore in Detroit!) Yes, the TotalDayOut are calculated between 31-Oct-2004 and 17-Oct-2005
I am not being lazy writing this code.
After trying several access functions like date difference and date maximum I hit a wall.
Thanks again,
UH
这篇关于会员历史的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!