Visual Basic.NET - Problemas al actualizar tabla acces desde un datagridview

 
Vista:
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Ignacio (43 intervenciones) el 16/11/2017 21:47:30
Colegas, tengo una tabla acces y mediante un Select selecciono los campos a mostrar en un datagridview como sigue:
Dim s As String = "SELECT CODIGO, DESCRIPC,EXISTENCIA FROM PRODUCTO"
cargar_edicion(s, enlace, "PRODUCTO")
DataGridView1.DataSource = edicionds.Tables("producto")

paso los datos a unos texbox para su modificacion y mediante boton los actualizo, como sigue:

DataGridView1.Rows(DataGridView1.CurrentRow.Index).Cells(2).Value() = ProdFinal.Text

adapter.Update(edicionds, "producto") ---> Aqui me salta el error..La generación SQL dinámica para UpdateCommand no es compatible con SelectCommand, que no devuelve ninguna información sobre columnas clave

sin embargo si en el SELECT hago la seleccion de todos los campos ("SELECT * FROM PRODUCTO")
me funciona sin problemas y me salva los datos en la Tabla, pero entonces tengo el inconveniente que en el Grid me muestra todos los campos de la tabla y solo quiero mostrar solo los tres campos, CODIGO, DESCRIPC,EXISTENCIA, existe la manera de hacer solo el UPDATE solo a los campos seleccionados en el select. sin que me de error ?
La aplicación esta hecha en VB.NET

Agradeciendo de ante mano.
Ignacio
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Miguel (476 intervenciones) el 17/11/2017 12:38:11
Hola,

¿Tienes y/o cuál es tu columna clave de la tabla? Si es por ejemplo 'ID' intenta agregándosela a tu select (SELECT ID, CODIGO, DESCRIPC,EXISTENCIA FROM PRODUCTO).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Ignacio (43 intervenciones) el 17/11/2017 18:03:54
Miguel, me funciono lo que me comentaste, solo que ahora no me salva los datos en la tabla Acces. te pongo el codigo completo para que lo veas.
1
2
3
Dim s As String = "SELECT ID, CODIGO, DESCRIPC,EXISTENCIA FROM PRODUCTO"
cargar_edicion(s, enlace, "PRODUCTO")
DataGridView1.DataSource = edicionds.Tables("producto")

Luego en el boton salvar..
1
2
3
4
5
6
'Deposito lo que hay en el textbox en el campo Existencia. y me lo actualiza en el Grid
'DataGridView1.Item("existencia", DataGridView1.SelectedRows(0).Index).Value = ProdFinal.Text
 
'salvo los datos en la tabla , 
adapter.Update(edicionds, "producto")
edicionds.AcceptChanges()

hasta aqui debia funcionarme y salvarme los cambios en la tabla, pero cuando reviso no es asi. Sin embargo, si meto el dato directamente en el Datagridview si me salva en la tabla.
y gracias nuevamente.
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Miguel (476 intervenciones) el 17/11/2017 18:14:31
Intenta colocando esto antes del adapter.Update(edicionds, "producto"):

1
2
Me.Validate()
Me.productoBindingSource.EndEdit() '' si usas uno
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
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Ignacio (43 intervenciones) el 17/11/2017 19:03:41
No amigo, no funciono, sigo indagando,,,
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
Imágen de perfil de Victor

Problemas al actualizar tabla acces desde un datagridview

Publicado por Victor (4 intervenciones) el 24/11/2017 19:46:48
Hola Ignacio.
Si los datos los manipulas desde textbox esto es mas simple.
Deberías cargar el grid de la siguiente forma:

1
2
3
4
5
6
7
8
conexion()  'Estsa es tu variable de conexion
Dim cmd As New OleDbCommand("SELECT * FROM tu_tabla", cnx)
Dim dt As New DataTable
Dim da As New OleDbDataAdapter(cmd)
da.Fill(dt)
Me.DataGridView.DataSource = dt
Me.DataGridView.DataBind()
cnx.Close()

No puse atención como es que pasas los datos al textbox, pero podrías hacerlo mediante el evento DoubleClick así:
TxtCodigo.text= DataGridView.CurrentRow().Cells(0).Value ' el cero es la primer celda de tu grid o el lugar que ocupa tu PrimaryKey
TxtNombre.text=DataGridview1.CurrentRow().Cells(1).Value ' así en cada campo Textbox
de este modo estarías añadiendo con un doble click, el campo que necesitas editar.

Ahora deberás crear una rutina con una consulta UPDATE, definiendo como WHERE el TextBoxCodigo.text, mas o menos así:
1
2
3
4
5
6
conexion()
Dim cmd As New SqlCommand("UPDATE t_articles SET Descripcion= @Descripcion, PrecioCompra=@PrecioCompra, PrecioVenta=@PrecioVenta, Ganancia=@Ganancia, UnidadMedida=@UnidadMedida, Tipomedida=@TipoMedida, CantidadMinima=@CantidadMinima, CantidadAlerta=@CantidadAlerta, CantidadActual=@CantidadActual, CantidadIngreso=@CantidadIngreso WHERE Codigo='" & Frm_Articles.TxtCodigo.Text & "'", cnx)
cmd.CommandType = CommandType.Text
cmd.Parameters.Add(New SqlParameter("@Descripcion", Frm_Articles.TxtDescripcion.Text))
cmd.Parameters.Add(New SqlParameter("@PrecioCompra", Frm_Articles.TxtPrecioCompra.Text))
cmd.Parameters.Add(New SqlParameter("@PrecioVenta", Frm_Articles.TxtPrecioVenta.Text))...
Y finalmente vuelve a cargar el DataGridView para que se actualicen los datos visualmente.
Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Ignacio (43 intervenciones) el 24/11/2017 20:52:49
Gracias a todos, principalmente a victor , lo adapte y me funciono. milll gracias
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
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Problemas al actualizar tabla acces desde un datagridview

Publicado por Ignacio (43 intervenciones) el 24/11/2017 21:04:24
Ahora amigos, tengo otro problemilla.
En la tabla acces llamada producto, con la siguiente informacion: Ejemplo
Fecha * Cliente * Articulo * Cantidad
-------------------------------------------------------
1/12/2016 * Pedregal * Zapatos * 5
1/12/2016 * Armazon * Zaptos * 6
2/12/2016 * Almendron * Pantalones * 10
3/12/2016 * Gases * Zapatos * 15
3/12/2016 * La Pupila * Zapatos * 20

Puedo meter en un dataset esta seleccion por dia de un determinado producto
Selec * from producto where fecha>="01/12/2016" and fecha<="4/12/2016" and articulo="zapatos"
'lo que quiciera es como hacer un select para meter en un dataset los totales de los articulos
vendidos por dia.
ejemplo
1/12/2016 * zapatos * total vendidos 11
2/12/2016 * pantalones * total vendidos 10
3/12/2016 * zapatos * total vendidos 35
Debe ser facil, pero a la verdad no me viene la muza. he probado con sum, pero no me fuinciona
gracias
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