0

1 つのフォームに基づいて (1 つのテーブルに) 複数のレコードを作成できる Access フォームの例を教えてください。

拡張するには: 特定の日付にプロジェクトに費やされた時間に関する情報を記録しています。ユーザーが特定の週の 5 日 (または 7 日) のデータを 1 つのフォームに入力できるようにする単一のフォームのリクエストがありました。カレンダー コントロールから 1 週間、リストボックスからプロジェクトを選択し、その週に費やされた時間を最大 7 つの数字で入力します。

該当しないと思われる質問 5294128 と質問 8070706 を確認しましたが、これは (GUI を使用せずに) VBA でのみ実行できることを暗示しているようです。代替案はありますか?

ありがとう。

4

1 に答える 1

1

これらの行の何かが合うはずです。これは、サブフォームを持つバインドされていないフォームです。

形

フォームウィザードからフォームタイプを取得できます

ここに画像の説明を入力してください

正しく動作するには、次のような小さなコードが必要になります。

Private Sub cmdGo_Click()
Dim rs As DAO.Recordset
Dim sSQL As String
Dim sSDate As String
Dim sEDate As String

    sSDate = "#" & Format(Me.txtStartDate, "yyyy/mm/dd") & "#"
    sEDate = "#" & Format(Me.txtStartDate + Me.txtNoDays, "yyyy/mm/dd") & "#"

    sSQL = "SELECT * FROM MyTable WHERE DataDate Between " & sSDate _
        & " AND " & sEDate

    Set rs = CurrentDb.OpenRecordset(sSQL)

    If rs.RecordCount < Me.txtNoDays Then
        AddRecords sSDate, sEDate
    End If

    Me.DataSubform.Form.RecordSource = sSQL
End Sub



Sub AddRecords(sSDate, sEDate)
''Uses counter table with integers from 0 to
''highest required number
''Another useful table is a calendat table, which would
''save some work here.

    sSQL = "INSERT INTO MyTable (DataDate) " _
        & "SELECT AddDate FROM " _
        & "(SELECT " & sSDate _
        & " + [counter.ID] AS AddDate " _
        & "FROM [Counter] " _
        & "WHERE " & sSDate _
        & "+ [counter.ID] Between " & sSDate _
        & " And " & sEDate & ") a " _
        & "WHERE AddDate NOT In (SELECT DataDate FROM MyTable)"

    CurrentDb.Execute sSQL, dbFailOnError
End Sub
于 2012-04-09T15:14:35.450 に答える