Ich versuche, Visualisierungen in unserer Produktion zu erstellen. Wir haben zwei Linien mit mehreren hundert Leuten, jede mit unterschiedlichen Schichtstrategien. Ich konnte die Ergebnisse, die ich in Access haben möchte, durch Durchlaufen der Datensätze erzeugen. Ich möchte es auf SQL Server hochskalieren und die Geschwindigkeit verbessern.Berechnen Stunden pro Stunde
Kann mir bitte jemand in die richtige Richtung zeigen?
Hier ist die VBA-Code, der in Access funktioniert.
Public Function MakeLaborData()
Dim db As dao.Database
Dim rs As dao.Recordset
Dim hr As Date
Dim LaborOn As Date
Dim LaborOff As Date
Dim Hours As Double
Set db = CurrentDb
Set rs1 = db.OpenRecordset("t_Labor") 'myTable is a MS-Access table created previously
Set rs2 = db.OpenRecordset("t_Labor_by_Hour")
Do While Not rs1.EOF
LaborOn = rs1.Fields("LABOR_ON").Value
If IsNull(rs1.Fields("LABOR_OFF").Value) Then
LaborOff = Now()
Else
LaborOff = rs1.Fields("LABOR_OFF").Value
End If
hr = DateSerial(DatePart("yyyy", LaborOn), DatePart("m", LaborOn), DatePart("d", LaborOn)) + (DatePart("h", LaborOn)/24)
Do Until hr > LaborOff
If LaborOn > hr And LaborOff < hr + 1/24 Then
Hours = (LaborOff - LaborOn) * 24
ElseIf LaborOn > hr And LaborOff > hr + 1/24 Then
Hours = ((hr + 1/24) - LaborOn) * 24
ElseIf LaborOn < hr And LaborOff > hr + 1/24 Then
Hours = 1
ElseIf LaborOn < hr And LaborOff < hr + 1/24 Then
Hours = (LaborOff - hr) * 24
Else
Hours = 0
End If
With rs2
.AddNew
!Line_Number = rs1!UNIT
!SOI = rs1!JOB
!Employee = rs1!Employee
!Hour_of_Day = hr
!Labor_Hours = Hours
.Update
End With
hr = hr + 1/24
Loop
rs1.MoveNext
Loop
rs1.Close
rs2.Close
End Function
Zeigen Sie uns Ihre Datenstruktur, Abfrage, die Sie versucht haben, erwartete Ausgabe? Wie können wir Ihnen von einem Screenshot helfen? – artm
OK. Wie lade ich hier einen Beispieldatensatz hoch? –