2017-09-04 2 views
0

S'il vous plaît aidez-moi à comprendre où je vais mal. OK allons-y! 2 DataGridViews, en premier je suis des services de magasin dans la liste de second ordre. quand je pousse le bouton Enregistrer, ce code se produira:Insérer les données dans la table (à partir de select) en utilisant 2 DataGridView C# windowsForm

public void insert_sales_list() 
    { 
     conn.Open(); 
     foreach (DataGridViewRow row in dgvService.SelectedRows) 
     {    
      SQLiteCommand cmd = new SQLiteCommand("insert into sales_list (sales_created_date, sales_created_name, emp_name, cust_phone, cust_name, planned_date, planned_time, service_name, discount, price, order_id) values (@ocd, @ocn, @emp, @c_phone, @c_name, @p_date, @p_time, @sn, @disc, @price, @o_id)", conn);    
      cmd.Parameters.AddWithValue("@ocd", DateTime.Now); 
      cmd.Parameters.AddWithValue("@ocn", lblLoginUser.Text); 
      cmd.Parameters.AddWithValue("@emp", dgvOrderList.CurrentRow.Cells[1].Value.ToString()); 
      cmd.Parameters.AddWithValue("@c_phone", dgvOrderList.CurrentRow.Cells[2].Value.ToString()); 
      cmd.Parameters.AddWithValue("@c_name", dgvOrderList.CurrentRow.Cells[3].Value.ToString()); 
      cmd.Parameters.AddWithValue("@p_date", dgvOrderList.CurrentRow.Cells[5].Value); 
      cmd.Parameters.AddWithValue("@p_time", dgvOrderList.CurrentRow.Cells[6].Value.ToString()); 
      cmd.Parameters.AddWithValue("@sn", row.Cells[0].Value.ToString()); 
      cmd.Parameters.AddWithValue("@disc", dgvOrderList.CurrentRow.Cells[4].Value.ToString()); 
      cmd.Parameters.AddWithValue("@price", row.Cells[1].Value.ToString()); 
      cmd.Parameters.AddWithValue("@o_id", dgvOrderList.CurrentRow.Cells["order id"].Value); 
      cmd.ExecuteNonQuery(); 

      string sql = "update order_list set status = 'Saved' where id = '" + dgvOrderList.CurrentRow.Cells["order id"].Value + "'"; 
      cmd = new SQLiteCommand(sql, conn); 
      cmd.ExecuteNonQuery(); 
     } 
     conn.Close(); 

Par ce code, vous voyez que j'insérer simplement les données de liste de commandes à la liste des ventes, l'utilisateur choisir le service ou les services de DataGridView.Service, il peut prendre des service de la liste. Ce code fonctionne très bien.

Étape suivante. J'ai une autre table où chaque service a ses propres matériaux, par exemple - la coupe de cheveux des hommes a du savon, du shampoing et du papier de soie dans les matériaux. Et j'ai besoin d'insérer ces données dans le tableau SalesMaterials. Et je pense que le code est faux, s'il vous plaît aidez-moi à trouver cette erreur? Code:

public void insert_sales_materials() 
    { 
     conn.Open(); 
     foreach (DataGridViewRow row in dgvService.SelectedRows) 
     {    
      string Query = "insert into sales_list_materials(order_id, material_id, norma, created_name, creation_date) " + 
       "values(select '" + dgvOrderList.CurrentRow.Cells["order id"].Value + "', a.material_id, a.norma, '" + lblLoginUser.Text + "', '" + DateTime.Now + "' from service_materials a where a.service_id = '" + row.Cells[2].Value + "')"; 
      SQLiteCommand cmd = new SQLiteCommand(Query, conn); 
      cmd.ExecuteNonQuery(); 
     } 
     conn.Close(); 
    } 

Erreur:

Informations complémentaires: erreur SQLite

près de "sélectionner": erreur de syntaxe

Répondre

1

Ok je l'ai eu! lorsque vous insérez des données avec sélection, s'il vous plaît ne pas utiliser les valeurs de mot =)) code correct pour vous tous:

public void insert_sales_materials() 
    { 
     conn.Open(); 
     foreach (DataGridViewRow row in dgvService.SelectedRows) 
     {    
      string Query = "insert into sales_list_materials(order_id, material_id, norma, created_name, creation_date) " + 
       "select '" + dgvOrderList.CurrentRow.Cells["order id"].Value + "', a.material_id, a.norma, '" + lblLoginUser.Text + "', '" + DateTime.Now + "' from service_materials a where a.service_id = '" + row.Cells[2].Value + "'"; 
      SQLiteCommand cmd = new SQLiteCommand(Query, conn); 
      cmd.ExecuteNonQuery(); 
     } 
     conn.Close(); 
    }