2015-09-04 76 views
-2

使用MS Access 2010,我需要生成从任意开始日期(例如#1/1/2015#)到现在的日期的完整列表Date() 。我希望这个列表能够存在于自己的表格中,尽管查询也可以工作。我还希望只获取工作日/工作日。谁能帮忙?使用MS Access 2010创建动态商务日期列表

我正在按日期跟踪业务流程错误。为每个错误创建一个新的错误记录,并且每个记录都标有日期。但是,每个日期都没有错误。因此,随着时间的推移报告不会给出正确的可视化,因为没有错误的日期未被表示。

我很感谢帮助在Access中生成这个列表,以及用于表示这些信息的任何替代想法。

干杯, 伯吉斯

更新 - 我已经能够做出日期的列表,因为一开始日期。这里是我的代码:

Sub createDatesTable() 

    'Declare variables' 
    Dim startDate As Date 
    Dim endDate As Date 
    Dim countDate As Date 
    Dim length As Long 
    Dim i As Long 
    Dim dates() As Date 

    'Initialize' 
    startDate = #6/23/2015# 
    endDate = #9/1/2015# 
    countDate = startDate 
    length = endDate - startDate 

    'Define date array length' 
    ReDim dates(1 To length) 

    'Generate date list in array' 
    For i = 1 To (length) 
     dates(i) = countDate 
     countDate = countDate + 1 
    Next i 

    'Print array to Immediate Window' 
    For i = 1 To length 
     Debug.Print dates(i) 
    Next i 


    Dim db As DAO.Database 
    Dim rs As DAO.Recordset 


    Set db = CurrentDb 
    Set rs = db.OpenRecordset("tblDateList", dbOpenDynaset) 

    'Add array data to existing table' 
    For i = 1 To length 
     rs.AddNew 
     rs!DateList = dates(i) 
     rs.Update 
    Next i 

    rs.Close 
    db.Close 

End Sub 

现在,我对VBA很新,所以这可能包含基本的错误。感谢您的反馈。

-Burgess

+0

[?你尝试过什么( http://whathaveyoutried.com)请张贴任何尝试解决方案 – Barranka

回答

0

你的表可以有这样的结构:

Column name | Data type 
---------------+---------- 
dt    | DateTime 
isBusinessDay | Yes/No 

至于填充,这样的事情:

public sub fillDates(startDate as date, endDate as date) 
    dim db as DAO.database, rs as DAO.Recordset 
    dim strSQL as string 
    dim d as date 

    strSQL = "delete from tbl_dates" 
    docmd.runsql strSQL 

    set db = currentdb() 
    set rs = db.openRecordset("tbl_dates", dbOpenDynaset, dbAppendOnly) 

    for d = startDate to endDate 
     with rs 
      .addNew 
      ![dt] = d 
      ![isBusinessDay] = (format(d, "w", vbMonday) <= 5) 
      .update 
     end with 
    next d 
    rs.close 
    db.close 
end sub 
+0

谢谢巴兰卡。这看起来比我能想起数组和编辑表格要简单得多。我特别喜欢你用isBusinessDay进行过滤的方法。我现在要将其添加到我的代码中。 –