none
Por favor!! Insercion nueva fila en tabla. índice negativo. Referencia a objeto no establecida como instancia de un objeto RRS feed

  • Pregunta

  • Hola, buenas. Tengo este código para insertar una nueva fila en una tabla Access, pero no me funciona adecuadamente, me da "Referencia a objeto no establecida como instancia de un objeto" Además de eso, al insertar una nueva fila, (que me funciona, bueno no me da error, utilizando este código para otro form) pero me coloca un primary key negativo en las nuevas filas ¿podría generar un pk único y positivo? de esta manera me da errores.

    Agradezco cualquier ayuda. MUCHAS GRACIAS

        public partial class FormNuevaRespIMG : Form
        {
            
            //Inicializar formulario
            public FormNuevaRespIMG()
            {
                InitializeComponent();
                button2.Enabled = false;
                this.respuestaTableAdapter2.Fill(this.gT18PADataSetX2.Respuesta); //Todos en tabla
                
            }
    
            private void RespuestaBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.bindingSource2.EndEdit();
                this.tableAdapterManager1.UpdateAll(this.gT18PADataSetX2);
            }
    
    
            private void FormNuevaRespIMG_Load(object sender, EventArgs e)
            {
                
                this.respuestaTableAdapter2.FillBy1(this.gT18PADataSetX1.Respuesta);
    
    
            }
    
    
            //Funciones para GUARDAR IMÁGENES en la base de datos
            //===================================================
    
           
    
    
            /*Buscar y mostrar una imagen */
            private void button1_Click_1(object sender, EventArgs e)
            {
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
                    //Activo el botón de guardar a base de datos cuando aparece la imagen de archivo en el picturebox
                    button2.Enabled = true;
                }
            }
    
            //Guarda path de imagen en la bdd
            private void button2_Click(object sender, EventArgs e)
            {
                    //Ruta de la imagen, para guardar en  la tabla.
                    string cad = pictureBox1.ImageLocation;
    
                    //Guardo nueva respuesta de imagen
                    
                    DataTable miTabla = gT18PADataSetX2.Respuesta;
                    DataRowCollection cfilas = miTabla.Rows; //colección de filas
                    DataRow nuevaFila; //La nueva fila que voy a insertar
                
    
                
                try
                {
                    nuevaFila = miTabla.NewRow();//Una fila igual a las que necesito
                      
                        nuevaFila[1] = "img"; //Se trata de imagen
                        nuevaFila[2] = null;
                        nuevaFila[3] = cad.ToString(); //Guardo el path de la imagen
                        nuevaFila[4] = null;
                        nuevaFila[5] = dateTimePicker2.Text;
    
    
                        cfilas.Add(nuevaFila);
                        RespuestaBindingNavigatorSaveItem_Click(sender, e);
                        MessageBox.Show(" Guardada correctamente.");
                        Close();
                       
                    
                
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    

    • Cambiado Karen Malagón jueves, 24 de septiembre de 2015 17:06 Windows Forms issue
    martes, 22 de septiembre de 2015 19:28

Todas las respuestas

  • Fíjate que tu pregunta lleva ya bastantes horas en el foro y nadie la ha contestado todavía. Ante esto, debes plantearte si está bien preguntada, y sustituirla por una pregunta más clara y "respondible".

    En primer lugar, siempre que el código te dé un error, síguelo con el debugger hasta que encuentres la línea exacta donde da el error. Copia el mensaje de error completo, exacto y detallado, e indica en el código fuente cuál fue la línea que dio el error. Examina también con el debugger las variables que intervienen en esa línea e indica los valores que sean relevantes (concretamente, cuál es la que vale null en el caso de la "referencia no establecida...").

    Cuando sea un programa muy largo, como es el caso del que aportas, abrévialo y deja las partes relevantes para la pregunta. La mayor parte de los lectores abandonarán y pasarán a otra pregunta en cuanto vean un código demasiado largo, no se molestarán en descifrarlo. Si no hay más remedio que poner muchos segmentos de código, porque todos ellos influyen en el problema, entonces acompaña una explicación indicando algo así como "primero paso por la rutina xxxx, que me establece la variable yyyy, y a continuacion en el zzzz_click se procesa esa variable dando lugar al error eeee en la línea llll cuyo mensaje es mmmm".

    miércoles, 23 de septiembre de 2015 6:43
  • Hola! De acuerdo, gracias por informarme, lo tendré en cuenta para nuevas consultas. Saludos.
    jueves, 24 de septiembre de 2015 18:32