C # Проверка того, что 2 поля в одной записи совпадают с тем, что ввел пользователь, например, имя пользователя и пароль - PullRequest
0 голосов
/ 24 марта 2011

Я хочу заполнить форму для входа, где Сотрудник вводит свой EmployeeID и DOB.Пока у меня есть код, чтобы проверить, что оба текстовых поля не пустые, убедиться, что EmployeeID существует, но я не уверен, как проверить, что DOB для Employee совпадает с тем, что было введено ими.Некоторый код ниже.

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

      }
}

Ответы [ 3 ]

3 голосов
/ 24 марта 2011

Для этого нам понадобится переменная DOB Employee - замените DataOfBirthVariable этим.

if ((txtEmployeeID.TextLength != 0) && (txtDOB.TextLength != 0))
{

      employeesBindingSource.Filter = "EmployeeID ='" + txtEmployeeID.Text + "'";

      if (employeesBindingSource.Count > 0 && DataOfBirthVariable == txtDob)
      {


      }
}

Кроме того, рекомендуется использовать! String.IsNullOrEmpty (txtEmployeeID) вместо .TextLength - простосовет.

1 голос
/ 24 марта 2011

Предполагая, что DoB, с которым вы пытаетесь сопоставить, является DateTime

DateTime enteredDoB;
bool matchedDoB;

if (DateTime.TryParse(txtDOB, out enteredDoB))
{
    matchedDoB = employeeDoB.Equals(enteredDoB);
}

См. DateTime.TryParse

0 голосов
/ 24 марта 2011

Проблема с датой заключается в том, что ваши сотрудники вводят данные в правильном формате.

  • 1 января 1970
  • 1/1/1970
  • 1/1/70
  • 1-1-70
  • 01 января '70

Все вариации одного и того же.

Вам придется заставить своих сотрудников вводить поле даты в нужном вам формате.

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;
}

Это очень похоже на небольшую маршрутизацию, которую я использую в своем коде.

...