2016-03-22 88 views
0

我正在尋找一些關於在我的訪問數據庫中實施某種預測形式的幫助/指導。我想達到的目的是讓用戶從下拉列表中選擇一個項目(我有),然後從兩個日期選擇器中選擇一個從&到目前爲止。當選擇日期時(例如2016年1月至2017年1月),數據庫將創建12個空白條目,用戶可以在每個單元格中輸入各種數量。訪問2007預測日期範圍

該數據庫設置爲單個項目可以有多個日曆日期。然而,我試過在第一個實例中使用交叉表查詢,因爲我很快發現它是不可更新的。我已經研究過使用'temp'表,然後可能使用臨時表中的更新函數並插入新記錄,但是,我真的希望有一種更簡單的方法..是否有任何人遇到類似的問題/任何建議在最好的方法?

更新:臨時表的 表結構(如果這是最好的方式?)看起來是這樣的:

理想的情況下,如果用戶選擇1月15日的範圍內 - 1月16日,那麼數據庫「罷了在剩下的幾個月裏。在db表將隨後的樣子:

[Project Id] [Month] [Year]
[1] [1] [2015]
[1] [2] [2015]
[1] [3] [2015]
等。

我不能確定如何實現這一點;即選擇開始月份和結束月份,在兩者之間創建條目。

+0

這個問題可能有點過於寬泛,無法得到體面的答案。另外,如果你想要實現一個表單,你有沒有嘗試過任何一個表單呢?您說您希望表單在您的數據庫中創建空白條目,然後說數據庫設置在單個項目可以有多個日曆日期的地方 - 可能會提供一些虛擬數據,以便我們可以看到這些數據的結構。 –

+0

嗨,謝謝你的回覆。我可以看到爲什麼它可能會遇到太寬泛。我已更新問題以包含特定問題 – user3279907

+0

謝謝,這很有用。我提供了一個可能會給出一些想法的答案。 –

回答

0

這可能與您的設置有所不同,但我會創建一個表格來永久存儲所有預測數據。在這個例子我創建tblForecast這些領域:

enter image description here

我然後創建了一個組合框的形式來選擇項目,兩個文本框提供從和到日期,然後一個命令按鈕來運行一些VBA,這將創建記錄,正如你所描述的那樣。在這些控件下面是一個子表單,它使用tblForecast作爲其RecordSource;這將被用來顯示形式將創造記錄,並允許用戶把自己的數據免受領域ForecastData1ForecastData2

enter image description here

這裏有上單擊事件的註釋VBA代碼該命令按鈕:

Private Sub cmdCreate_Click() 

    Dim db As DAO.Database 
    Dim rs As DAO.Recordset 
    Dim newRecs As Integer 
    Dim i As Integer 

    ' Open tblForecast so we can add new records to it 
    Set db = CurrentDb 
    Set rs = db.OpenRecordset("tblForecast") 

    ' Find out how many records we need to add based on the number of months between 
    ' the From and To dates supplied on the form 
    newRecs = DateDiff("m", Me.txtFromDate, Me.txtToDate) 

    ' Initialise our counter for the loop 
    i = 1 

    ' Start a loop that will create a new record for each of the months needed 
    Do While i <= newRecs 

     With rs 

      .AddNew 

      ' Pre-poulate the ProjectID, ForecastMonth and ForecastYear fields with 
      ' the relevant data 
      !ProjectID = Me.cboProject 
      !ForecastMonth = Month(DateAdd("m", i - 1, Me.txtFromDate)) 
      !ForecastYear = Year(DateAdd("m", i - 1, Me.txtFromDate))    

      .Update 

      ' Increment the counter before next loop iteration 
      i = i + 1 

     End With 

    Loop 

    ' Requery subform to see the new records that have been added 
    Me.tblForecast_sub.Form.Requery 

    ' Tidy-up memory 
    rs.Close 
    Set rs = Nothing 
    Set db = Nothing 

End Sub 

所以,如果你提供了一個項目,並從日期和結束日期...

enter image description here

...然後單擊命令按鈕:

enter image description here

的VBA代碼之間每個月從和到供應和日期創建一個記錄預填充專案編號ForecastMonthForecastYear領域與適當的數據。然後由用戶完成剩餘的ForecastData1ForecastData2字段。

Here's a link到Access模擬文件,所以你可以仔細看看,如果你喜歡。

+0

太棒了!非常感謝! 今天早上我會嘗試一下,讓你知道我是怎麼做到的。非常感謝您的幫助! – user3279907

+0

非常感謝,這正是我們所需要的。感謝您爲VBA提供評論,非常感謝 – user3279907

+0

很高興能夠幫助:) –

0

由於我們必須假設應該堅持預測,所以Access中的第一選擇是使用一張表來保存預測數據。我看不出有什麼「更簡單的方法」。