Como puedo ver registros desde un combobox

Manuel Acosta Aceves
25 de Marzo del 2004
Saludos al Foro, Lo que quiero es que desde un combobox pueda selccionar un campo y que me muestre los campos de ese registro en un DataGrid o en unos text ( claro serian varios text con el mismo numero de campos)

Espero alguien me pueda decir como de antemano Gracias

Andres Guerrero
25 de Marzo del 2004
Espero que esto te ayude

Private Sub cmb_Categorias_Click()
llenarGrid cmb_Categorias.ItemData(cmb_Categorias.ListIndex)
End Sub
Private Sub llenarGrid(cod_Cat As Integer)
'Grid es la rejilla
Dim Cadena As String
Dim rsPro As New ADODB.Recordset
Dim suma As Single
Dim i As Integer

Cadena = "Select ProductId,ProductName,CompanyName,UnitPrice,UnitsinStock,UnitPrice * UnitsinStock as SubTotal "
Cadena = Cadena & "from Products p, Suppliers s"
Cadena = Cadena & " where p.supplierid = s.supplierid and CategoryID = " & cod_Cat
rsPro.Open Cadena, conexion

'configurar las colummnas
'flex grid cols = al numero de columnas
'grid.ColWidth(I)indica el ancho de la columna
MSFProducto.Cols = 6
'MSFProducto.Cols = rsPro.Fields.Count devuelve el numero de columnas del select

MSFProducto.ColWidth(0) = 1000
MSFProducto.ColWidth(1) = 900
MSFProducto.ColWidth(2) = 950
MSFProducto.ColWidth(3) = 900
MSFProducto.ColWidth(4) = 900

'Coloca los titulos de la columna
MSFProducto.TextMatrix(0, 0) = "Codigo"
MSFProducto.TextMatrix(0, 1) = "Nombre"
MSFProducto.TextMatrix(0, 2) = "Proveedor"
MSFProducto.TextMatrix(0, 3) = "precio"
MSFProducto.TextMatrix(0, 4) = "Stock"
'MSFProducto.TextMatrix(0, 4) = rsPro.fields.name da el nombre del select
MSFProducto.TextMatrix(0, 5) = "Sub-Total"
suma = 0
i = 1
While Not rsPro.EOF
i = i + 1
MSFProducto.Rows = i
MSFProducto.TextMatrix(i - 1, 0) = rsPro(0)
MSFProducto.TextMatrix(i - 1, 1) = rsPro(1)
MSFProducto.TextMatrix(i - 1, 2) = rsPro(2)
MSFProducto.TextMatrix(i - 1, 3) = rsPro(3)
MSFProducto.TextMatrix(i - 1, 4) = rsPro(4)
MSFProducto.TextMatrix(i - 1, 5) = rsPro(5)
'FORMAT da formato a las celdas.
suma = suma + rsPro(5)
lbltotal.Caption = suma
rsPro.MoveNext 'aumenta el contador
Wend
lbltotal.Caption = suma
End Sub

Private Sub Form_Load()
llenarcategorias cmb_Categorias
'llenarcategorias cmb_cat
End Sub

Private Sub llenarcategorias(lista As ComboBox)
Dim cmdSql As String
Dim rsCat As New ADODB.Recordset
Dim i As Integer

lista.Clear
cmdSql = "select CategoryId, CategoryName from Categories"

rsCat.Open cmdSql, conexion

While Not rsCat.EOF
lista.AddItem (rsCat(1))
lista.ItemData(lista.NewIndex) = rsCat(0)
rsCat.MoveNext
Wend
End Sub


Saludos

Andres Guerrero
25 de Marzo del 2004
Yo se que es extendo pido disculpas si es dificil de entender pero era un ejemploq eu lo tenia a mano

Disculpas , espero de verdad que los ayude el ejemplo
Saludos

Manuel Acosta Aceves
25 de Marzo del 2004
No te preocupes te agradezco de todas Maneras que estes bien, Muchas Gracias.

Manuel Acosta Aceves
25 de Marzo del 2004
Sabes que... viendolo bien si esta complejo tu programa no me podrias pasar el ejemplo sencillito o alguien del foro me podria decir, porfa se los agradeceria mucho Gracias.

Andres Guerrero
25 de Marzo del 2004
Ok espera es algo asi


**********************************
a lo que carga el form

Private Sub Form_Load()
llenarcategorias cmb_Categorias
End Sub

' este es codigo del proceso
lenar categorias
Private Sub llenarcategorias(lista As ComboBox)
Dim cmdSql As String
Dim rsCat As New ADODB.Recordset
Dim i As Integer

lista.Clear
cmdSql = "select CategoryId, CategoryName from Categories"

rsCat.Open cmdSql, conexion

While Not rsCat.EOF
lista.AddItem (rsCat(1))
lista.ItemData(lista.NewIndex) = rsCat(0)
rsCat.MoveNext
Wend
End Sub
*Loq eu haces es seleccionar dos campos de la tabla y Uno de ellos el nombre lo colocas en el campo el otro lo tienes para que al dar click en el combo te llene un flex con ese nombre pero lo sacas por la id


luego loq eu haces teniendo la ID del campo

creas otro que llene la grilla

select * from tabla where llave = ' combo.listindex

el rs lo envias a la grilla

Espero que te ayude no tengo uno mas pequeño en codigo pero espero que te ayude

Saludos

Manuel Acosta Aceves
25 de Marzo del 2004
Ok, esta mas sencillo de Entender te lo agradezco por tomasrte la molestia Andres... Gracias ¡¡¡¡