C sharp - ERROR AL EDITAR DATO SELECCIONADO

 
Vista:

ERROR AL EDITAR DATO SELECCIONADO

Publicado por Josue (1 intervención) el 26/12/2019 07:35:59
Al momento en que le doy al boton para editar (Numero 2), no edita el registro, pero si se agregan y eliminan
¿Que error tengo en la consulta?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//librerias conexion
using System.Data.OleDb;
using net.pecesama.db.OleDb;
 
namespace BarberAccess
{
    public partial class Form1 : Form
    {
        conexionOleDb conexion;
        DataTable Tabla;
 
        //Ruta DB = Definir la ruta de la base de datos
        //SQL = Crear consultas de tipo SQL
        //Id = Definr el id del usuario que se modificara
        string RutaBD, SQL, Id;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            conectar();
            MostrarCategorias();
 
        }
 
        private void conectar()
        {
            //ruta de conexion
            RutaBD = Application.StartupPath + "/dbBarber.mdb";
            conexion = new conexionOleDb(RutaBD);
            ////abrir conexion
            conexion.conectar();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            AgregarCategoria();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            EditarCategoria();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            EliminarCategoria();
        }
 
        private void MostrarCategorias()
        {
            // COMANDO SQL
            Tabla = conexion.ejecutaSql("SELECT idcategoria AS ID, tipo AS Categoria FROM categorias ORDER BY tipo ASC");
            dataGridView1.DataSource = Tabla;
        }
 
        private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
        {
            // Mandar dato del dgv al (a los) textbox
            try
            {
                button1.Enabled = false;
                //Seleccion ID
                Id = "" + dataGridView1.CurrentRow.Cells[0].Value;
                //Mostrar dato en textbox
                txtcategoria.Text = "" + dataGridView1.CurrentRow.Cells[1].Value;
 
            }
            catch
            {
 
            }
        }
 
        private void AgregarCategoria()
        {
            SQL = "insert into categorias (tipo) ";
            SQL += "values ('" + txtcategoria.Text + "')";
            conexion.ejecutaSql(SQL);
 
            //Mostrar datos actualizados
            conexion.conectar();
            MostrarCategorias();
 
            MessageBox.Show("Categoria Agregada");
 
            txtcategoria.Text = "";
        }
 
        private void EditarCategoria()
        {
            //         COMANDO SQL                    TEXTBOX               CONDICION       VARIABLE ID
            SQL = "UPDATE categorias SET tipo ('" + txtcategoria.Text + "') WHERE idcategoria = " + Id;
 
            // Instruccion para ejecutar sql
            conexion.ejecutaSql(SQL);
 
            //Mostrar datos en DGV
            conexion.conectar();
            MostrarCategorias();
 
            MessageBox.Show("Categoria Actualizada");
 
            //Mostrar datos actualizados
            dataGridView1.ClearSelection();
            txtcategoria.Text = "";
            button1.Enabled = true;
        }
 
        private void EliminarCategoria()
        {
            SQL = "delete from categorias where idcategoria=" + Id;
            conexion.ejecutaSql(SQL);
 
            conexion.conectar();
            MostrarCategorias();
 
            MessageBox.Show("Categoria Eliminada");
 
            //Mostrar datos actualizados
            dataGridView1.ClearSelection();
            txtcategoria.Text = "";
            button1.Enabled = true;
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Roy
Val: 66
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

ERROR AL EDITAR DATO SELECCIONADO

Publicado por Roy (19 intervenciones) el 26/12/2019 21:18:46
Tienes varias inconsistencias en tu metodo EditarCategoria():
1. Cuando se trabaja con conexion y modificacion de datos, siempre es recomendable colocar el metodo con control de excepciones (try-catch).
2. La sintaxis de UDPATE tiene que ser:
UPDATE Tabla SET CAMPO=Dato WHERE condicion
En tu caso, estas omitiendo el signo igual (=) entre CAMPO y Dato.
Y no es necesario que pongas Dato entre parentesis
3. No conozco el procedimiento de la funcion conexion.ejecutaSql(SQL), pero antes de ejecutar es imperante tener una conexion a DB abierta, entonces deberias de llamar conexion.conectar() antes de llamar a ejecutaSql(SQL);
4. Verificar que la variable Id no venga vacia antes de utilizarla.
5. No olvides cerrar la conexion a DB cuando termines de utilizarla. Si la dejas abierta esta consumiendo memoria y ademas puedes causar problemas cuando intentes abrirla nuevamente.
Y dentro de la clase:
1. Tu variable Id la tienes declarada como string, deberia ser un int.
2. Tienes un procedimiento conectar en la clase Form1 (que nunca utilizas) y otro, con el mismo nombre, en la clase conexion. Cuando llamas a conexion.conectar, no se si verificas que la variable RutaDB no venga vacia (como lo haces en el procedimiento de la clase Form1. Te recomiendo, en lugar de llamar a conexion.conectar(), llamar al metodo interno de la clase (this.conectar()) el cual inicializa rutaDB y luego llama a conexion.conectar()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar