2016-07-21 2 views
0

Я пытаюсь настроить метод, который позволяет мне архивировать запись, которая была возвращена через окно поиска.Архивирование клиентов в базе данных доступа C#

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

Может кто-нибудь помочь?

namespace Test_Application 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
     MainMenu MMform = new MainMenu(); 
     MMform.Show(); 
    } 

    private void textBox3_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     System.Data.OleDb.OleDbConnection conn = new 
     System.Data.OleDb.OleDbConnection(); 
     conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BoilerSvc_be.mdb"; 
     try 
     { 
      conn.Open(); 
      OleDbCommand command = new OleDbCommand("SELECT Equipment.CustID AS CustID,Equipment.Manufacturer AS Manufacturer,Equipment.Model AS Model, Equipment.LastService AS LastService,Initial,Surname,[Address 1],[Address 2],[Address 3],[Post Town],[Post Code],Telephone FROM Contacts INNER JOIN Equipment ON Equipment.CustID = Contacts.CustID WHERE Contacts.Archived = 0 AND Surname = '" + textBox3.Text + "' OR Initial = '" + textBox3.Text + "' OR[Post Town] = '" + textBox3.Text + "' OR[Post Code] = '" + textBox3 + "'", conn); 
      OleDbDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       int result; 

       customid.Text = reader["CustID"].ToString(); 
       FirstName.Text = reader["Initial"].ToString(); 
       LastName.Text = reader["Surname"].ToString(); 
       Address1.Text = reader["Address 1"].ToString(); 
       Address2.Text = reader["Address 2"].ToString(); 
       Address3.Text = reader["Address 3"].ToString(); 
       TownCity.Text = reader["Post Town"].ToString(); 
       PostCode.Text = reader["Post Code"].ToString(); 
       Telephone.Text = reader["Telephone"].ToString(); 
       LstSvcDat.Text = reader["LastService"].ToString(); 
       BoilMan.Text = reader["Manufacturer"].ToString(); 
       BoilMod.Text = reader["Model"].ToString(); 

       result = Convert.ToInt32(customid.Text); 

      } 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 

    private void button3_Click(object sender, EventArgs e) 
    { 
     if (string.IsNullOrEmpty(LastName.Text)) 
     { 
      MessageBox.Show("Please Search for a Customer First"); 
     } 
     else 
     { 
      System.Data.OleDb.OleDbConnection conn = new 
      System.Data.OleDb.OleDbConnection(); 
      conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BoilerSvc_be.mdb"; 

      try 
      { 
       conn.Open(); 
       OleDbCommand command = new OleDbCommand("UPDATE Contacts SET Archived = 1 WHERE CustID = @CustID", conn); 
       command.Parameters.Add(new OleDbParameter("@PCustID", customid.Text)); 
       OleDbDataReader reader = command.ExecuteReader(); 
      } 
      finally 
      { 
       conn.Close(); 
       customid.Text = null; 
       FirstName.Text = null; 
       LastName.Text = null; 
       Address1.Text = null; 
       Address2.Text = null; 
       Address3.Text = null; 
       TownCity.Text = null; 
       PostCode.Text = null; 
       Telephone.Text = null; 
       LstSvcDat.Text = null; 
       BoilMan.Text = null; 
       BoilMod.Text = null; 
       MessageBox.Show("Customer Archived"); 
      } 
     } 
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
    } 
} 
+0

Вы проверили таблицу, чтобы подтвердить, что Архивное поле изменилось? Кроме того, убедитесь, что поле Archived имеет правильный тип данных. –

ответ

1

Я подозреваю, что на самом деле ошибка в вашем поисковом запросе. Когда круглые скобки опущены, порядок AND и OR сгруппированы. Попробуйте:

WHERE Contacts.Archived = 0 AND ((Surname = '" + textBox3.Text + "' OR Initial = '" + textBox3.Text + "') OR ([Post Town] = '" + textBox3.Text + "' OR[Post Code] = '" + textBox3 + "'))"

+2

Это сработало! Спасибо за комментарий – Lives

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