我想要一个登录类型表单,其中Employee输入他们的EmployeeID和DOB。我到目前为止的代码是检查两个文本框都不是空白,确保EmployeeID存在,但我不知道如何检查Employee的DOB是否与他们输入的相同。有些代码如下。
if ((txtEmployeeID.TextLength != 0) && (txtDOB.TextLength != 0))
{
employeesBindingSource.Filter = "EmployeeID ='" + txtEmployeeID.Text + "'";
if (employeesBindingSource.Count > 0)
{
// DOES DOB FOR EMPLOYEE MATCH - NOT SURE WHAT TO PUT HERE
}
}
答案 0 :(得分:3)
为此,我们需要Employee DOB变量 - 用此替换DataOfBirthVariable。
if ((txtEmployeeID.TextLength != 0) && (txtDOB.TextLength != 0))
{
employeesBindingSource.Filter = "EmployeeID ='" + txtEmployeeID.Text + "'";
if (employeesBindingSource.Count > 0 && DataOfBirthVariable == txtDob)
{
}
}
此外,最佳做法是使用!String.IsNullOrEmpty(txtEmployeeID)而不是.TextLength - 只是一个提示。
答案 1 :(得分:1)
假设您尝试匹配的DoB是DateTime
DateTime enteredDoB;
bool matchedDoB;
if (DateTime.TryParse(txtDOB, out enteredDoB))
{
matchedDoB = employeeDoB.Equals(enteredDoB);
}
答案 2 :(得分:0)
日期问题是让员工以正确的格式输入数据。
同一事物的所有变体。
您必须强制员工以您需要的格式输入日期字段。
static char DATESPLITTER = '/'; // define this accordingly
static DateTime NODATE = new DateTime(1, 1, 1900);
private DateTime GetDate(string dateValue) {
if (!String.IsNullOrEmpty(dateValue) {
string[] split = dateValue.Split(DATESPLITTER);
if (split.Length == 3) {
int m = Convert.ToInt32(split[0]);
if ((0 < m) && (m < 13)) {
int d = Convert.ToInt32(split[1]);
if ((0 < d) && (d < 32)) {
int y = Convert.ToInt32(split[2]);
if ((0 < y) && (y < DateTime.Now.Year)) {
if (y < 100) y += 2000;
return new DateTime(m, d, y);
}
}
}
}
}
return NODATE;
}
这与我在代码中使用的一个小路由非常相似。