help urgente sobre combobox

marcos74
08 de Noviembre del 2003
ESTIMADOS AMIGOS DEL ZORRO, ME PODRIAN AYUDAR CON LOS COMBOBOX, TENGO 2 COMBOS, CUANDO ELIGA UN ELEMENTO DEL COMBO1 ME APARESCAN SOLO LOS ELEMENTOS CORRESPONDIENTES AL COMBO 1 EN EL COMBO 2 Y QUE AL ELEGIR UNO DE LOS ELEMENTOS DEL COMBO 2 ME MUESTRE EN UN LISTBOX LOS CAMPOS DE UNA TABLA PERO SOLO LOS QUE CORRESPONDEN AL ELEMENTO ELEGIDO
SE LOS AGRADECERE TANK YOU.

Alex
08 de Noviembre del 2003
Como estas Amigo.

Podes manejar tus Combos y tu ListBox con el siguiente código.

Coloca en el el RowSource del Combo1 El origen de los datos TABLA.CAMPOS.

Al Combo2 no le selecciones nada solamente dibujalo en el form y lo mismo con el ListBox.

Estos objetos recibiran Datos e instrucciones desde el Combo1.

Asumiremos que tenes tres tablas.

Clientes && Para Combo1
Facturas && Para Combo2
Detalle && Para ListBox

y campos coincidentes en las tablas.

cClienteNo en (Clientes y Facturas)
cFacturaNo en (Facturas y Detalle)

En el Combo1 tendrias esto.
RowSource = Clientes.cClienteNo, cNombre
RowSourceType = 6

Escribite esto en el Combo1 en el Evento GotFocus.

ThisForm.Combo2.Value = 0
ThisForm.Combo2.ColumnCount = 0
ThisForm.Combo2.RowSourceType = 0
ThisForm.Combo2.RowSource = ""

ThisForm.List1.ColumnCount = 0
ThisForm.List1.RowSourceType = 0
ThisForm.List1.RowSource = ""
ThisForm.Refresh()

Luego en el evento InteractiveChange del mismo combo esto.

SELECT cFacturaNo, nValor FROM Facturas ;
WHERE cClienteNo = Clientes.cClienteNo INTO CURSOR CurTempo

IF _Tally =0
=MESSAGEBOX('No existen facturas para este cliente')
ELSE
ThisForm.Combo2.Enabled = .T.
ThisForm.Combo2.ColumnCount = 3
ThisForm.Combo2.RowSourceType = 6
ThisForm.Combo2.RowSource = "CurTempo.cFacturaNo,nValor"
ThisForm.Refresh()
EndIf

En es InteractiveChange del Combo2.

SELECT cArticulo, cDescrip, nCantidad, nPrecio, nVenta FROM Detalle ;
WHERE cFacturaNo = CurTempo.cFacturaNo INTO CURSOR CurTempoFact

IF _Tally =0
=MESSAGEBOX('No existe detalle para esta factura')
ELSE
ThisForm.List1.Enabled = .T.
ThisForm.List1.ColumnCount = 7
ThisForm.List1.RowSourceType = 6
ThisForm.List1.RowSource = "CurTempoFact.cArticulo,cDescrip,nCantidad,nPrecio,nVenta"
ThisForm.Refresh()
EndIf


Espero te sea útil.


Alex Vargas