Advertisement
Advertisement
| 06.19.2008 at 12:08PM PDT, ID: 23500155 |
|
[x]
Attachment Details
|
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: |
Private Sub Command8_Click()
Dim cnn1 As ADODB.Connection
Dim myRecordSet As New ADODB.Recordset
Dim mySQLtech As String
Dim varTechName As String
Dim datWeekEnd As Date
'create connection
Set cnn1 = CurrentProject.Connection
'create recordset
myRecordSet.ActiveConnection = cnn1
'create SQL string to select only desired technicians
Dim mySQL As String
mySQL = "SELECT [tblTechs].[techID], [tblTechs].[First Name], [tblTechs].[Last Name] FROM tblTechs"
mySQL = mySQL & " WHERE tblTechs.CreateTimeSheet = True"
'open recordset with desired technician ids included
myRecordSet.Open Source:=mySQL, CursorType:=adOpenStatic
'check for error condition and exit sub if error will result
If myRecordSet.RecordCount = 0 Then
MsgBox "No technicians are selected", vbOKOnly
Exit Sub
End If
'get date from form and decide whether or not to filter
'on the date in the txtbox
If IsNull([Forms]![form1].[txtWeekEnd]) Then
strtext41 = "All unpaid time records"
mySQLtech = "SELECT [tblSvcOrdersDet].[DateWorked], [tblSvcOrdersDet].[SvcOrder], " _
& "[tblSvcOrders].[ClassID], [tblSvcOrders].[Customer], [tblSvcOrdersDet].[Reg Hours], " _
& "[tblSvcOrdersDet].[OT Hours], [tblSvcOrders].[JobNumber], [tblSvcOrders].[SODate], [tblSvcOrdersDet].[tech] " _
& "FROM tblSvcOrders INNER JOIN tblSvcOrdersDet ON tblSvcOrders.SvcOrder=tblSvcOrdersDet.SvcOrder " _
& "WHERE [tblSvcOrdersDet].[tech] = "
Else
datWeekEnd = [Forms]![form1].[txtWeekEnd]
strtext41 = "Timesheets for the week ending " & Format(datWeekEnd, "dddd mmm d, yyyy")
mySQLtech = "SELECT [tblSvcOrdersDet].[DateWorked], [tblSvcOrdersDet].[SvcOrder], " _
& "[tblSvcOrders].[ClassID], [tblSvcOrders].[Customer], [tblSvcOrdersDet].[Reg Hours], " _
& "[tblSvcOrdersDet].[OT Hours], [tblSvcOrders].[JobNumber], [tblSvcOrders].[SODate], [tblSvcOrdersDet].[tech] " _
& "FROM tblSvcOrders INNER JOIN tblSvcOrdersDet ON tblSvcOrders.SvcOrder=tblSvcOrdersDet.SvcOrder " _
& "WHERE [tblSvcOrdersDet].[DateWorked] BETWEEN #" & CDate(DateAdd("d", -6, datWeekEnd)) & "# AND #" _
& CDate(datWeekEnd) & "# And [tblSvcOrdersDet].[tech] = "
End If
'MsgBox mySQLtech
For i = 0 To myRecordSet.RecordCount - 1
DoCmd.OpenReport "tblsvcordersdet", acViewReport
Reports("tblsvcordersdet").Visible = False
varTechName = myRecordSet.Fields(1) & " " & myRecordSet.Fields(2)
Reports("tblsvcordersdet").RecordSource = mySQLtech & myRecordSet.Fields(0) & ";"
Reports("tblsvcordersdet").txtTechname.ControlSource = "=DLookup(""[First Name]"", " _
& """[tblTechs]"", ""[techid]=" & myRecordSet.Fields(0) & """) & "" "" & DLookup(""[Last Name]"", " _
& """[tblTechs]"", ""[techid]=" & myRecordSet.Fields(0) & """)"
Reports("tblsvcordersdet").Requery
DoCmd.OpenReport "tblsvcordersdet", acViewPreview
If myRecordSet.RecordCount - i - 1 <> 0 Then
msgresult = MsgBox("OK for next technician. Cancel to exit preview.", vbOKCancel)
If msgresult = 2 Then
DoCmd.Close acReport, "tblsvcordersdet"
Exit For
End If
myRecordSet.MoveNext
End If
Next
'remove used objects from memory
Set myRecordSet = Nothing
Set cnn1 = Nothing
'If IsOpen("tblsvcordersdet", acReport) Then DoCmd.Close acReport, "tblsvcordersdet"
End Sub
|