public Boolean ActualizarDetalle(string sNombre, int nIdReceta, DataTable dtIngredientes)
        {
            bool             bAllOk = false;
            MySqlTransaction transaction;

            transaction = xConnection.BeginTransaction();
            Recetas xReceta = new Recetas(xConnection);

            try
            {
                if (xReceta.ActualizarReceta(nIdReceta, sNombre, ref transaction))
                {
                    foreach (DataRow row in dtIngredientes.Rows)
                    {
                        if (Convert.ToInt32(row[0]) == 1)
                        {
                            string       sSQlqry = "update detalle_receta set cantidad = " + row[3].ToString() + " where id_receta = " + nIdReceta + " and id_ingrediente =" + row[1].ToString();
                            MySqlCommand command = new MySqlCommand(sSQlqry, xConnection);
                            command.ExecuteNonQuery();
                            command.Dispose();
                        }
                        else if (Convert.ToInt32(row[0]) == 0)
                        {
                            if (!AgregarDetalle(nIdReceta, Convert.ToInt32(row[1]), Convert.ToInt32(row[3].ToString()), ref transaction))
                            {
                                throw new Exception(sLastError);
                            }
                        }
                        else if (Convert.ToInt32(row[0]) == -1)
                        {
                            if (!BorrarDetalle(nIdReceta, Convert.ToInt32(row[1]), ref transaction))
                            {
                                throw new Exception(sLastError);
                            }
                        }
                    }

                    transaction.Commit();
                    bAllOk = true;
                }
                else
                {
                    throw new Exception(xReceta.sLastError);
                }
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                sLastError = "Error >>> " + ex.ToString();
            }

            return(bAllOk);
        }
        public Boolean AgregarDetalle(string sNombre, DataTable dtIngredientes)
        {
            bool             bAllOk      = false;
            MySqlTransaction transaction = null;
            int nIdReceta = 0;

            try
            {
                transaction = xConnection.BeginTransaction();
                Recetas xReceta = new Recetas(xConnection);

                if (xReceta.AgregarReceta(sNombre.ToUpper(), ref nIdReceta, ref transaction))
                {
                    foreach (DataRow row in dtIngredientes.Rows)
                    {
                        string sSQlqry = "insert into detalle_receta(id_receta, id_ingrediente, cantidad) " +
                                         "values (" + nIdReceta + "," + row[1].ToString() + ", " + row[3].ToString() + ")";
                        MySqlCommand command = new MySqlCommand(sSQlqry, xConnection, transaction);
                        command.ExecuteNonQuery();
                        command.Dispose();
                    }

                    transaction.Commit();
                    bAllOk = true;
                }
                else
                {
                    transaction.Rollback();
                    sLastError = xReceta.sLastError;
                }
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                sLastError = "Error >>> " + ex.ToString();
            }

            return(bAllOk);
        }