Introduction to SQL Conjunctions |
|
Fundamentals of Conjunctions
Filtering by Selection and Conjunctions
A logical conjunction is a condition in which two expressions must be true for the whole statement to be true. A logical conjunction can be created on a table, a query, a form, or a report, in either their regular view or in design. Microsoft Access provides many options to create and execute a logical conjunction.
Filtering by selection is one of the ways, and one of the easiest ways you can create a logical conjunction for data analysis. To proceed, display the table or form in the Datasheet View, the form in the Form View, the report in Report View, or the form or report in Layout View. As seen in Lesson 34, either right-click a value in the column of your choice and select one of the filter options, or click the desired value and use the desired option from the Selection button in the Ribbon. Then do the same for another column of your choice.
Practical Learning: Introducing SQL Conjunctions
A Logical Conjunction When Filtering by Value
Filtering by value is another option to apply a conjunctive filter in a list. To start:
In both cases, a window would come up with a check box for each values of the column you selected. Here is an example:
Put a check mark on a value other than (Select All). After that first selection, click OK. Perform the same actions in another column, that is, make a value selection on another column and click OK. This means that the selections must be made on two different columns.
To remove the filter, we saw that you could click the Toggle Filters button on the Ribbon or the Filtered button on the table, query, or form. As an alternative, you can display the window again, click the (Select All) option and click OK.
Filtering by Form for a Logical Conjunction
As seen in the previous lesson, to filter by form, open the table, query, or form in its regular view. Switch to the Filter By Form window as we saw in the previous lesson. To create a conjunction when filtering by form, click the combo box under a desired field and select the desired value. Then, click the combo box under the other desired field and select the second desired value. After making the selections, apply the filter. The resulting list would include the records that use both of the selected values.
A Logical Conjunction in a Query Design
Remember that, to create a filter in the Design View of a query, you use the Criteria box of a field. To create a logical conjunction, click the Criteria box of the other field and type the second Boolean expression. This means that the sub-expressions of a logical conjunction should be made on the same Criteria row but for different fields.
A Logical Conjunction on an Object Filter or the Query Builder
To set a conditional conjunction on a table, an existing query, or a form/report that already has a record source, or if you are setting up the Record Source of a new form or report, display the window for data selection and proceed as if you were working in the Design View of a query.
An Expression for a Logical Conjunction
Introduction
The Boolean operator used to create a logical conjunction is named AND. Its expression uses the following formula:
sub-expression1 AND sub-expression2
As you can see, you create a sub-expression on each side of the AND operator. Each sub-expression is the type of logical expression we saw in Lesson 34 as:
column-name operator value
This means that a logical conjunction is formulated as:
column-name1 operator value1 AND column-name2 operator value2
To make the expression easy to read, you should put each sub-expression in parentheses as in:
(column-name1 operator value1) AND (column-name2 operator value2)
Creating a Conjunction Criterion in the Design View
To create a filtered conjunction for a table, a query, a form, or a report in Design View, access its Property Sheet. Click Filter and type a conjunctive expression as seen above. Remember that if you want the filter to apply immediately when you display the object in its regular view, set the Filter On Load property to Yes.
Logical Conjunctions in the SQL
As seen for other filters, in the SQL, a logical disjunction is created in the WHERE clause as follows:
WHERE sub-expression1 AND sub-expression2
Remember that each sub-expression is in the form:
field-name Operator Value
Here is an example:
SELECT PropertyNumber,
City,
Locality,
PropertyType,
Condition,
Bedrooms,
Bathrooms,
MarketValue
FROM Properties
WHERE PropertyType = "single family" AND Condition = "excellent";
Remember that it is a good idea to put each sub-expression in parentheses. Here is an example:
SELECT PropertyNumber, City, Locality, PropertyType, Condition, Bedrooms, Bathrooms, MarketValue FROM Properties WHERE (PropertyType = "single family") AND (Condition = "excellent");
Of course, the values can come from Windows controls. In this case, make sure you convert each value to the appropriate type.
Practical Learning: Applying a SQL Conjunction
Private Sub txtStartDate_LostFocus() Dim dbWattsALoan As Database Dim rsTimeSheets As Recordset If IsNull(txtEmployeeNumber) Then Exit Sub End If If IsNull(txtStartDate) Then Exit Sub End If Set dbWattsALoan = CurrentDb Set rsTimeSheets = dbWattsALoan.OpenRecordset("SELECT TimeSheetID, " & _ " Week1Monday, Week1Tuesday, Week1Wednesday, Week1Thursday, Week1Friday, Week1Saturday, Week1Sunday, " & _ " Week2Monday, Week2Tuesday, Week2Wednesday, Week2Thursday, Week2Friday, Week2Saturday, Week2Sunday " & _ "FROM TimeSheets " & _ "WHERE (EmployeeNumber = '" & txtEmployeeNumber & "') AND (StartDate = #" & CDate(txtStartDate) & "#);", _ RecordsetTypeEnum.dbOpenDynaset, RecordsetOptionEnum.dbForwardOnly, LockTypeEnum.dbOptimistic) If rsTimeSheets.RecordCount > 0 Then txtTimeSheetNumber = rsTimeSheets("TimeSheetID").Value txtTimeSheetNumber.Visible = True txtWeek1Monday = rsTimeSheets("Week1Monday").Value txtWeek1Tuesday = rsTimeSheets("Week1Tuesday").Value txtWeek1Wednesday = rsTimeSheets("Week1Wednesday").Value txtWeek1Thursday = rsTimeSheets("Week1Thursday").Value txtWeek1Friday = rsTimeSheets("Week1Friday").Value txtWeek1Saturday = rsTimeSheets("Week1Saturday").Value txtWeek1Sunday = rsTimeSheets("Week1Sunday").Value txtWeek2Monday = rsTimeSheets("Week2Monday").Value txtWeek2Tuesday = rsTimeSheets("Week2Tuesday").Value txtWeek2Wednesday = rsTimeSheets("Week2Wednesday").Value txtWeek2Thursday = rsTimeSheets("Week2Thursday").Value txtWeek2Friday = rsTimeSheets("Week2Friday").Value txtWeek2Saturday = rsTimeSheets("Week2Saturday").Value txtWeek2Sunday = rsTimeSheets("Week2Sunday").Value Else txtTimeSheetNumber = "0" 'txtTimeSheetNumber.Visible = False txtWeek1Monday = "0.00" txtWeek1Tuesday = "0.00" txtWeek1Wednesday = "0.00" txtWeek1Thursday = "0.00" txtWeek1Friday = "0.00" txtWeek1Saturday = "0.00" txtWeek1Sunday = "0.00" txtWeek2Monday = "0.00" txtWeek2Tuesday = "0.00" txtWeek2Wednesday = "0.00" txtWeek2Thursday = "0.00" txtWeek2Friday = "0.00" txtWeek2Saturday = "0.00" txtWeek2Sunday = "0.00" End If ' After the user has entered a start date, get that date. ' Add 14 days to the start date to get the end date txtEndDate = DateAdd("d", 13, CDate(txtStartDate)) lblWeek1Monday.Caption = txtStartDate lblWeek1Tuesday.Caption = DateAdd("d", 1, CDate(txtStartDate)) lblWeek1Wednesday.Caption = DateAdd("d", 2, CDate(txtStartDate)) lblWeek1Thursday.Caption = DateAdd("d", 3, CDate(txtStartDate)) lblWeek1Friday.Caption = DateAdd("d", 4, CDate(txtStartDate)) lblWeek1Saturday.Caption = DateAdd("d", 5, CDate(txtStartDate)) lblWeek1Sunday.Caption = DateAdd("d", 6, CDate(txtStartDate)) lblWeek2Monday.Caption = DateAdd("d", 1, CDate(lblWeek1Sunday.Caption)) lblWeek2Tuesday.Caption = DateAdd("d", 1, CDate(lblWeek2Monday.Caption)) lblWeek2Wednesday.Caption = DateAdd("d", 1, CDate(lblWeek2Tuesday.Caption)) lblWeek2Thursday.Caption = DateAdd("d", 1, CDate(lblWeek2Wednesday.Caption)) lblWeek2Friday.Caption = DateAdd("d", 1, CDate(lblWeek2Thursday.Caption)) lblWeek2Saturday.Caption = DateAdd("d", 1, CDate(lblWeek2Friday.Caption)) lblWeek2Sunday.Caption = DateAdd("d", 1, CDate(lblWeek2Saturday.Caption)) txtTimeSheetCode = CreateTimeSheetCode(txtEmployeeNumber, CDate(txtStartDate)) rsTimeSheets.Close dbWattsALoan.Close End Sub
Private Sub cmdFindTimeSheet_Click() Dim dbWattsALoan As Database Dim rsEmployees As Recordset Dim rsTimeSheets As Recordset Dim dWeek1Monday As Double, dWeek1Tuesday As Double Dim dWeek1Wednesday As Double, dWeek1Thursday As Double Dim dWeek1Friday As Double, dWeek1Saturday As Double, dWeek1Sunday As Double Dim dWeek2Monday As Double, dWeek2Tuesday As Double Dim dWeek2Wednesday As Double, dWeek2Thursday As Double Dim dWeek2Friday As Double, dWeek2Saturday As Double, dWeek2Sunday As Double Dim dHourlySalary As Double, dOvertimeSalary As Double Dim dTotalWeek1Time As Double, dTotalWeek2Time As Double Dim dWeek1Overtime As Double, dWeek2Overtime As Double Dim dWeek1RegularTime As Double, dWeek2RegularTime As Double Dim dWeek1RegularPay As Currency, dWeek2RegularPay As Currency Dim dWeek1OvertimePay As Currency, dWeek2OvertimePay As Currency Dim dRegularTime As Double, dOvertime As Double Dim dRegularPay As Double, dOvertimePay As Double Dim dTotalEarnings As Double, dNetEarnings As Double Dim dFederalTax As Double, dSocialSecurityTax As Double, _ dMedicalTax As Double, dStateTax As Double If IsNull(txtEmployeeNumber) Then Exit Sub End If If IsNull(txtStartDate) Then Exit Sub End If Set dbWattsALoan = CurrentDb Set rsTimeSheets = dbWattsALoan.OpenRecordset("SELECT Week1Monday, Week1Tuesday, Week1Wednesday, Week1Thursday, Week1Friday, Week1Saturday, Week1Sunday, " & _ " Week2Monday, Week2Tuesday, Week2Wednesday, Week2Thursday, Week2Friday, Week2Saturday, Week2Sunday " & _ "FROM TimeSheets " & _ "WHERE (EmployeeNumber = '" & txtEmployeeNumber & "') AND (StartDate = #" & CDate(txtStartDate) & "#);", _ RecordsetTypeEnum.dbOpenDynaset, RecordsetOptionEnum.dbForwardOnly, LockTypeEnum.dbOptimistic) If rsTimeSheets.RecordCount > 0 Then ' Retrieve the hourly salary dHourlySalary = CDbl(txtHourlySalary) ' Retrieve the time for each day ' First Week dWeek1Monday = rsTimeSheets("Week1Monday").Value dWeek1Tuesday = rsTimeSheets("Week1Tuesday").Value dWeek1Wednesday = rsTimeSheets("Week1Wednesday").Value dWeek1Thursday = rsTimeSheets("Week1Thursday").Value dWeek1Friday = rsTimeSheets("Week1Friday").Value dWeek1Saturday = rsTimeSheets("Week1Saturday").Value dWeek1Sunday = rsTimeSheets("Week1Sunday").Value ' Second Week dWeek2Monday = rsTimeSheets("Week2Monday").Value dWeek2Tuesday = rsTimeSheets("Week2Tuesday").Value dWeek2Wednesday = rsTimeSheets("Week2Wednesday").Value dWeek2Thursday = rsTimeSheets("Week2Thursday").Value dWeek2Friday = rsTimeSheets("Week2Friday").Value dWeek2Saturday = rsTimeSheets("Week2Saturday").Value dWeek2Sunday = rsTimeSheets("Week2Sunday").Value ' Calculate the total time for first week dTotalWeek1Time = dWeek1Monday + dWeek1Tuesday + _ dWeek1Wednesday + dWeek1Thursday + _ dWeek1Friday + dWeek1Saturday + dWeek1Sunday ' Calculate the total time for second week dTotalWeek2Time = dWeek2Monday + dWeek2Tuesday + _ dWeek2Wednesday + dWeek2Thursday + _ dWeek2Friday + dWeek2Saturday + dWeek2Sunday ' The overtime is paid time and half dOvertimeSalary = dHourlySalary * 1.5 ' If the employee worked under 40 hours, there is no overtime If dTotalWeek1Time <= 40 Then dWeek1RegularTime = dTotalWeek1Time dWeek1RegularPay = dHourlySalary * dWeek1RegularTime dWeek1Overtime = 0 dWeek1OvertimePay = 0 ' If the employee worked over 40 hours, calculate the overtime ElseIf dTotalWeek1Time > 40 Then dWeek1RegularTime = 40 dWeek1RegularPay = dHourlySalary * 40 dWeek1Overtime = dTotalWeek1Time - 40 dWeek1OvertimePay = dWeek1Overtime * dOvertimeSalary End If If dTotalWeek2Time <= 40 Then dWeek2RegularTime = dTotalWeek2Time dWeek2RegularPay = dHourlySalary * dWeek2RegularTime dWeek2Overtime = 0 dWeek2OvertimePay = 0 ElseIf dTotalWeek2Time > 40 Then dWeek2RegularTime = 40 dWeek2RegularPay = dHourlySalary * 40 dWeek2Overtime = dTotalWeek2Time - 40 dWeek2OvertimePay = dWeek2Overtime * dOvertimeSalary End If dRegularTime = dWeek1RegularTime + dWeek2RegularTime dOvertime = dWeek1Overtime + dWeek2Overtime dRegularPay = dWeek1RegularPay + dWeek2RegularPay dOvertimePay = dWeek1OvertimePay + dWeek2OvertimePay dTotalEarnings = dRegularPay + dOvertimePay ' The following calculations are for demonstration purpose only ' Consult the brochure for federal tax table ' FederalTax = ??? dSocialSecurityTax = dTotalEarnings * 6.2 / 100 dMedicalTax = dTotalEarnings * 1.45 / 100 dStateTax = dTotalEarnings * 5.5 / 100 dNetEarnings = dTotalEarnings - dSocialSecurityTax - dMedicalTax - dStateTax txtRegularTime = dRegularTime txtOvertime = dOvertime txtRegularPay = CCur(dRegularPay) txtOvertimePay = CCur(dOvertimePay) txtGrossPay = CDbl(dTotalEarnings) txtSocialSecurityTax = CDbl(dSocialSecurityTax) txtMedicareTax = CDbl(dMedicalTax) txtStateTax = CDbl(dStateTax) txtNetPay = CDbl(dNetEarnings) Else MsgBox "No time sheet was found in that time frame for the indicated employee.", _ vbOKOnly Or vbInformation, "Watts A Loan - Employees Payroll" txtRegularTime = "0.00" txtOvertime = "0.00" txtRegularPay = "0.00" txtOvertimePay = "0.00" txtGrossPay = "0.00" txtSocialSecurityTax = "0.00" txtMedicareTax = "0.00" txtStateTax = "0.00" txtNetPay = "0.00" End If rsTimeSheets.Close dbWattsALoan.Close End Sub
Private Sub cmdLoanAllocation_Click() DoCmd.OpenForm "LoanAllocation" End Sub
Private Sub cmdNewPayment_Click() DoCmd.OpenForm "NewPayment" End Sub
Private Sub cmdEmployeesRecords_Click() DoCmd.OpenForm "Employees" End Sub
Private Sub cmdTimeSheet_Click() DoCmd.OpenForm "TimeSheet" End Sub
Private Sub cmdPayroll_Click() DoCmd.OpenForm "Payroll" End Sub
Private Sub cmdClose_Click() DoCmd.Close End Sub
Private Sub txtStartDate_LostFocus() Dim rsTimeSheets As Object Dim dbDepartmentStore As Object If IsNull(txtStartDate) Then Exit Sub End If txtEndDate = FormatDateTime(DateAdd("d", 13, CDate(txtStartDate)), vbLongDate) Set dbDepartmentStore = CurrentDb Set rsTimeSheets = dbDepartmentStore.OpenRecordset("SELECT TimeSheetNumber FROM TimeSheets;") If rsTimeSheets.RecordCount > 0 Then rsTimeSheets.MoveLast timeSheetFound = False txtTimeSheetNumber = rsTimeSheets("TimeSheetNumber") rsTimeSheets.MoveFirst End If Set rsTimeSheets = dbDepartmentStore.OpenRecordset("SELECT TimeSheetNumber, EmployeeNumber, StartDate, " & _ "Week1Monday, Week1Tuesday, Week1Wednesday, Week1Thursday, Week1Friday, Week1Saturday, Week1Sunday, " & _ "Week2Monday, Week2Tuesday, Week2Wednesday, Week2Thursday, Week2Friday, Week2Saturday, Week2Sunday " & _ "FROM TimeSheets " & _ "WHERE (EmployeeNumber = '" & txtEmployeeNumber & "') AND (StartDate = '" & txtStartDate & "');") If rsTimeSheets.RecordCount > 0 Then MsgBox "The indicated employee already completed a time sheet for the specified time frame." & vbCrLf & _ "The time sheet record will be displayed.", _ VbMsgBoxStyle.vbOKOnly Or vbInformation, _ "FunDS - Employees Time Sheets" timeSheetFound = True With rsTimeSheets txtTimeSheetNumber = rsTimeSheets("TimeSheetNumber") txtWeek1Monday = rsTimeSheets("Week1Monday") txtWeek1Tuesday = rsTimeSheets("Week1Tuesday") txtWeek1Wednesday = rsTimeSheets("Week1Wednesday") txtWeek1Thursday = rsTimeSheets("Week1Thursday") txtWeek1Friday = rsTimeSheets("Week1Friday") txtWeek1Saturday = rsTimeSheets("Week1Saturday") txtWeek1Sunday = rsTimeSheets("Week1Sunday") txtWeek2Monday = rsTimeSheets("Week2Monday") txtWeek2Tuesday = rsTimeSheets("Week2Tuesday") txtWeek2Wednesday = rsTimeSheets("Week2Wednesday") txtWeek2Thursday = rsTimeSheets("Week2Thursday") txtWeek2Friday = rsTimeSheets("Week2Friday") txtWeek2Saturday = rsTimeSheets("Week2Saturday") txtWeek2Sunday = rsTimeSheets("Week2Sunday") End With End If Set rsTimeSheets = Nothing Set dbDepartmentStore = Nothing End Sub
Private Sub cmdSubmit_Click() Dim rstTimeSheets As Object Dim dbDepartmentStore As Object Set dbDepartmentStore = CurrentDb Set rstTimeSheets = dbDepartmentStore.OpenRecordset("SELECT TimeSheetNumber, EmployeeNumber, StartDate, " & _ "Week1Monday, Week1Tuesday, Week1Wednesday, Week1Thursday, Week1Friday, Week1Saturday, Week1Sunday, " & _ "Week2Monday, Week2Tuesday, Week2Wednesday, Week2Thursday, Week2Friday, Week2Saturday, Week2Sunday " & _ "FROM TimeSheets " & _ "WHERE (EmployeeNumber = '" & txtEmployeeNumber & "') AND (StartDate = '" & txtStartDate & "');") If rstTimeSheets.RecordCount > 0 Then rstTimeSheets.Edit rstTimeSheets("Week1Monday").Value = CDbl(Nz(txtWeek1Monday)) rstTimeSheets("Week1Tuesday").Value = CDbl(Nz(txtWeek1Tuesday)) rstTimeSheets("Week1Wednesday").Value = CDbl(Nz(txtWeek1Wednesday)) rstTimeSheets("Week1Thursday").Value = CDbl(Nz(txtWeek1Thursday)) rstTimeSheets("Week1Friday").Value = CDbl(Nz(txtWeek1Friday)) rstTimeSheets("Week1Saturday").Value = CDbl(Nz(txtWeek1Saturday)) rstTimeSheets("Week1Sunday").Value = CDbl(Nz(txtWeek1Sunday)) rstTimeSheets("Week2Monday").Value = CDbl(Nz(txtWeek2Monday)) rstTimeSheets("Week2Tuesday").Value = CDbl(Nz(txtWeek2Tuesday)) rstTimeSheets("Week2Wednesday").Value = CDbl(Nz(txtWeek2Wednesday)) rstTimeSheets("Week2Thursday").Value = CDbl(Nz(txtWeek2Thursday)) rstTimeSheets("Week2Friday").Value = CDbl(Nz(txtWeek2Friday)) rstTimeSheets("Week2Saturday").Value = CDbl(Nz(txtWeek2Saturday)) rstTimeSheets("Week2Sunday").Value = CDbl(Nz(txtWeek2Sunday)) rstTimeSheets.Update Else rstTimeSheets.AddNew rstTimeSheets("TimeSheetNumber").Value = CLng(txtTimeSheetNumber) + 1 rstTimeSheets("EmployeeNumber").Value = txtEmployeeNumber rstTimeSheets("StartDate").Value = txtStartDate rstTimeSheets("Week1Monday").Value = CDbl(Nz(txtWeek1Monday)) rstTimeSheets("Week1Tuesday").Value = CDbl(Nz(txtWeek1Tuesday)) rstTimeSheets("Week1Wednesday").Value = CDbl(Nz(txtWeek1Wednesday)) rstTimeSheets("Week1Thursday").Value = CDbl(Nz(txtWeek1Thursday)) rstTimeSheets("Week1Friday").Value = CDbl(Nz(txtWeek1Friday)) rstTimeSheets("Week1Saturday").Value = CDbl(Nz(txtWeek1Saturday)) rstTimeSheets("Week1Sunday").Value = CDbl(Nz(txtWeek1Sunday)) rstTimeSheets("Week2Monday").Value = CDbl(Nz(txtWeek2Monday)) rstTimeSheets("Week2Tuesday").Value = CDbl(Nz(txtWeek2Tuesday)) rstTimeSheets("Week2Wednesday").Value = CDbl(Nz(txtWeek2Wednesday)) rstTimeSheets("Week2Thursday").Value = CDbl(Nz(txtWeek2Thursday)) rstTimeSheets("Week2Friday").Value = CDbl(Nz(txtWeek2Friday)) rstTimeSheets("Week2Saturday").Value = CDbl(Nz(txtWeek2Saturday)) rstTimeSheets("Week2Sunday").Value = CDbl(Nz(txtWeek2Sunday)) rstTimeSheets.Update End If cmdClose_Click Set rstTimeSheets = Nothing Set dbDepartmentStore = Nothing End Sub
Private Sub cmdClose_Click() DoCmd.Close End Sub
Private Sub cmdProcessPayroll_Click() Dim dbFunDS As Object Dim rsTimeSheets As Object Dim PayrollFound As Boolean Dim timeSheetFound As Boolean Dim rsEmployeeLastPayroll As Object Dim rsPayrollFromTimeSheet As Object Dim GrossSalary As Double, Exemptions As Double Dim SocialSecurity As Double, Medicare As Double Dim AllowanceRate As Double, WithheldAmount As Double Dim WithheldingAllowances As Double, TaxableGrossWages As Double Dim rsFilingStatus As Object Dim iFilingStatus As Integer Dim rsMaritalStatus As Object Dim iMaritalStatus As Integer If IsNull(txtStartDate) Or IsEmpty(txtStartDate) Or IsNull(txtEmployeeNumber) Or IsEmpty(txtEmployeeNumber) Then Exit Sub End If PayrollFound = False timeSheetFound = False Set dbFunDS = CurrentDb Set rsPayrollFromTimeSheet = dbFunDS.OpenRecordset("SELECT PayrollNumber, EmployeeNumber, EmployeeFirstName, " & _ " EmployeeLastName, EmployeeAddress, EmployeeCity, " & _ " EmployeeCounty, EmployeeState, EmployeeZIPCode, " & _ " EmployeeMaritalStatus, EmployeeExemptions, " & _ " EmployeeHourlySalary, EmployeeFilingStatus, " & _ " TimeSheetNumber, TimeSheetStartDate, TimeSheetWeek1Monday, " & _ " TimeSheetWeek1Tuesday, TimeSheetWeek1Wednesday, " & _ " TimeSheetWeek1Thursday, TimeSheetWeek1Friday, " & _ " TimeSheetWeek1Saturday, TimeSheetWeek1Sunday, " & _ " TimeSheetWeek2Monday, TimeSheetWeek2Tuesday, " & _ " TimeSheetWeek2Wednesday, TimeSheetWeek2Thursday, " & _ " TimeSheetWeek2Friday, TimeSheetWeek2Saturday, TimeSheetWeek2Sunday, " & _ " RegularTime, Overtime, RegularPay, OvertimePay, GrossSalary, " & _ " TaxableGrossWagesCurrent, AllowancesCurrent, FederalIncomeTaxCurrent, " & _ " SocialSecurityTaxCurrent, MedicareTaxCurrent, StateIncomeTaxCurrent, " & _ " TaxableGrossWagesYTD, AllowancesYTD, FederalIncomeTaxYTD, " & _ " SocialSecurityTaxYTD, MedicareTaxYTD, StateIncomeTaxYTD " & _ "FROM PayrollSystem " & _ "WHERE (TimeSheetStartDate = '" & txtStartDate & "') AND (EmployeeNumber = '" & txtEmployeeNumber & "');") With rsPayrollFromTimeSheet If .RecordCount > 0 Then MsgBox "A payroll for that time sheet (based on the specified start date and the employee number) was prepared already." & vbCrLf & _ "The payroll record will be displayed.", _ VbMsgBoxStyle.vbOKOnly Or vbInformation, _ "FunDS - Employees Payrol" iPayrollNumber = rsPayrollFromTimeSheet("PayrollNumber") txtPayrollNumber = CStr(iPayrollNumber) txtFirstName = .Fields("EmployeeFirstName").Value txtLastName = .Fields("EmployeeLastName").Value txtAddress = .Fields("EmployeeAddress").Value txtCity = .Fields("EmployeeCity").Value txtCounty = .Fields("EmployeeCounty").Value txtState = .Fields("EmployeeState").Value txtZIPCode = .Fields("EmployeeZIPCode").Value txtExemptions = .Fields("EmployeeExemptions").Value txtHourlySalary = .Fields("EmployeeHourlySalary").Value iMaritalStatus = .Fields("EmployeeMaritalStatus") iFilingStatus = .Fields("EmployeeFilingStatus") Set rsMaritalStatus = dbFunDS.OpenRecordset("SELECT MaritalStatusID, MaritalStatus " & _ "FROM MaritalsStatus " & _ "WHERE MaritalStatusID = " & iMaritalStatus & ";") txtMaritalStatus = rsMaritalStatus("MaritalStatusID") & " - " & rsMaritalStatus("MaritalStatus") Set rsFilingStatus = dbFunDS.OpenRecordset("SELECT FilingStatusID, FilingStatus " & _ "FROM FilingsStatus " & _ "WHERE FilingStatusID = " & iFilingStatus & ";") txtFilingStatus = rsFilingStatus("FilingStatusID") & " - " & rsFilingStatus("FilingStatus") txtTimeSheetNumber = .Fields("TimeSheetNumber").Value txtWeek1Monday = .Fields("TimeSheetWeek1Monday").Value txtWeek1Tuesday = .Fields("TimeSheetWeek1Tuesday").Value txtWeek1Wednesday = .Fields("TimeSheetWeek1Wednesday").Value txtWeek1Thursday = .Fields("TimeSheetWeek1Thursday").Value txtWeek1Friday = .Fields("TimeSheetWeek1Friday").Value txtWeek1Saturday = .Fields("TimeSheetWeek1Saturday").Value txtWeek1Sunday = .Fields("TimeSheetWeek1Sunday").Value txtWeek2Monday = .Fields("TimeSheetWeek2Monday").Value txtWeek2Tuesday = .Fields("TimeSheetWeek2Tuesday").Value txtWeek2Wednesday = .Fields("TimeSheetWeek2Wednesday").Value txtWeek2Thursday = .Fields("TimeSheetWeek2Thursday").Value txtWeek2Friday = .Fields("TimeSheetWeek2Friday").Value txtWeek2Saturday = .Fields("TimeSheetWeek2Saturday").Value txtWeek2Sunday = .Fields("TimeSheetWeek2Sunday").Value txtRegularTime = .Fields("RegularTime").Value txtOvertime = .Fields("Overtime").Value txtRegularPay = .Fields("RegularPay").Value txtOvertimePay = .Fields("OvertimePay").Value txtGrossSalary = .Fields("GrossSalary").Value txtTaxableGrossWagesCurrent = .Fields("TaxableGrossWagesCurrent").Value txtAllowancesCurrent = .Fields("AllowancesCurrent").Value txtFederalIncomeTaxCurrent = .Fields("FederalIncomeTaxCurrent").Value txtSocialSecurityTaxCurrent = .Fields("SocialSecurityTaxCurrent").Value txtMedicareTaxCurrent = .Fields("MedicareTaxCurrent").Value txtStateIncomeTaxCurrent = .Fields("StateIncomeTaxCurrent").Value txtTaxableGrossWagesYTD = .Fields("TaxableGrossWagesYTD").Value txtAllowancesYTD = .Fields("AllowancesYTD").Value txtFederalIncomeTaxYTD = .Fields("FederalIncomeTaxYTD").Value txtSocialSecurityTaxYTD = .Fields("SocialSecurityTaxYTD").Value txtMedicareTaxYTD = .Fields("MedicareTaxYTD").Value txtStateIncomeTaxYTD = .Fields("StateIncomeTaxYTD").Value CalculateWeek1Monday CalculateWeek1Tuesday CalculateWeek1Wednesday CalculateWeek1Thursday CalculateWeek1Friday CalculateWeek1Saturday CalculateWeek1Sunday CalculateWeek2Monday CalculateWeek2Tuesday CalculateWeek2Wednesday CalculateWeek2Thursday CalculateWeek2Friday CalculateWeek2Saturday CalculateWeek2Sunday txtWeek1TotalTimeWorked = CDbl(txtWeek1Monday) + CDbl(txtWeek1Tuesday) + CDbl(txtWeek1Wednesday) + CDbl(txtWeek1Thursday) + CDbl(txtWeek1Friday) + CDbl(txtWeek1Saturday) + CDbl(txtWeek1Sunday) txtWeek1TotalRegularTime = CDbl(txtWk1MonRegularTime) + CDbl(txtWk1TueRegularTime) + CDbl(txtWk1WedRegularTime) + CDbl(txtWk1ThuRegularTime) + CDbl(txtWk1FriRegularTime) + CDbl(txtWk1SatRegularTime) + CDbl(txtWk1SunRegularTime) txtWeek1TotalOvertime = CDbl(txtWk1MonOvertime) + CDbl(txtWk1TueOvertime) + CDbl(txtWk1WedOvertime) + CDbl(txtWk1ThuOvertime) + CDbl(txtWk1FriOvertime) + CDbl(txtWk1SatOvertime) + CDbl(txtWk1SunOvertime) txtWeek1TotalRegularPay = CDbl(txtWk1MonRegularPay) + CDbl(txtWk1TueRegularPay) + CDbl(txtWk1WedRegularPay) + CDbl(txtWk1ThuRegularPay) + CDbl(txtWk1FriRegularPay) + CDbl(txtWk1SatRegularPay) + CDbl(txtWk1SunRegularPay) txtWeek1TotalOvertimePay = CDbl(txtWk1MonOvertimePay) + CDbl(txtWk1TueOvertimePay) + CDbl(txtWk1WedOvertimePay) + CDbl(txtWk1ThuOvertimePay) + CDbl(txtWk1FriOvertimePay) + CDbl(txtWk1SatOvertimePay) + CDbl(txtWk1SunOvertimePay) txtWeek2TotalTimeWorked = CDbl(txtWeek2Monday) + CDbl(txtWeek2Tuesday) + CDbl(txtWeek2Wednesday) + CDbl(txtWeek2Thursday) + CDbl(txtWeek2Friday) + CDbl(txtWeek2Saturday) + CDbl(txtWeek2Sunday) txtWeek2TotalRegularTime = CDbl(txtWk2MonRegularTime) + CDbl(txtWk2TueRegularTime) + CDbl(txtWk2WedRegularTime) + CDbl(txtWk2ThuRegularTime) + CDbl(txtWk2FriRegularTime) + CDbl(txtWk2SatRegularTime) + CDbl(txtWk2SunRegularTime) txtWeek2TotalOvertime = CDbl(txtWk2MonOvertime) + CDbl(txtWk2TueOvertime) + CDbl(txtWk2WedOvertime) + CDbl(txtWk2ThuOvertime) + CDbl(txtWk2FriOvertime) + CDbl(txtWk2SatOvertime) + CDbl(txtWk2SunOvertime) txtWeek2TotalRegularPay = CDbl(txtWk2MonRegularPay) + CDbl(txtWk2TueRegularPay) + CDbl(txtWk2WedRegularPay) + CDbl(txtWk2ThuRegularPay) + CDbl(txtWk2FriRegularPay) + CDbl(txtWk2SatRegularPay) + CDbl(txtWk2SunRegularPay) txtWeek2TotalOvertimePay = CDbl(txtWk2MonOvertimePay) + CDbl(txtWk2TueOvertimePay) + CDbl(txtWk2WedOvertimePay) + CDbl(txtWk2ThuOvertimePay) + CDbl(txtWk2FriOvertimePay) + CDbl(txtWk2SatOvertimePay) + CDbl(txtWk2SunOvertimePay) PayrollFound = True Exit Sub End If End With If PayrollFound = False Then Set rsTimeSheets = dbFunDS.OpenRecordset("SELECT TimeSheetNumber, EmployeeNumber, StartDate, " & _ "Week1Monday, Week1Tuesday, Week1Wednesday, Week1Thursday, Week1Friday, Week1Saturday, Week1Sunday, " & _ "Week2Monday, Week2Tuesday, Week2Wednesday, Week2Thursday, Week2Friday, Week2Saturday, Week2Sunday " & _ "FROM TimeSheets " & _ "WHERE (StartDate = '" & txtStartDate & "') AND (EmployeeNumber = '" & txtEmployeeNumber & "');") If rsTimeSheets.RecordCount > 0 Then MsgBox "The indicated employee already completed a time sheet for the specified time frame " & _ "but the payroll for that time sheet was not yet prepared." & vbCrLf & _ "The time sheet record will be displayed and the related calculations will be made.", _ VbMsgBoxStyle.vbOKOnly Or vbInformation, _ "FunDS - Employees Time Sheets" With rsTimeSheets txtTimeSheetNumber = rsTimeSheets("TimeSheetNumber") txtWeek1Monday = rsTimeSheets("Week1Monday") txtWeek1Tuesday = rsTimeSheets("Week1Tuesday") txtWeek1Wednesday = rsTimeSheets("Week1Wednesday") txtWeek1Thursday = rsTimeSheets("Week1Thursday") txtWeek1Friday = rsTimeSheets("Week1Friday") txtWeek1Saturday = rsTimeSheets("Week1Saturday") txtWeek1Sunday = rsTimeSheets("Week1Sunday") txtWeek2Monday = rsTimeSheets("Week2Monday") txtWeek2Tuesday = rsTimeSheets("Week2Tuesday") txtWeek2Wednesday = rsTimeSheets("Week2Wednesday") txtWeek2Thursday = rsTimeSheets("Week2Thursday") txtWeek2Friday = rsTimeSheets("Week2Friday") txtWeek2Saturday = rsTimeSheets("Week2Saturday") txtWeek2Sunday = rsTimeSheets("Week2Sunday") CalculateWeek1Monday CalculateWeek1Tuesday CalculateWeek1Wednesday CalculateWeek1Thursday CalculateWeek1Friday CalculateWeek1Saturday CalculateWeek1Sunday CalculateWeek2Monday CalculateWeek2Tuesday CalculateWeek2Wednesday CalculateWeek2Thursday CalculateWeek2Friday CalculateWeek2Saturday CalculateWeek2Sunday txtWeek1TotalTimeWorked = CDbl(txtWeek1Monday) + CDbl(txtWeek1Tuesday) + CDbl(txtWeek1Wednesday) + CDbl(txtWeek1Thursday) + CDbl(txtWeek1Friday) + CDbl(txtWeek1Saturday) + CDbl(txtWeek1Sunday) txtWeek1TotalRegularTime = CDbl(txtWk1MonRegularTime) + CDbl(txtWk1TueRegularTime) + CDbl(txtWk1WedRegularTime) + CDbl(txtWk1ThuRegularTime) + CDbl(txtWk1FriRegularTime) + CDbl(txtWk1SatRegularTime) + CDbl(txtWk1SunRegularTime) txtWeek1TotalOvertime = CDbl(txtWk1MonOvertime) + CDbl(txtWk1TueOvertime) + CDbl(txtWk1WedOvertime) + CDbl(txtWk1ThuOvertime) + CDbl(txtWk1FriOvertime) + CDbl(txtWk1SatOvertime) + CDbl(txtWk1SunOvertime) txtWeek1TotalRegularPay = CDbl(txtWk1MonRegularPay) + CDbl(txtWk1TueRegularPay) + CDbl(txtWk1WedRegularPay) + CDbl(txtWk1ThuRegularPay) + CDbl(txtWk1FriRegularPay) + CDbl(txtWk1SatRegularPay) + CDbl(txtWk1SunRegularPay) txtWeek1TotalOvertimePay = CDbl(txtWk1MonOvertimePay) + CDbl(txtWk1TueOvertimePay) + CDbl(txtWk1WedOvertimePay) + CDbl(txtWk1ThuOvertimePay) + CDbl(txtWk1FriOvertimePay) + CDbl(txtWk1SatOvertimePay) + CDbl(txtWk1SunOvertimePay) txtWeek2TotalTimeWorked = CDbl(txtWeek2Monday) + CDbl(txtWeek2Tuesday) + CDbl(txtWeek2Wednesday) + CDbl(txtWeek2Thursday) + CDbl(txtWeek2Friday) + CDbl(txtWeek2Saturday) + CDbl(txtWeek2Sunday) txtWeek2TotalRegularTime = CDbl(txtWk2MonRegularTime) + CDbl(txtWk2TueRegularTime) + CDbl(txtWk2WedRegularTime) + CDbl(txtWk2ThuRegularTime) + CDbl(txtWk2FriRegularTime) + CDbl(txtWk2SatRegularTime) + CDbl(txtWk2SunRegularTime) txtWeek2TotalOvertime = CDbl(txtWk2MonOvertime) + CDbl(txtWk2TueOvertime) + CDbl(txtWk2WedOvertime) + CDbl(txtWk2ThuOvertime) + CDbl(txtWk2FriOvertime) + CDbl(txtWk2SatOvertime) + CDbl(txtWk2SunOvertime) txtWeek2TotalRegularPay = CDbl(txtWk2MonRegularPay) + CDbl(txtWk2TueRegularPay) + CDbl(txtWk2WedRegularPay) + CDbl(txtWk2ThuRegularPay) + CDbl(txtWk2FriRegularPay) + CDbl(txtWk2SatRegularPay) + CDbl(txtWk2SunRegularPay) txtWeek2TotalOvertimePay = CDbl(txtWk2MonOvertimePay) + CDbl(txtWk2TueOvertimePay) + CDbl(txtWk2WedOvertimePay) + CDbl(txtWk2ThuOvertimePay) + CDbl(txtWk2FriOvertimePay) + CDbl(txtWk2SatOvertimePay) + CDbl(txtWk2SunOvertimePay) txtRegularTime = CDbl(txtWeek1TotalRegularTime) + CDbl(txtWeek2TotalRegularTime) txtOvertime = CDbl(txtWeek1TotalOvertime) + CDbl(txtWeek2TotalOvertime) txtRegularPay = CDbl(txtWeek1TotalRegularPay) + CDbl(txtWeek2TotalRegularPay) txtOvertimePay = CDbl(txtWeek1TotalOvertimePay) + CDbl(txtWeek2TotalOvertimePay) txtGrossSalary = CDbl(txtRegularPay) + CDbl(txtOvertimePay) AllowanceRate = 76.9 WithheldAmount = 0# GrossSalary = CDbl(txtGrossSalary) Exemptions = CDbl(txtExemptions) WithheldingAllowances = AllowanceRate * Exemptions TaxableGrossWages = GrossSalary - WithheldingAllowances Select Case Left(txtMaritalStatus, 1) Case 1 ' "Single" If TaxableGrossWages <= 44# Then WithheldAmount = 0# ElseIf (TaxableGrossWages > 44#) And (TaxableGrossWages <= 222#) Then WithheldAmount = (TaxableGrossWages - 44#) * 10# / 100# ElseIf (TaxableGrossWages > 222#) And (TaxableGrossWages <= 764#) Then WithheldAmount = 17.8 + ((TaxableGrossWages - 222#) * 15# / 100#) ElseIf (TaxableGrossWages > 764#) And (TaxableGrossWages <= 1789#) Then WithheldAmount = 99.1 + ((TaxableGrossWages - 764#) * 25# / 100#) ElseIf (TaxableGrossWages > 1789#) And (TaxableGrossWages <= 3685#) Then WithheldAmount = 355.05 + ((TaxableGrossWages - 1789#) * 28# / 100#) ElseIf (TaxableGrossWages > 3685#) And (TaxableGrossWages <= 7958#) Then WithheldAmount = 886.23 + ((TaxableGrossWages - 3685#) * 33# / 100#) ElseIf (TaxableGrossWages > 7958#) And (TaxableGrossWages <= 7990#) Then WithheldAmount = 2296.32 + ((TaxableGrossWages - 7958#) * 35# / 100#) Else WithheldAmount = 2307.52 + ((TaxableGrossWages - 7990#) * 39.6 / 100#) End If Case 2 ' "Married" If TaxableGrossWages <= 165# Then WithheldAmount = 0# ElseIf (TaxableGrossWages > 165#) And (TaxableGrossWages <= 520#) Then WithheldAmount = (TaxableGrossWages - 165#) * 10# / 100# ElseIf (TaxableGrossWages > 520#) And (TaxableGrossWages <= 1606#) Then WithheldAmount = 35.5 + ((TaxableGrossWages - 520#) * 15# / 100#) ElseIf (TaxableGrossWages > 1606#) And (TaxableGrossWages <= 3073#) Then WithheldAmount = 198.4 + ((TaxableGrossWages - 1606#) * 25# / 100#) ElseIf (TaxableGrossWages > 3073#) And (TaxableGrossWages <= 4597#) Then WithheldAmount = 565.15 + ((TaxableGrossWages - 3073#) * 28# / 100#) ElseIf (TaxableGrossWages > 4597#) And (TaxableGrossWages <= 8079#) Then WithheldAmount = 991.87 + ((TaxableGrossWages - 4597#) * 33# / 100#) ElseIf (TaxableGrossWages > 8079#) And (TaxableGrossWages <= 9105#) Then WithheldAmount = 2140.93 + ((TaxableGrossWages - 8079#) * 35# / 100#) Else WithheldAmount = 2500.03 + ((TaxableGrossWages - 9105#) * 39.6 / 100#) End If Case Else WithheldAmount = 0# End Select If GrossSalary < 118500# Then SocialSecurity = GrossSalary * 6.2 / 100# ' FY 2015 Else SocialSecurity = 118500# * 6.2 / 100# End If Medicare = GrossSalary * 1.45 / 100# txtAllowancesCurrent = FormatNumber(WithheldingAllowances) txtTaxableGrossWagesCurrent = FormatNumber(TaxableGrossWages) txtFederalIncomeTaxCurrent = FormatNumber(WithheldAmount) txtSocialSecurityTaxCurrent = FormatNumber(SocialSecurity) txtMedicareTaxCurrent = FormatNumber(Medicare) CalculateCurrentStateTaxes End With timeSheetFound = True End If End If If timeSheetFound = True Then Set rsEmployeeLastPayroll = dbFunDS.OpenRecordset("SELECT PayrollNumber, EmployeeNumber, EmployeeFirstName, " & _ " EmployeeLastName, EmployeeAddress, EmployeeCity, " & _ " EmployeeCounty, EmployeeState, EmployeeZIPCode, " & _ " EmployeeMaritalStatus, EmployeeExemptions, " & _ " EmployeeHourlySalary, EmployeeFilingStatus, " & _ " TimeSheetNumber, TimeSheetStartDate, TimeSheetWeek1Monday, " & _ " TimeSheetWeek1Tuesday, TimeSheetWeek1Wednesday, " & _ " TimeSheetWeek1Thursday, TimeSheetWeek1Friday, " & _ " TimeSheetWeek1Saturday, TimeSheetWeek1Sunday, " & _ " TimeSheetWeek2Monday, TimeSheetWeek2Tuesday, " & _ " TimeSheetWeek2Wednesday, TimeSheetWeek2Thursday, " & _ " TimeSheetWeek2Friday, TimeSheetWeek2Saturday, TimeSheetWeek2Sunday, " & _ " RegularTime, Overtime, RegularPay, OvertimePay, GrossSalary, " & _ " TaxableGrossWagesCurrent, AllowancesCurrent, FederalIncomeTaxCurrent, " & _ " SocialSecurityTaxCurrent, MedicareTaxCurrent, StateIncomeTaxCurrent, " & _ " TaxableGrossWagesYTD, AllowancesYTD, FederalIncomeTaxYTD, " & _ " SocialSecurityTaxYTD, MedicareTaxYTD, StateIncomeTaxYTD " & _ "FROM PayrollSystem " & _ "WHERE EmployeeNumber = '" & txtEmployeeNumber & "';") If rsEmployeeLastPayroll.RecordCount > 0 Then rsEmployeeLastPayroll.MoveLast txtTaxableGrossWagesYTD = CDbl(txtTaxableGrossWagesCurrent) + CDbl(rsEmployeeLastPayroll("TaxableGrossWagesYTD")) txtAllowancesYTD = CDbl(txtAllowancesCurrent) + rsEmployeeLastPayroll("AllowancesYTD") txtFederalIncomeTaxYTD = CDbl(txtFederalIncomeTaxCurrent) + rsEmployeeLastPayroll("FederalIncomeTaxYTD") txtSocialSecurityTaxYTD = CDbl(txtSocialSecurityTaxCurrent) + rsEmployeeLastPayroll("SocialSecurityTaxYTD") txtMedicareTaxYTD = CDbl(txtMedicareTaxCurrent) + rsEmployeeLastPayroll("MedicareTaxYTD") txtStateIncomeTaxYTD = CDbl(txtStateIncomeTaxCurrent) + rsEmployeeLastPayroll("StateIncomeTaxYTD") Else txtTaxableGrossWagesYTD = txtTaxableGrossWagesCurrent txtAllowancesYTD = txtAllowancesCurrent txtFederalIncomeTaxYTD = txtFederalIncomeTaxCurrent txtSocialSecurityTaxYTD = txtSocialSecurityTaxCurrent txtMedicareTaxYTD = txtMedicareTaxCurrent txtStateIncomeTaxYTD = txtStateIncomeTaxCurrent End If Else MsgBox "There is neither a payroll nor a time sheet for the indicated employee in the specified time frame.", _ VbMsgBoxStyle.vbOKOnly Or vbInformation, _ "FunDS - Employees Payroll" ResetForm txtStartDate = "" txtEndDate = "" Exit Sub End If Set dbFunDS = Nothing Set rsFilingStatus = Nothing Set rsMaritalStatus = Nothing Set rsPayrollFromTimeSheet = Nothing Set rsEmployeeLastPayroll = Nothing Set rsTimeSheets = Nothing End Sub
Private Sub cmdClose_Click() DoCmd.Close End Sub
Control | Name | Caption | |
Button | cmdNewTimeSheet | New Time Sheet... | |
Button | cmdNewEmployee | New Employee... | |
Button | cmdPayrollPreparation | Payroll Preparation... | |
Button | cmdClose | Close |
Private Sub cmdNewEmployee_Click() DoCmd.OpenForm "New Employee" End Sub
Private Sub cmdNewTimeSheet_Click() DoCmd.OpenForm "New Time Sheet" End Sub
Private Sub cmdPayrollSystem_Click() DoCmd.OpenForm "Payroll System" End Sub
Private Sub cmdClose_Click() DoCmd.Close End Sub
Creating a Many-Field Logical Conjunction
Introduction
So far, we included only two sub-expressions for a conjunction. Actually, you can include as many sub-expressions as you want. At the end, the database engine will include all records that include all of the values.
Filtering by Value
To create a logical conjunction that includes more than two expressions, if you are filtering by value, display the list of check boxes for one field, click the value of the desired check box, and click OK. Proceed to another field to make the next check selection and click OK. Continue with each additional field for the conjunction.
Filtering by Form
To create a logical conjunction that involves more than one value, if you are filtering by form, in the combo box of the desired field, select the desired value. Access the combo box of another field and select the desired value. Keep selecting the additional values from the desired fields. After making all the selections, apply the filter.
The SQL and Logical Conjunctions
To create a logical conjunction with many expressions in SQL, add as many logical expressions as you want and separate them with AND operators. Although the parentheses are not required, they make your expression easier to read.
SELECT PropertyNumber, City, State, PropertyType, Bedrooms AS Beds, Bathrooms AS Baths, YearBuilt, MarketValue FROM Properties WHERE (State = "md") AND (PropertyType = "single family") AND (Bedrooms = 4);
Topics on Creating and Using Conjunctions
Logical Expressions and Conjunctions
Each sub-expression of a logical conjunction can be a logical operation that can produce True/False or any value you want. To visually create it, in the Design View of a query, enter the desired criteria in the Criteria box of each field. Here is an example:
To create the conjunction in SQL, create two expressions separated by the AND operator.
Logical Expressions and/or Functions in a Conjunction
Each sub-expression of a logical conjunction can be a logical operation that can produce True/False or any value you want. A sub-expression can also be produced by a function. Here is an example:
Sorting Records
When creating a logical conjunction, you can sort the records using any of the fields, whether it is included in the expression or not.
Conjunctions and Record Sets
Instead of a simple SELECT statement, you can specify the condition of a record set as a conjunction. The condition is formulated as a normal disjunction.
Practical Learning: Testing a Database
1 | 2 | 3 | 4 | |
Employee # | 941148 | 927048 | 606384 | 952748 |
First Name | Catherine | Henry | Herbert | David |
Last Name | Watts | Meuer | Gibson | Evans |
Address | 12004 Harrington Ave | 802 Wheeler Street | 10324 Marina Ave | 5102 Piedmont Rd |
City | Baltimore | York | College Park | Silver Spring |
County | Baltimore | York | Prince George | Montgomery |
State | MD | PA | MD | MD |
ZIP Code | 21206 | 17401 | 20742 | 20910 |
Marital Status | 1 | 1 | 1 | 1 |
Exemptions | 0 | 3 | 1 | 2 |
Hourly Salary | 26.15 | 8.95 | 22.25 | 17.25 |
Filing Status | 2 | 2 | 2 | 2 |
Employee # | Start Date | Week 1 Monday | Week 1 Tuesday | Week 1 Wednesday | Week 1 Thursday | Week 1 Friday | Week 1 Saturday | Week 1 Sunday | Week 2 Monday | Week 2 Tuesday | Week 2 Wednesday | Week 2 Thursday | Week 2 Friday | Week 2 Saturday | Week 2 Sunday |
606384 | 1/1/2018 | 0 | 0 | 0 | 0 | 0 | 8 | 8 | 0 | 0 | 0 | 0 | 0 | 8 | 8 |
952748 | 1/1/2018 | 8 | 8 | 8 | 8 | 8 | 0 | 0 | 8 | 8 | 8 | 8 | 8 | 0 | 0 |
941148 | 1/1/2018 | 9 | 10 | 8.50 | 9.50 | 10.50 | 12 | 12 | 8.50 | 9 | 9.50 | 8 | 10 | 10 | 8.50 |
927048 | 1/1/2018 | 8 | 8 | 8 | 8 | 8 | 0 | 0 | 8 | 8 | 8 | 8 | 8 | 0 | 0 |
Start Date | Employee # |
1/1/2018 | 941148 |
1/1/2018 | 952748 |
1/1/2018 | 927048 |
1/1/2018 | 606384 |
5 | 6 | 7 | |
Employee # | 941148 | 283749 | 606384 |
First Name | Catherine | Laura | Herbert |
Last Name | Watts | Bellius | Gibson |
Address | 12004 Harrington Ave | 7447 Emiry Street | 8206 Stanson Rd |
City | Baltimore | Alexandria | Columbia |
County | Baltimore | Howard | |
State | MD | VA | MD |
ZIP Code | 21206 | 22314 | 21044 |
Marital Status | 2 | 1 | 1 |
Exemptions | 0 | 3 | 1 |
Hourly Salary | 26.15 | 16.85 | 24.50 |
Filing Status | 3 | 2 | 2 |
Employee # | Start Date | Week 1 Monday | Week 1 Tuesday | Week 1 Wednesday | Week 1 Thursday | Week 1 Friday | Week 1 Saturday | Week 1 Sunday | Week 2 Monday | Week 2 Tuesday | Week 2 Wednesday | Week 2 Thursday | Week 2 Friday | Week 2 Saturday | Week 2 Sunday |
606384 | 1/15/2018 | 0 | 0 | 0 | 0 | 4 | 9.50 | 8 | 0 | 0 | 0 | 0 | 6 | 8.50 | 6 |
941148 | 1/15/2018 | 10 | 8 | 9 | 10 | 8 | 9 | 0 | 8 | 9 | 10 | 9 | 9 | 9 | 6 |
283749 | 1/15/2018 | 8 | 8 | 8 | 8 | 0 | 8 | 8 | 6 | 6 | 8 | 6 | 0 | 7 | 0 |
927048 | 1/15/2018 | 8 | 8 | 8 | 6 | 8 | 2 | 5 | 8 | 8 | 8 | 8 | 8 | 0 | 0 |
952748 | 1/15/2018 | 8 | 8 | 8.50 | 8 | 10 | 0 | 0 | 8.50 | 9.50 | 10 | 8.50 | 9.50 | 0 | 0 |
Start Date | Employee # |
1/15/2018 | 606384 |
1/15/2018 | 952748 |
1/15/2018 | 283749 |
1/15/2018 | 927048 |
1/15/2018 | 941148 |
8 | 9 | 10 | |
Employee # | 837405 | 428041 | 941148 |
First Name | Christopher | Jeannine | Catherine |
Last Name | Mann | Hewsen | Watts |
Address | 6218 Willimon Ave | 2418 Woodwell Rd | 482 Matherson Drv |
City | Wilmington | Rockville | Rockville |
County | New Castle | Montgomery | Montgomery |
State | DE | MD | MD |
ZIP Code | 19801 | 20850 | 20856 |
Marital Status | 2 | 2 | 2 |
Exemptions | 2 | 2 | 3 |
Hourly Salary | 14.75 | 34.05 | 38.15 |
Filing Status | 3 | 2 | 3 |
Employee # | Start Date | Week 1 Monday | Week 1 Tuesday | Week 1 Wednesday | Week 1 Thursday | Week 1 Friday | Week 1 Saturday | Week 1 Sunday | Week 2 Monday | Week 2 Tuesday | Week 2 Wednesday | Week 2 Thursday | Week 2 Friday | Week 2 Saturday | Week 2 Sunday |
952748 | 1/29/2018 | 8 | 8 | 8 | 9.50 | 8.50 | 0 | 0 | 9.50 | 8 | 8 | 9.50 | 8.50 | 0 | 0 |
606384 | 1/29/2018 | 0 | 0 | 0 | 0 | 4 | 8 | 6 | 0 | 0 | 0 | 0 | 6 | 8 | 10 |
283749 | 1/29/2018 | 8 | 6 | 6 | 6 | 8 | 0 | 0 | 86 | 6 | 7 | 8 | 8 | 0 | 0 |
941148 | 1/29/2018 | 8 | 8 | 9 | 8 | 9 | 6 | 9 | 9 | 8 | 8 | 9 | 8 | 10 | 7 |
428041 | 1/29/2018 | 10 | 9 | 9.50 | 10 | 9 | 0 | 0 | 9 | 8.50 | 10 | 9 | 8.50 | 0 | 0 |
837405 | 1/29/2018 | 8 | 8 | 8 | 8 | 8 | 0 | 0 | 8 | 8 | 8 | 8 | 8 | 0 | 0 |
927048 | 1/29/2018 | 8 | 8 | 8 | 8 | 0 | 0 | 0 | 8 | 8 | 8 | 8 | 0 | 0 | 0 |
Start Date | Employee # |
1/29/2018 | 428041 |
1/29/2018 | 606384 |
1/29/2018 | 952748 |
1/29/2018 | 283749 |
1/29/2018 | 837405 |
1/29/2018 | 927048 |
1/29/2018 | 941148 |
|
||
Previous | Copyright © 2000-2016, FunctionX, Inc. | Next |
|