Foros del Web » Programación para mayores de 30 ;) » .NET »

Como hacer que en un datagriw aparezca un campo en combobox y a su vez este llame a 3

Estas en el tema de Como hacer que en un datagriw aparezca un campo en combobox y a su vez este llame a 3 en el foro de .NET en Foros del Web. como hacer que en un datagriw aparesca un campo en combobox y a su vez este llame a 3 Hola quisiera que me ayuden, lo ...
  #1 (permalink)  
Antiguo 13/02/2013, 19:46
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Como hacer que en un datagriw aparezca un campo en combobox y a su vez este llame a 3

como hacer que en un datagriw aparesca un campo en combobox y a su vez este llame a 3
Hola quisiera que me ayuden, lo que pasa es que estoy hacieno un programa en visual basic 2012 he realizado una base de datos
en sql 2012 en la cual tengo 2 tablas una factura y una producto lo que quiero hacer es que en un datagriw el codigo del producto me salga como
combobox y pueda selecionar el producto al hacer eso quiero que automaticamente se me llenen los datos de marca, precio que pertenecen a la tabla producto y yo poder llenar el cambo cantidad
no se como realizar eso ayudenme porfavor
  #2 (permalink)  
Antiguo 15/02/2013, 17:41
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: omo hacer que en un datagriw aparesca un campo en combobox y a su vez este

No he trabajado con VB2012, no se si traiga alguna opcion mejor, pero podrias hacer un SELECT a tus tablas tomando el codigo del combobox, con un "COMBOBOX.TEXT" y llenar un DATAREADER y con esto llenas los datos que mencionas, podrias utilizar el evento "SelectedIndexChanged" del ComboBox.

Saludos.....
  #3 (permalink)  
Antiguo 15/02/2013, 19:58
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: omo hacer que en un datagriw aparesca un campo en combobox y a su vez este

hola gracias por responder pero en visual 2012 para un datagridcomboboxcolumn no tiene el evento "SelectedIndexChanged" y eso es porq el combobox esta dentro del datagrid
  #4 (permalink)  
Antiguo 16/02/2013, 11:26
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: omo hacer que en un datagriw aparesca un campo en combobox y a su vez este

A ok, esa parte no la habia entendido, tal vez te sirva utilizar el evento "CellValueChanged" del DatagridView y tomar el valor del combobox y ya despues hacer la consulta que quieras, algo como esto.

Código VB:
Ver original
  1. If dataGridView1.Columns(e.ColumnIndex).Name = "Tu Columna" Then
  2. Dim tuvariable As DataGridViewComboBoxCell = TryCast(dataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
  3. Dim valorparasqlstring As string = tuvariable.value.tostring
  4. end if

Y con el Valor que tengas en "tuvariable" podras trabajar, bueno al menos asi lo he manejado yo, pero te repito no con vb2012.

Saludos...
  #5 (permalink)  
Antiguo 16/02/2013, 23:28
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: omo hacer que en un datagriw aparesca un campo en combobox y a su vez este

disculpa que moleste pero no entiendo mucho de esto.. soy nueva en programacion quieor darle una sorpresa a mi novio ya que el necesita un programa para una optica para su tesis... El ahora esta haciendo la monografia y quiero sorprenderlo con el programa pero no se casi nada...

me puedes ayudar me he quedado en la parte de facturacion, y quiero hacer que cuando elija en el datagriviewcomoboboxcolumn un codigo de un producto me aparescan automaticamente la descripcion del producto, la cantidad que uno la pueda colocar y el valor que sea unificado( si es que el cliente lleva mas de un produco) disculpa si molesto mucho pero estoy perdida gracias muchas gracias por responder anteriormente...
  #6 (permalink)  
Antiguo 18/02/2013, 13:29
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Hola que tal, bueno mira al parecer la sorpresa te la estas llevando tu jejeje , no quiero que suene a burla, pero lo que quieres hacer ocupas un poco de conocimiento en programacion y un poco de logica

Te voy a dar mi punto de vista ( Yo manejo mas C# ):

1.- En tu DGV tienes que declarar la columna combo.

Seria algo asi:
Código C#:
Ver original
  1. DataGridViewComboBoxColumn ColumnaComboBox = new DataGridViewComboBoxColumn();
  2.  
  3. ColumnaComboBox.DataSource = La funcion que te regresa la lista;
  4. ColumnaComboBox.Name = Valor del campo a mostrar;
  5. ColumnaComboBox.DisplayMember = "Nombre que se mostraria en el combo";
  6. ColumnaComboBox.ValueMember = Valor del campo a mostrar;
  7. m_Grid.Columns.Add(ColumnaComboBox);

2.- A tu Columna Combo anexar por medio de un datasource los valores que necesitas ( Para esto, te recomiendo el manejo de listas ).
3.- En el evento VALIDATE ocupas saber si la columna es la del combo.
4.- Tomar el valor del combo y consultarlo en la tabla que necesitas y con eso obtener la información necesaria ( Recomendacion maneja un SP, se me hace mas facil el manejo asi ).

Ojo es algo confuso al principio, pero luego te acostumbraras

Por mientras en eso te puedo ayudar. Suerte

Última edición por drako_darpan; 18/02/2013 a las 13:34
  #7 (permalink)  
Antiguo 18/02/2013, 19:25
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Hola gracias por responder.

pero me dejastes mas confundida, hice lo que me recomendastes y al poner solo

DataGridViewComboBoxColumn ColumnaComboBox = new DataGridViewComboBoxColumn();

me dice que columnacombobox no esta declarado y lo segundo que debo poner en
ColumnaComboBox.DataSource = La funcion que te regresa la lista;
de ahi ni hablar de lo demas que me dices no entendi nada de nada

pero bueno la intencion es lo que cuenta muchas gracias y disculpa por quitarte tu tiempo asi que voy a cerrar este tema ya que no doy con la solucion y tendre que decirle a mi novio que hasta aqui tengo su programa a medias :'( gracias
  #8 (permalink)  
Antiguo 18/02/2013, 20:22
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Ahi te va te lo explico mas detalladamente.

Evento "CellValueChanged" de DataGridView, suponiendo que se llame DataGridView1

Código VB.NET:
Ver original
  1. Private Sub dataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
  2. 'Vaz a Validar que la celda que modificas el valor o indice sea la de tu combobox
  3. 'Si la columna es la de nombre "Tu Columna"
  4. If DataGridView1.Columns(e.ColumnIndex).Name = "Tu Columna" Then
  5. 'Entonces tomas el valor de la celda y haces un "SELECT" a tu BD para traer los demas datos del Articulo o Producto
  6. 'Asignas a una variable tu resultado
  7. Dim combo As DataGridViewComboBoxCell = TryCast(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
  8. 'La variable combo tiene el resultado o valor de la celda, que en este caso seria la de tu combobox
  9. 'Puedes convertir el valor a Integer o tipo que creas necesario.
  10. 'Ejemplo lo convertiremos a Integer.
  11. Dim valorinteger As Integer = Convert.ToInt32(combo.Value)
  12. 'Ahora haces la consulta a tu BD para jalar la informacion del articulo Seleccionado
  13. Dim sqlstring AS String = "SELECT * FROM TuTabla WHERE id_art(este es tu campo en la tabla)= @id"
  14. Dim cmd As New SqlCommand(sqlstring, TuConexion)
  15. cmd.Parameters.AddWithValue("@id", valorinteger)
  16. Dim reader as SqlDataReader = cmd.ExecuteReader()
  17. 'Checas si el Reader lleva Valores y los agregas al gridView
  18. If reader.Read() Then
  19.     DataGridView.rows.add(Reader("Descripcion"), Reader("Precio"))
  20. End If
  21. end if
  22. End Sub

Espero te quede un poco mas claro, este fragmento de codigo lo hice sin probarlo y a memoria por lo que puede traer algun error o me falto algun dato, pero la idea en general ahi esta plasmada, espero te sirva y puedas entender mas o menos lo que te quise decir desde la primera respuesta que te di...

Saludos....
  #9 (permalink)  
Antiguo 18/02/2013, 21:14
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Hola esto es lo que he hecho:

Cita:
imports system.data.sqlclient


public class form2
dim conexion as new sqlconnection("data source=ashley;initial catalog=optica;integrated security=true")



private sub combobox3_selectedindexchanged(sender as object, e as eventargs) handles combobox3.selectedindexchanged
dim cz as string = "pago parcial"
dim cp as string = "pago total"
dim ch as string = "cheque"
if combobox3.text = cz then
label16.enabled = true
label17.enabled = true
textbox7.enabled = true
textbox8.enabled = true

elseif combobox3.text = cp then
label16.enabled = false
label17.enabled = false
textbox7.enabled = false
textbox8.enabled = false

elseif combobox3.text = ch then
label16.enabled = false
label17.enabled = false
textbox7.enabled = false
textbox8.enabled = false
end if
end sub

private sub button1_click(sender as object, e as eventargs) handles button1.click
form1.show()
me.hide()
end sub

private sub toolstriplabel1_click(sender as object, e as eventargs) handles toolstriplabel1.click
form3.show()
me.hide()
end sub

private sub toolstripbutton1_click(sender as object, e as eventargs) handles toolstripbutton1.click
form5.show()
me.hide()
end sub

private sub toolstripbutton2_click(sender as object, e as eventargs) handles toolstripbutton2.click
form4.show()
me.hide()
end sub

private sub toolstripbutton3_click(sender as object, e as eventargs) handles toolstripbutton3.click
form6.show()
me.hide()
end sub

private sub button2_click_1(sender as object, e as eventargs) handles button2.click
combobox1.text = ""
combobox2.text = ""
combobox3.text = ""
textbox1.text = ""
textbox2.text = ""
textbox3.text = ""
textbox12.text = ""
textbox11.text = ""
textbox13.text = ""
textbox7.text = ""
textbox8.text = ""
facturadatagridview.text = ""
end sub


private sub form2_load(sender as object, e as eventargs) handles mybase.load





'todo: Esta línea de código carga datos en la tabla 'opticadataset.factura' puede moverla o quitarla según sea necesario.
Me.facturatableadapter.fill(me.opticadataset.factu ra)




end sub



private sub facturadatagridview_cellvaluechanged(sender as object, e as datagridviewcelleventargs) handles facturadatagridview.cellvaluechanged


if facturadatagridview.columns(e.columnindex).name = "codigoproductodatagridviewcomboboxcolumn" then
'entonces tomas el valor de la celda y haces un "select" a tu bd para traer los demas datos del articulo o producto
'asignas a una variable tu resultado
dim combo as datagridviewcomboboxcell = trycast(facturadatagridview.rows(e.rowindex).cells (e.columnindex), datagridviewcomboboxcell)
'la variable combo tiene el resultado o valor de la celda, que en este caso seria la de tu combobox
'puedes convertir el valor a integer o tipo que creas necesario.
'ejemplo lo convertiremos a integer.
Dim valorinteger as integer = convert.toint32(combo.value)
'ahora haces la consulta a tu bd para jalar la informacion del articulo seleccionado
dim sqlstring as string = "select descripcion_producto, marca, precio_de_venta from producto where descripcion_producto= @descripcion_producto, marca=@marca,precio_de_venta= @precio_de_venta"
dim cmd as new sqlcommand(sqlstring, conexion)
cmd.parameters.addwithvalue("@descripcion_producto , @marca, @precio_de_venta", valorinteger)
dim reader as sqldatareader = cmd.executereader()
'checas si el reader lleva valores y los agregas al gridview
if reader.read() then
facturadatagridview.rows.add(reader("descripcion_p roducto"), reader("marca"), reader("precio_de_venta"))
end if
end if
end sub

end class
  #10 (permalink)  
Antiguo 18/02/2013, 21:17
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Y te marca algun error, no te funciona?? para poder ayudarte mas.
  #11 (permalink)  
Antiguo 18/02/2013, 21:20
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Me sale que executereader requiere una conexion abierta o disponible, el estado actual de la conexion es cerrada. Pero asi esta bien lo que yo modifique?

Última edición por lilianamaite01; 18/02/2013 a las 21:34
  #12 (permalink)  
Antiguo 18/02/2013, 22:58
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

A ok, debes de poner tu string de conexion a la BD, y como te comente este codigo que te puse lo hice de memoria, ya que no estaba en mi maquina, por lo que puede tener algun error, segun yo con lo que pusiste te debe de funcionar, pon tu string de conexion y corre el proceso para ver si te marca un error, igual en cuanto tenga oportunidad de probar bien el codigo checamos si le falta algo.

Saludos...
  #13 (permalink)  
Antiguo 18/02/2013, 23:14
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

hola he cambiado asi

Cita:
If FACTURADataGridView.Columns(e.ColumnIndex).Name = "CODIGO" Then

Dim combo As DataGridViewComboBoxCell = TryCast(FACTURADataGridView.Rows(e.RowIndex).Cells (e.ColumnIndex), DataGridViewComboBoxCell)

Dim valorstring As String = Convert.ToInt32(combo.Value)


Dim sqlstring As String = "SELECT * FROM PRODUCTO WHERE CODIGO_PRODUCTO= CODIGO_PRODUCTO"

Dim cmd As New SqlCommand(sqlstring, conexion)

cmd.Parameters.AddWithValue("CODIGO_PRODUCTO", valorstring)

conexion.Open()

Dim reader As SqlDataReader = cmd.ExecuteReader()


If reader.Read() Then
FACTURADataGridView.Rows.Add(reader("DESCRIPCION_P RODUCTO"), reader("MARCA"), reader("PRECIO_DE_VENTA"))
conexion.Close()
esta bien donde abri la conexion

lo ejecuto y me sale error

se produjo la siguiente excepcion en datagridview

SYSTEM.ARGUMENT.EXCEPTION: EL VALOR DEL DATAGRIDVIEWCOMBOCELL NO ES VALIDO.


EL DATAGRID QUE TENGO LO ARRASTRE DE MI BASE DE DATOS PARA COLOCARLO EN EL FORMULARIO ADEMAS LOGRE QUE LOS ITEMS SE VEAN EN EL COMBOBOXCOLUMN PERO LO CONFIGURE EN LA VENTADA DE DISEÑO LO QUE ME FALTA ES QUE AL ESCOJER UN CODIGO SE ME LLENE LAS OTRAS COLUMNAS

Última edición por lilianamaite01; 19/02/2013 a las 00:10
  #14 (permalink)  
Antiguo 19/02/2013, 14:43
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Hola lilianamaite01, ya tuve oportunidad de porbar el codigo que te mande y como te comente tenia algunos detalles, por lo que te lo dejo como lo implemente, estoy partiendo o suponiendo que al menos ya tienes tu DataGridView con la columna combobox cargada con los codigos, entonces toma el codigo que te pongo e implementalo a tus necesidades, le hice dos cambios.

El primero.

Todo esot va en el Evento "CellValueChanged" como ya lo hemos hecho.

Código VB.NET:
Ver original
  1. If DataGridView1.Columns(e.ColumnIndex).Name = "codigo" Then
  2.             Dim combo As DataGridViewComboBoxCell = TryCast(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex), DataGridViewComboBoxCell)
  3.             'Yo converti el valor del combo a string por que asi lo necesitaba, tu lo convertirias a integer o el formato que tengas en tu tabla.
  4.             Dim valor As String = combo.Value.ToString
  5.             sqlcon.Open()
  6.             Dim sqlstring As String = "SELECT * FROM PRODUCTO WHERE CODIGO_PRODUCTO=  @id" 'Aqui al parametro ponle la arroba
  7.             Dim cmd As New SqlCommand(sqlstring, sqlcon)
  8.             cmd.Parameters.AddWithValue("@id", valor)
  9.             Dim reader As SqlDataReader = cmd.ExecuteReader()
  10.             If reader.Read() Then
  11.                 'Aqui uno de los cambios para agregar los datos en la columna correspondiente, yo solo tome dos datos, tu tomaras los necesarios.
  12.                 DataGridView1.Rows(e.RowIndex).Cells("desc").Value = reader("Art_Descripcion")
  13.                 DataGridView1.Rows(e.RowIndex).Cells("precio").Value = reader("Art_UltimoCosto")
  14.             End If
  15.             sqlcon.Close()
  16.         End If
  17.  
  18. 'Segundo, agregamos al evento "CurrentCellDirtyStateChanged" para que no se espere a que termines la edicion de la fila para arrojarte los datos
  19.  
  20. If DataGridView1.IsCurrentCellDirty Then
  21.             DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
  22. End If

Espero te sirva.

Saludos.....
  #15 (permalink)  
Antiguo 19/02/2013, 19:25
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

hola te puedo pedir un gran favor........... sera posible que yo te haga un documento donde t coloque imagenes de cada formulario con sus respetivos codigos para que tu me revises si estoy bien y mi base de datos es que creo que en mi base de datos he fallado sera posible que me ayudes con esa revision¿?......
  #16 (permalink)  
Antiguo 19/02/2013, 19:39
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Pues pasame el doc. que comentas a ver en que te puedo ayudar..

Sube el doc. a algun servidor y me pasas el link

Última edición por emmax; 19/02/2013 a las 19:47
  #17 (permalink)  
Antiguo 19/02/2013, 21:23
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

hola disculaparas la demora es que mi maquina esta lenta:

estes es el link

http://www.putlocker.com/file/BD213CAA982E3B5C



espero me puedas dar una mano gracias por tomarte tu tiempo y ser paciente conmigo..
  #18 (permalink)  
Antiguo 20/02/2013, 18:26
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 7 meses
Puntos: 8
Respuesta: Como hacer que en un datagriw aparezca un campo en combobox y a su vez est

Hola lilianamaite01 a lo que vi en tu codigo, no estas cargando los datos al combobox de tu datagridview, te dejo el pequeño codigo para que lo adaptes al tuyo y te debe de funcionar ya como lo tienes, en el evento "Load" del Form de facturacion pones lo siguiente

Código VB.NET:
Ver original
  1. Dim string_conexion As String = "Tu String de Conexion"
  2.         Dim sqlcon As New SqlConnection(string_conexion)
  3.         sqlcon.Open()
  4.         Dim da As SqlDataAdapter
  5.         Dim ds As New DataSet
  6.         da = New SqlDataAdapter("SELECT * FROM PRODUCTO", sqlcon)
  7.         da.Fill(ds, "PRODUCTO")
  8.         Dim dgccomboCodigo As DataGridViewComboBoxColumn = TryCast(DataGridView1.Columns("CODIGO_PRODUCTO"), DataGridViewComboBoxColumn)
  9.         dgccomboCodigo.DataSource = ds.Tables.Item("PRODUCTO")
  10.         dgccomboCodigo.DisplayMember = "CODIGO_PRODUCTO"
  11.         sqlcon.Close()

Aqui estoy tomando como referencia lo que me mandaste y tomo que tu columna combobox se llama Codigo_Producto, con este codigo cargas los codigos al combobox de tu DataGridView y ya con lo demas que tienes te debe de insertar los datos en las demas columnas, pruebalo y espero comentarios..

Saludos....

Etiquetas: datagridview, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:34.