2016-07-25 3 views
0

На самом деле им создать одно приложение, в котором я вставленный количество продаж пользователей, количество продаж обновляет нормально, но когда я изменить в запросе, поставив текущую дату его не обновляя детали Здесь им положить весь кодкак вставить текущую дату в базу данных доступа?

private void button1_Click_1(object sender, EventArgs e) 
     { 

      this.txtinput.MaxLength = 4; 
      cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1 where [Unique_No][email protected]_No and [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'", con); 
      cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text); 
       con.Open(); 
       int n = cmd.ExecuteNonQuery(); 

        if (n == 0) 
        { 
         MessageBox.Show("Invalid Unique No. pls try again later");// **Debugger come to this line if i insert [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'** // if i remove above line in code then its updating fine 

        } 
        else 
        { 
         this.DialogResult = DialogResult.OK; 
        } 



       con.Close(); 
      } 

     } 

для справки доступа оклейки таблица подробно enter image description here enter image description here

+0

SQL-сервер <> MS Access ... Возможно, вам нужно, чтобы избежать двойные кавычек для вашего формата дата. например 'ToString (\" dd/MM/yyyy \ ") ...'? – BJones

+0

Запись, которую вы опубликовали ('User_ID022'), не имеет значения в столбце To_Date. Поэтому никакие записи не будут обновляться с кодом, который вы опубликовали. Если вы хотите, чтобы эта запись была обновлена, вам нужно удалить 'и [To_Date] = '#" + DateTime.Now.ToString ("dd/MM/yyyy") + "#" в вашем коде. Или вам нужно ввести сегодняшнюю дату в столбце «To_Date» перед обновлением. – BJones

+0

@bjones: но то, что я хочу, когда я попытался обновить sales_count в то же время, текущая дата также вставить в базу данных – Atul

ответ

1

Access SQL поддерживает функцию Date(), которую механизм db может использовать для определения текущей даты. Таким образом, вам не нужен код C#, чтобы принять текущую дату и объединить его (eek!) В текст вашего оператора SQL. И вам не нужно указывать дату как параметр SQL (что менее неприятно). Просто дайте движку db определить для себя Date().

cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1 where [Unique_No][email protected]_No and [To_Date]=Date()", con); 

Это предложение было основано на запросе SQL в вашем вопросе. Однако в комментариях звучит так, будто вы хотите изменить значения To_Date на сегодняшнюю дату для некоторых записей. Я не понимаю, какие записи следует изменить, поэтому не представляйте, что вам нужно для предложения WHERE. Но обновлять To_Date значения до сегодняшнего дня, то Access SQL должен начинаться как это ...

UPDATE Login SET To_Date = Date() WHERE ... 
+1

hi, i изменено в запросе обновление Вход в систему Sales_count = IIF (IsNull (Sales_count), 0, Sales_count) + 1, [To_Date] = Date(), где [Unique_No] = @ Unique_No и его работоспособность :) – Atul

0

попробовать это:

private void button1_Click_1(object sender, EventArgs e) 
    { 
     DateTime toDay = DateTime.Now; 

     this.txtinput.MaxLength = 4; 
     cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1 where [Unique_No][email protected]_No and [To_Date]= @to_day", con); 
     cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text); 
     cmd.Parameters.AddWithValue("@date_now", toDay.ToString("yyyyMMdd")); 
      con.Open(); 
      int n = cmd.ExecuteNonQuery(); 

       if (n == 0) 
       { 
        MessageBox.Show("Invalid Unique No. pls try again later");// **Debugger come to this line if i insert [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'** // if i remove above line in code then its updating fine 

       } 
       else 
       { 
        this.DialogResult = DialogResult.OK; 
       } 



      con.Close(); 
     } 

    } 
+0

все еще отладчик наступаетMessageBox.Show («Invalid Unique № PLS попробуйте еще раз позже») line – Atul

+0

@Atul вы У вас есть записи в вашей таблице, содержащие информацию, которую вы вводите через приложение? Вы пробовали 'SELECT * FROM Login WHERE [Unique_No] = @ Unique_No и [To_Date] = @ to_day' с соответствующими значениями? – BJones

+0

@bjones: для справки i отредактированная база данных доступа также также – Atul

0

Ba sed по предоставленным комментариям, вам нужно указать SET. В исходном запросе, вы используете его в пункте WHERE:

private void button1_Click_1(object sender, EventArgs e) 
{ 
    DateTime toDay = DateTime.Now; 

    this.txtinput.MaxLength = 4; 
    cmd = new OleDbCommand("update Login set Sales_count= IIF(IsNull(Sales_count), 0, Sales_count) + 1, [To_Date]= @to_day where [Unique_No][email protected]_No", con); 
    cmd.Parameters.AddWithValue("@Unique_No", txtinput.Text); 
    cmd.Parameters.AddWithValue("@to_Day", toDay.ToString("yyyyMMdd")); 
     con.Open(); 
     int n = cmd.ExecuteNonQuery(); 

      if (n == 0) 
      { 
       MessageBox.Show("Invalid Unique No. pls try again later");// **Debugger come to this line if i insert [To_Date]='#"+DateTime.Now.ToString("dd/MM/yyyy")+"#'** // if i remove above line in code then its updating fine 

      } 
      else 
      { 
       this.DialogResult = DialogResult.OK; 
      } 



     con.Close(); 
    } 

} 

Вы также имели неправильный синтаксис, который я обновленный. Дайте мне знать, работает ли вышеуказанный запрос.

+0

все еще отладчик пошла ниже строки if (n == 0) { MessageBox.Show («Неверный уникальный номер PLS повторите попытку позже»); – Atul

Смежные вопросы