none
NO SE ENCUETRA COLUMNA ??? ayuda....

    Pregunta

  • buen dia y perdon por mi ignorancia.... salta en cartel no se encuentra la columna Nombres.....error....
    Imports System.Data.OleDb
    Imports System.Data
    
    Public Class Form3
        Dim conexion As OleDbConnection
        Dim comnados As OleDbCommand
    
    
    
        Private Sub MATERIALESBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles MATERIALESBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.MATERIALESBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.Mi_baseDataSet)
            
    
        End Sub
    
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: esta línea de código carga datos en la tabla 'Mi_baseDataSet.MATERIALES' Puede moverla o quitarla según sea necesario.
            Me.MATERIALESTableAdapter.Fill(Me.Mi_baseDataSet.MATERIALES)
            Me.MATERIALESTableAdapter.Fill(Me.Mi_baseDataSet.MATERIALES)
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Using conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= D:\BASE DATOS\proyecto\proyecto\bin\Debug\mi base.accdb")
                conn.Open()
    
                Dim query As String = "INSERT INTO MATERIALES (Nombres, Medidas, Peso, Long, Sup, Corp, Kam, Pro, Man, Bau, Mad, Peris, Fecha) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)"
                Dim cmd As New OleDbCommand(query, conn)
    
                For Each row As DataGridViewRow In MATERIALESDataGridView.Rows
    
                    cmd.Parameters.Clear()
    
                    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))
                    cmd.Parameters.AddWithValue("@Medidas", CInt(row.Cells("Medidas").Value))
                    cmd.Parameters.AddWithValue("@Peso", CInt(row.Cells("Peso").Value))
                    cmd.Parameters.AddWithValue("@Long", CInt(row.Cells("Long").Value))
                    cmd.Parameters.AddWithValue("@Sup", CInt(row.Cells("Sup").Value))
                    cmd.Parameters.AddWithValue("@Corp", CInt(row.Cells("Corp").Value))
                    cmd.Parameters.AddWithValue("@Kam", CInt(row.Cells("Kam").Value))
                    cmd.Parameters.AddWithValue("@Pro", CInt(row.Cells("Pro").Value))
                    cmd.Parameters.AddWithValue("@Man", CInt(row.Cells("Man").Value))
                    cmd.Parameters.AddWithValue("@Bau", CInt(row.Cells("Bau").Value))
                    cmd.Parameters.AddWithValue("@Mad", CInt(row.Cells("Mad").Value))
                    cmd.Parameters.AddWithValue("@Peris", CInt(row.Cells("Peris").Value))
                    cmd.Parameters.AddWithValue("@Fecha", CInt(row.Cells("Fecha").Value))
    
                    cmd.ExecuteNonQuery()
                Next
            End Using
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
    
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Me.MATERIALESTableAdapter.FillBy(Mi_baseDataSet.MATERIALES, NombresTextBox.Text)
        End Sub
    End Class

    viernes, 23 de diciembre de 2016 9:43

Respuestas

  • ya cambie todas las propiedades name de todas las columnas...decian todas datagridview.textboxColumn1...2..3.... 

    las cambie con los respectivos nombres... luego cambie la columna "Long" de longitud... porque no me permitia Long le puse Lon.... cambie dicho nombre en el codigo del form....

    ahora solo me tira este error...

    Excepción no controlada del tipo 'System.InvalidCastException' en Microsoft.VisualBasic.dll

    Información adicional: La conversión de la cadena "12,7 x 3,2" en el tipo 'Integer' no es válida. en la columna "medidas"....

    Hola, eso es porque estas tratando de castear a un valor int una cadena ,int espera un valor de tipo entero

    en esta línea 

      cmd.Parameters.AddWithValue("@Medidas", CInt(row.Cells("Medidas").Value))

    deberías cambiarlo por

      cmd.Parameters.AddWithValue("@Medidas", Convert.ToString(row.Cells("Medidas").Value))

    y así en cada campo que debas convertir a su tipo correcto.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.




    viernes, 30 de diciembre de 2016 23:47

Todas las respuestas

  • Hola:

    Mira si el parametro es nombre o nombres ya que un sitio o en otro está mal puesto.

    VALUES (@Nombre, @Medidas, @Peso, @...

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    Un saludo.

    Gemma

    viernes, 23 de diciembre de 2016 11:11
  • Hola, verifica que en tu datagridview exista el nombre de columna Nombres

      cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    y lo ya comentado anteriormente ,para que no te genere otro error pon entre corchetes los campos de la tabla porque long es una palabra reservada de access

    INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long],....


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    viernes, 23 de diciembre de 2016 15:56
  • ya me fije esta bien escrito el nombre de la columna cambie y volví a poner corchetes nada..... verifique la tabla con "Nombres"y aun el mismo error

    Imports System.Data.OleDb
    Imports System.Data
    
    Public Class Form3
        Dim conexion As OleDbConnection
        Dim comnados As OleDbCommand
    
    
    
        Private Sub MATERIALESBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles MATERIALESBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.MATERIALESBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.Mi_baseDataSet)
            
    
        End Sub
    
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: esta línea de código carga datos en la tabla 'Mi_baseDataSet.MATERIALES' Puede moverla o quitarla según sea necesario.
            Me.MATERIALESTableAdapter.Fill(Me.Mi_baseDataSet.MATERIALES)
            Me.MATERIALESTableAdapter.Fill(Me.Mi_baseDataSet.MATERIALES)
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Using conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= D:\BASE DATOS\proyecto\proyecto\bin\Debug\mi base.accdb")
                conn.Open()
    
                Dim query As String = "INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long], [Sup],[Corp], [Kam], [Pro], [Man], [Bau], [Mad], [Peris], [Fecha]) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)"
                Dim cmd As New OleDbCommand(query, conn)
    
                For Each row As DataGridViewRow In MATERIALESDataGridView.Rows
    
                    cmd.Parameters.Clear()
    
                    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))
                    cmd.Parameters.AddWithValue("@Medidas", CInt(row.Cells("Medidas").Value))
                    cmd.Parameters.AddWithValue("@Peso", CInt(row.Cells("Peso").Value))
                    cmd.Parameters.AddWithValue("@Long", CInt(row.Cells("Long").Value))
                    cmd.Parameters.AddWithValue("@Sup", CInt(row.Cells("Sup").Value))
                    cmd.Parameters.AddWithValue("@Corp", CInt(row.Cells("Corp").Value))
                    cmd.Parameters.AddWithValue("@Kam", CInt(row.Cells("Kam").Value))
                    cmd.Parameters.AddWithValue("@Pro", CInt(row.Cells("Pro").Value))
                    cmd.Parameters.AddWithValue("@Man", CInt(row.Cells("Man").Value))
                    cmd.Parameters.AddWithValue("@Bau", CInt(row.Cells("Bau").Value))
                    cmd.Parameters.AddWithValue("@Mad", CInt(row.Cells("Mad").Value))
                    cmd.Parameters.AddWithValue("@Peris", CInt(row.Cells("Peris").Value))
                    cmd.Parameters.AddWithValue("@Fecha", CInt(row.Cells("Fecha").Value))
    
                    cmd.ExecuteNonQuery()
                Next
            End Using
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
    
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Me.MATERIALESTableAdapter.FillBy(Mi_baseDataSet.MATERIALES, NombresTextBox.Text)
        End Sub
    End Class

    martes, 27 de diciembre de 2016 9:22
  • Hola:

    Tienes estas 2 lineas

    Dim query As String = "INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long], [Sup],[Corp], [Kam], [Pro], [Man], [Bau], [Mad], [Peris], [Fecha]) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)" Dim cmd As New OleDbCommand

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    Como puedes observar los nombres del parametro (en negrita) NO coinciden. Hay 1 error
    P.D.
    Ya te lo habian advertido antes

    Un saludo desde Bilbo
    Carlos

    martes, 27 de diciembre de 2016 11:48
  • Hola:

    Tienes estas 2 lineas

    Dim query As String = "INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long], [Sup],[Corp], [Kam], [Pro], [Man], [Bau], [Mad], [Peris], [Fecha]) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)" Dim cmd As New OleDbCommand

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    Como puedes observar los nombres del parametro (en negrita) NO coinciden. Hay 1 error
    P.D.
    Ya te lo habian advertido antes

    Un saludo desde Bilbo
    Carlos

    Eso no tiene importancia , el usuario usa el motor de base de datos ACCESS ,y ahí no interesa el nombre que le pones a los parámetros ,sino la posición en que los envía acá una referencia

    https://social.msdn.microsoft.com/Forums/es-ES/b0aa538b-a5c8-49a9-8ba9-66a5e0c6675b/no-permitir-datos-duplicados-en-la-base-de-datos-visual-2008-y-access?forum=vbes

    podría haber puesto

    Dim query As String = "INSERT INTO MATERIALES ([Nombres], ..... (@Nombre,........)"
     Dim cmd As New OleDbCommand
    
    cmd.Parameters.AddWithValue("cualquiercosa", CStr(row.Cells("Nombres").Value))

    y debería funcionar.

    Acá te subo un demo

    https://1drv.ms/u/s!Al4mfBnAOsiVgTHnSkz5rlXKBmsn

    es bien simple solo hace un insert y un select, para que corrobores lo que te digo

    PD: Yo te recomendé que busacarás nombres en las columnas del datagridview,


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.





    • Editado Augusto1982 jueves, 29 de diciembre de 2016 18:08
    martes, 27 de diciembre de 2016 13:42
  • modifique el error revise mil veces y nada...

    cambie 

    im query As String = "INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long], [Sup],[Corp], [Kam], [Pro], [Man], [Bau], [Mad], [Peris], [Fecha]) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)" Dim cmd As New OleDbCommand

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    nada che.... mismo error busque en el archivo y no sirve deberia funcionar y no

    martes, 27 de diciembre de 2016 15:38
  • Es evidente que la excepción que obtienes es porque el nombre de la columna no existe dentro de la colección Columns, quizá es porque el nombre de la columna no es igual al texto de la cabecera de la columna. ¿Qué pasa si colocas el índice de la columna?

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells(0).Value))

    Si ello resulta, -es de esperar que sí- entonces fíjate en el editor de columnas que valor tiene la propiedad Name, o corrobora lanzando un cuadro de mensaje con el nombre la columna con índice 0:

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells(0).Value))
    MessageBox.Show(MATERIALESDataGridView.Columns(0).Name)



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    martes, 27 de diciembre de 2016 15:59
  • modifique el error revise mil veces y nada...

    cambie 

    im query As String = "INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long], [Sup],[Corp], [Kam], [Pro], [Man], [Bau], [Mad], [Peris], [Fecha]) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)" Dim cmd As New OleDbCommand

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    nada che.... mismo error busque en el archivo y no sirve deberia funcionar y no

    Haz revisado mi ejemplo ,el nombre de la grilla deberías cambiarlo aqui, si es que fue creada en tiempo de diseño.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    • Editado Augusto1982 martes, 27 de diciembre de 2016 16:01
    martes, 27 de diciembre de 2016 15:59
  • ok chicos probando.... ya aviso como me fue

    miércoles, 28 de diciembre de 2016 9:41
  • nada mismo error y ya no se que hacer
    jueves, 29 de diciembre de 2016 9:28
  • Hola:

    Vamos a ver.

    im query As String = "INSERT INTO MATERIALES ([Nombres], [Medidas], [Peso], [Long], [Sup],[Corp], [Kam], [Pro], [Man], [Bau], [Mad], [Peris], [Fecha]) VALUES (@Nombre, @Medidas, @Peso, @Long, @Sup, @Corp, @Kam, @Pro, @Man, @Bau, @Mad, @Peris, @Fecha)" Dim cmd As New OleDbCommand

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value))

    Si ahora el nombre de la columna ya es "NOMBRE", modifica el mismo aquí: CStr(row.Cells("NOMBRE").Value)).

    El error no creo que lo tengas ya en el parámetro, si no en el nombre de la columna.

    Venga, a ver si es eso.

    Un saludo.

    Gemma


    • Editado gemma_campillo jueves, 29 de diciembre de 2016 10:35 Sintaxis
    jueves, 29 de diciembre de 2016 10:33
  • no no funciona asi tampoco te paso todo en codg completo.... el datagridview lo saque del mismo basedataset original...bien... arrastre de origen de datos el textbox Nombres.... le puse un boton buscar... 

    aclarando.... el mismo datagridview lo estoy usando en otro form de forma eficaz y sin problemas....

     Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Me.MATERIALESTableAdapter.FillBy(Mi_baseDataSet.MATERIALES, NombresTextBox.Text)
        End Sub

    bien ....luego agregue dos botones uno de salir y otro de guardar.... el de salir....

     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.Close()
        End Sub

    y el de guardar me da problemas.... como puede ser....

    como puede ser.... no entiendo cod completo

    Imports System.Data.OleDb
    Imports System.Data
    
    Public Class Form3
        Private Sub MATERIALESBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles MATERIALESBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.MATERIALESBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.Mi_baseDataSet)
        End Sub
    
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.MATERIALESTableAdapter.Fill(Me.Mi_baseDataSet.MATERIALES)
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs)
    
            Me.MATERIALESTableAdapter.Fill(Me.Mi_baseDataSet.MATERIALES)
    
        End Sub
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
    
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Me.MATERIALESTableAdapter.FillBy(Mi_baseDataSet.MATERIALES, NombresTextBox.Text)
        End Sub
    
        Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    
    A COMPLETARR...... ACA EL BOTON DE GUARDAR!!!!!!
    
        End Sub
    End Class

    viernes, 30 de diciembre de 2016 10:03
  • Ten en cuenta que el nombre de la columna no es el que se ve en la cabecera de la grilla, el nombre del campo que tratas de recuperar se ve en la propiedad name, como te puse en una imagen líneas arriba,también adjunte un pequeño demo que veo no haz analizado.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    • Editado Augusto1982 viernes, 30 de diciembre de 2016 14:50
    viernes, 30 de diciembre de 2016 14:48
  • esto tengo yo....

    viernes, 30 de diciembre de 2016 15:31
  • Hola, si exacto en ese cuadro, de las propiedades que se ven

    HeaderText, es la cabecera que ves en tu datagridview

    DataPropertyname, Mapea esa columna con el campo que devuelve la consulta .

    Name ,es el nombre que le asignas a la columna y la cual tratas de recuperar con código, 

    puedes cambiarle de nombre(en la propiedad Name) y ponerle Nombre valga la redundancia o Nombres(actualmente se llama DatatGridViewTextBoxColumn1 si usarás este nombre debería funcionar tambien ,pero te sugiero que lo cambies.)

    según como quieras llamarlo aqui

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells("Nombres").Value)) 'Name=Nombres

    o también probar esto que te escribieron post arriba sin necesidad de cambiar los nombres debería funcionar, no se si lo llegaste a ver

    cmd.Parameters.AddWithValue("@Nombres", CStr(row.Cells(0).Value))
    'MessageBox.Show(MATERIALESDataGridView.Columns(0).Name)


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    • Editado Augusto1982 viernes, 30 de diciembre de 2016 16:29
    viernes, 30 de diciembre de 2016 16:16
  • ya cambie todas las propiedades name de todas las columnas...decian todas datagridview.textboxColumn1...2..3.... 

    las cambie con los respectivos nombres... luego cambie la columna "Long" de longitud... porque no me permitia Long le puse Lon.... cambie dicho nombre en el codigo del form....

    ahora solo me tira este error...

    Excepción no controlada del tipo 'System.InvalidCastException' en Microsoft.VisualBasic.dll

    Información adicional: La conversión de la cadena "12,7 x 3,2" en el tipo 'Integer' no es válida. en la columna "medidas"....
    viernes, 30 de diciembre de 2016 22:25
  • ya cambie todas las propiedades name de todas las columnas...decian todas datagridview.textboxColumn1...2..3.... 

    las cambie con los respectivos nombres... luego cambie la columna "Long" de longitud... porque no me permitia Long le puse Lon.... cambie dicho nombre en el codigo del form....

    ahora solo me tira este error...

    Excepción no controlada del tipo 'System.InvalidCastException' en Microsoft.VisualBasic.dll

    Información adicional: La conversión de la cadena "12,7 x 3,2" en el tipo 'Integer' no es válida. en la columna "medidas"....

    Hola, eso es porque estas tratando de castear a un valor int una cadena ,int espera un valor de tipo entero

    en esta línea 

      cmd.Parameters.AddWithValue("@Medidas", CInt(row.Cells("Medidas").Value))

    deberías cambiarlo por

      cmd.Parameters.AddWithValue("@Medidas", Convert.ToString(row.Cells("Medidas").Value))

    y así en cada campo que debas convertir a su tipo correcto.


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.




    viernes, 30 de diciembre de 2016 23:47
  • ok excelente amigo feliz año nuevo despues nos volvemos a contactar que la pases lindo con tu familia y amigos...
    sábado, 31 de diciembre de 2016 8:47
  • Hola, gracias ,muy felices fiestas para ti también que tengas un año lleno de éxito , prosperidad y programación.

    Te recomiendo que cierres este hilo que ya está largo y si tienes alguna otra duda abras otro hilo.

    Muchas Felicidades,


    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.

    sábado, 31 de diciembre de 2016 15:39