2016-03-22 24 views
0

私は、アクセスデータベースにある種の予測フォームを実装するためのヘルプ/ガイダンスを探しています。私が達成したいのは、ユーザーがドロップダウンリスト(私が持っている)からプロジェクトを選んでから、&から2つの日付ピッカーから日付を選択することです。日付が選択されると(例えば、2016年1月 - 2017年1月)、データベースは12の空白の項目を作成し、ユーザーは各セルにさまざまな金額を入力できます。Access 2007予測の日付範囲

データベースには、1つのプロジェクトで複数のカレンダーの日付を設定できる設定があります。しかし、最初のインスタンスでクロスタブクエリを使用しようとしましたが、すぐにわかるように、更新不可能です。私は 'temp'テーブルを使用して、おそらく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を作成しました:私はそれ以降と日付を提供するために、2つのテキストボックスをプロジェクトを選択するために、コンボボックスでフォームを作成しました

enter image description here

とあなたが説明したようにレコードを作成するいくつかのVBAを実行するコマンドボタン。これらのコントロールの下には、tblForecastRecordSourceとするサブフォームがあります。

ここenter image description here

がクリックイベントでの注釈付きのVBAコードです:これは、フォームが作成されたレコードを表示し、ユーザーがフィールドForecastData1ForecastData2に対して独自のデータを置くことを可能にするために使用されますそのコマンドボタン:

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

...VBAコードから供給された日付としてPROJECTIDForecastMonthForecastYearが事前移入 Toフィールド間の各月のレコードを作成します

enter image description here

:その後、コマンドボタンをクリックしてください適切なデータ。その後、ユーザーは残りのForecastData1ForecastData2フィールドを完了する必要があります。

Here's a linkをアクセスモックアップファイルに追加すると、必要に応じて詳細を見ることができます。

+0

素晴らしい!どうもありがとうございます! 私は今朝これを試して、どうやったらどうなるか教えてください。本当に助けていただきありがとうございます! – user3279907

+0

ありがとう、これはまさに必要なものです。 VBAのコメントを提供していただきありがとうございます。本当に感謝しております – user3279907

+0

喜んで助けてください:) –

0

予測を維持する必要があるため、Accessの最初の選択肢は、予測データを保持するためにテーブルを使用することです。どのような「より単純な方法」があるのか​​はわかりません。

関連する問題