¿Pasar datos de textBox a dataGridview C# 2005?

Tengo dos forms: el primero tiene la propiedad IsMdiContainer y dos button: guardar y nuevo registro. La conexión de la base de datos está hecha en el segundo form y es la siguiente:
InitializeComponent();
string cadena = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DBAlumnos.mdb";
System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection(cadena);
cnn.Open();
System.Data.OleDb.OleDbDataAdapter adap = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Tab1", cadena);
DataSet dsDatos = new DataSet();
adap.Fill(dsDatos, "Tab1");
this.dtgDatos.DataMember = "Tab1";
this.dtgDatos.DataSource = dsDatos;
He creado dos métodos(en el form2): guardar y nuevo, quiero que en el método nuevo me agregue registros al datagridview y que me genere un código dentro de la celda que se llama código. Luego cuando escriba la información en los textBox aparezcan en el datagridview. En el método guardar quiero que me muestre un mensaje que me pida si deseo guardar los datos y que estos aparezcan cuando abra el formulario de nuevo.

1 Respuesta

Respuesta
1
Acá te paso un ejemplo del segundo form echo con 2 botones uno para nuevo registro y otro para guardar, 2 textbox ya que uso uno para el nombre y otro para el apellido que son los campos de la base de datos y un datagridview es un ejemplo rapido para darte la idea.
public partial class Form2 : Form
    {
        System.Data.OleDb.OleDbConnection cnn;
        System.Data.OleDb.OleDbDataAdapter adap;
        //Este commandbuilder lo que crea son los comandos de insert, update y delete de DataAdapter
        System.Data.OleDb.OleDbCommandBuilder oCmdBuilder;
        DataSet dsDatos = new DataSet();
        public Form2()
        {
            InitializeComponent();
            string cadena = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\datos.mdb";
            cnn = new System.Data.OleDb.OleDbConnection(cadena);
            cnn.Open();
            adap = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM Datos", cadena);
            //Aca asigno al cmdBuilder el dataAdapter
            oCmdBuilder = new System.Data.OleDb.OleDbCommandBuilder(adap);
            adap.Fill(dsDatos, "Datos");
            this.dataGridView1.DataMember = "Datos";
            this.dataGridView1.DataSource = dsDatos;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //Este es el método que vos llamas nuevo donde creo una fila de la tabla en mi caso la base de datos
            //Se llama datos y contiene una tabla que se llama datos y dentro apellido y nombre son los campos
            //Luego de crear la fila de la tabla le asigno nombre y apellido de los 2 textbox que cree
            // Y luego se lo asigno a la tabla de la base de datos como nueva fila
            DataRow oRow = dsDatos.Tables["Datos"].NewRow();
            oRow["nombre"]= textBox1.Text;
            oRow["apellido"] = textBox2.Text;
            dsDatos.Tables["Datos"].Rows.Add(oRow);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //El dataadapter al tener los comandos de actualización con solo darle a update actualiza lo que tiene
            // EN EL DATAGRIDVIEW A LA BASE DE DATOS ESTE SERIA EL METODO GUARDAR
            adap.Update(dsDatos,"Datos");
        }
    }
Lo hice tal y como dijiste pero le cambié el nombre de Datos por el nombre de mi tabla. Con el button nuevo no hay problema, pero al querer guardar me dice que hay un error de sintaxis en la instrucción insert info.
En el select tambien cambiastes el nombre de la tabla por que a mi me anda perfecto, ¿qué access estas usando?, fijate tambien si le estas pasando los campos obligatorios aunque el error que te tira no es eso.
Me equivoqué, el error que me sale al querer guardar es:  error de sintaxis en la instrucción insert into.
¿Llenas todos los campos necesarios antes de guardarlo?
Si lleno todos los campos. Corregí el error, ahora trabajo con bindingsource y tableadapter. Puse datos para probar aver si se podían guardar, al abir el form están allí, pero no sé como eliminarlos. Este es el código:
tab1TableAdapter.Delete("COD ESTUDIANTE", "APELLIDOS", "NOMBRES", "ASIGNATURA", "GRADO", "SECCIÓN", "N1", "N2", "N3", "PROMEDIO", "RESULTADO");
La base de datos está hecha en Access y tiene algunos campos numéricos, pero este código sólo acepta string.
Te doy una idea para que lo hagas siguiendo con el ejemplo que puse yo pondría un botón eliminar con el siguiente código:
private void button3_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                dsDatos.Tables["Datos"].Rows[dataGridView1.SelectedRows[0].Index].Delete();
                adap.Update(dsDatos, "Datos");
            }
        }
Siempre los cambios los haces en el dataset y después te conectas con el tableadapter a actualizar, ahí estoy borrando el que este seleccionado en el datagridview hice algo rapido para que veas la idea, pero tendrías que hacerlo por clave, por que si el dataset esta ordenado o algo por el estilo va a borrar cualquiera.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas