私は基本的に水平のデータをExcelテーブルのように変換しようとしています。ネストされたループを使用する必要がありますが、その方法についてはわかりません。ここで働いているこれまでのコードですが、私は望んでいないどのように:私はそれをしたい Code result選択したクエリのアクセスに基づいて.eofループがネストされていないvba
:
私のコードは、この返します。
strSQL = "SELECT * FROM tblTimeSheetData WHERE [WorkDate] BETWEEN #" &
StartDate & "# AND #" & EndDate & "#" _
& "ORDER BY [EmpID], [WorkDate] ;"
Set rstTime = CurrentDb.OpenRecordset(strSQL)
Do While Not rstTime.EOF
rstTemp.AddNew
lngEmpID = rstTime![EmpID]
rstTemp![EmpID] = lngEmpID
intWeekday = Weekday(rstTime![WorkDate])
Select Case intWeekday
Case 2
rstTemp![MondayWorkDate] = rstTime![WorkDate]
rstTemp![MondayWorkHours] = rstTime![WorkHours]
Case 3
rstTemp![TuesdayWorkDate] = rstTime![WorkDate]
rstTemp![TuesdayWorkHours] = rstTime![WorkHours]
Case 4
rstTemp![WednesdayWorkDate] = rstTime![WorkDate]
rstTemp![WednesdayWorkHours] = rstTime![WorkHours]
Case 5
rstTemp![ThursdayWorkDate] = rstTime![WorkDate]
rstTemp![ThursdayWorkHours] = rstTime![WorkHours]
Case 6
rstTemp![FridayWorkDate] = rstTime![WorkDate]
rstTemp![FridayWorkHours] = rstTime![WorkHours]
End Select
rstTemp.Update
rstTime.MoveNext
Loop
私の選択クエリは、私が欲しいものを正確に返します。返品する: Horizontal view
ありがとうございます。 AG従業員IDが前回と異なる場合にのみ、新しいレコードを追加する必要があります
'rstTemp.AddNew'従業員IDが以前のものと異なる場合にのみこれを実行してください。 –
代わりにクロス集計クエリ(PIVOT)を使用することをお勧めします。これはまさに彼らのためのものです。 – Andre