Re: Data Entry Form with Previous Year's Information
- From: "Dirk Goldgar" <dg@xxxxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 23 Jun 2005 22:39:36 -0400
"Tandy" <Tandy@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:09627A14-7D60-4AAD-BFC8-99FFA2961365@xxxxxxxxxxxxx
> Dirk,
>
> Thank you for all of your help. There is one thing I would like
> to change. I would like my user to be prompted to enter the year they
> will be entering. I would also like the year to be entered to be in
> short date format.
This doesn't make any sense, Tandy. A year isn't a date, and a date
isn't a year. I can't grasp the idea behind wanting the year to be
entered in "short date" format. Either the value being stored in
[Salary Year] is an integer value representing a particular year, or
it's a date value representing a specific day of a specific month of a
specific year -- and that wouldn't fit in with the meaning of the field
as I have come to understand it. You'll have to explain.
To prompt the user for the year to be worked on when you open the form,
change the Open event procedure I gave you to look like this:
'----- start of revised Open event proc -----
Private Sub Form_Open(Cancel As Integer)
Dim strShowYear As String
Dim blnDone As Boolean
' Prompt the user for the year to be shown initially.
' We'll suggest next year as a default.
' In case of erroneous entry, continue prompting until
' a valid year is given, or the prompt is cancelled.
Do
strShowYear = InputBox( _
"What year do you want to edit?", _
"Enter Year", _
CStr(Year(Date) + 1))
Select Case True
Case (Len(strShowYear) = 0)
Cancel = True
blnDone = True
Case (Not IsNumeric(strShowYear)), _
(Val(strShowYear) < 1800), _
(Val(strShowYear) > 5000)
MsgBox "That's not a valid year!", _
vbExclamation, "Invalid Entry"
Case (Val(strShowYear) < (Year(Date) - 10)), _
(Val(strShowYear) > (Year(Date) + 10))
If MsgBox( _
"You entered " & strShowYear & _
", which seems odd. " & _
"Are you sure?", _
vbQuestion + vbYesNo, _
"Please Confirm") _
= vbYes _
Then
blnDone = True
End If
Case Else
blnDone = True
End Select
Loop Until blnDone
If Cancel <> True Then
Me.txtShowYear = strShowYear
Me.Requery
End If
End Sub
'----- end of revised Open event proc -----
> As for applying further criterion, you pretty much read my mind.
> First, my employee table has the fields employee ID, last name, first
> name, middle initial and termination date. How can I make a form
> where all the user has to do type in the employee ID and termination
> date and it will enter it with the employees record? When I tried to
> do this earlier, it would enter the employee ID and termination date
> as a new record instead of just filling in the termination date field
> for the employee.
The simplest, most natural way would be to bind that form to the
Employees Table, and show the termination date along with the other
fields on the form. Then the user would locate the employee's record,
type in the termination date in the text box provided, and it would be
done. If you want, you can put unbound combo boxes on the form to help
the user lookup (by ID or by name) and move to a particular employee's
record. The Combo Box Wizard will help you build such a combo box --
just tell it you want to "find a record on my form". Whatever you did
before, it must have been something different from this.
If you want, you can add the [Termination Date] field to the fields
selected by qryAnnualSalaries, and add a text box on frmAnnualSalaries
to show and edit it.
> Second, I will need the form to exclude
> employees with termination
> dates before the year being entered.
Modify the query "qryAnnualSalaries" to have SQL like this:
--------- qryAnnualSalaries, revised ----------
SELECT
[Employees Table].[Employee ID] AS EmpTableEmpID,
qryAnnualSalariesThisYear.[Employee ID],
[Employees Table].[First Name],
[Employees Table].[Middle Initial],
[Employees Table].[Last Name],
qryAnnualSalariesThisYear.[Salary Year],
qryAnnualSalariesLastYear.SalaryLastYear,
qryAnnualSalariesThisYear.[Annual Salary]
FROM
(
[Employees Table]
LEFT JOIN
qryAnnualSalariesThisYear
ON [Employees Table].[Employee ID] =
qryAnnualSalariesThisYear.[Employee ID]
)
LEFT JOIN
qryAnnualSalariesLastYear
ON [Employees Table].[Employee ID] =
qryAnnualSalariesLastYear.[Employee ID]
WHERE
([Termination Date] Is Null)
OR
(Year([Termination Date]) >=
[Forms]![frmAnnualSalaries]![txtShowYear]);
--------- end qryAnnualSalaries ----------
> Third, it would be nice if the user could add new employees.
> Right now I have it so they click on a button which takes them to a
> new employee form and new employee annual salary form, but I would
> like to hear if you have a better idea.
If you unlock the [First Name], [Middle Initial], and [Last Name] text
boxes on the form, you'll be able to enter values for them in a new
record on this form. If the Employee ID field in the Employees Table is
not an autonumber field, so that it must be entered for each new
employee, then you'll also have to unlock the EmpTableEmpID field on
this form, make it visible, and set its position and size so that the
user can enter values in it. Voilá, you can add employees via
frmAnnualSalaries. Doing so will also create a record in the Annual
Salaries Table for that employee.
> It is very important that all of the dates are in short date
> format. This is because my database uses the annual salaries to
> calculate the monthly premiums for the first month of the year. These
> premiums will need to be updated monthly the same way the annual
> salaries are updated yearly. I will most likely need a little help on
> that, but let's try to work our way through this form first.
As I said above, I don't understand what you're getting at when you talk
about dates being in short date format, because you have only been
talking about years, not dates, and they are very different things.
Also, even if we *were* talking about date fields, the format of a date
field has no bearing on its value. A field's format only influences the
way the field is displayed, not what it contains internally, and all
calculations using dates are performed on their values, not their
formats. Clearly, we have to get our terminology straight, as well as
come to an understanding of what you mean by this last request.
> Again, thank you so much for your help, I appreciate it more
> than I can express.
You're welcome. I should warn you, this is starting to get beyond the
kind of support you can reasonably get from a newsgroup. I hope we can
resolve your last few questions quickly, as I can't afford to spend too
much more time on this. I hope you understand.
--
Dirk Goldgar, MS Access MVP
www.datagnostics.com
(please reply to the newsgroup)
.
- Follow-Ups:
- References:
- Data Entry Form with Previous Year's Information
- From: Tandy
- Re: Data Entry Form with Previous Year's Information
- From: Dirk Goldgar
- Re: Data Entry Form with Previous Year's Information
- From: Tandy
- Re: Data Entry Form with Previous Year's Information
- From: Dirk Goldgar
- Re: Data Entry Form with Previous Year's Information
- From: Tandy
- Re: Data Entry Form with Previous Year's Information
- From: Dirk Goldgar
- Re: Data Entry Form with Previous Year's Information
- From: Tandy
- Re: Data Entry Form with Previous Year's Information
- From: Dirk Goldgar
- Re: Data Entry Form with Previous Year's Information
- From: Tandy
- Re: Data Entry Form with Previous Year's Information
- From: Dirk Goldgar
- Re: Data Entry Form with Previous Year's Information
- From: Tandy
- Data Entry Form with Previous Year's Information
- Prev by Date: Re: How do I create a Facimile Cover Sheet?
- Next by Date: RE: first tab page disappearing when switching tabs
- Previous by thread: Re: Data Entry Form with Previous Year's Information
- Next by thread: Re: Data Entry Form with Previous Year's Information
- Index(es):
Relevant Pages
|