Page 1 of 1

Combobox TMySql v/s Dbf

Posted: Mon Sep 02, 2013 4:22 pm
by macato
Fivewiners

favor llevo rato con este tema.. toy comenzado a migrar y utilizar TMsql pero no logro algo basico como este combobox...
aqui como lo hago en mi actual DBF y como intento con TmSql

CRE0 COMBOBOX CON LOS DATOS DE UNA DBF
::oCliente := TRed():Use( ::cRuta + "MAANALIS.Dbf", ::cRuta + "analisis.Cdx" )
::oTipo_Cte := TRed():Use( ::cRuta + "TIPOCTES.Dbf", ::cRuta + "tipo_cte.Cdx" )

::aCte := Array( 02 )
::aCte[01] := {}
::aCte[02] := {}

::oTipo_Cte:Eval( { || AAdd( ::aCte[01], ::oTipo_Cte:descripcion ),;
AAdd( ::aCte[02], ::oTipo_Cte:COD_TIPO )})

::vCmb[01] := ::aCte[01][max( 1,aScan( ::aCte[02], { |a|a = ::oCliente:COD_TIPO } ) ) ]

***RESULTADO ME MUESTRA EL COMBO CON LA DESCRIPCION DEL TIPO DE CLIENTE FUNCIONA PERFECTO
DEFINE Dialog oDlg Resource "DL_102"
Redefine ComboBox ::oCmb[01] VAR ::vCmb[01] Id 107 Of oDlg Items ::aCte[01]
Activate Dialog ::oDlg

LO MISMO COMBOBOX CON TMSQL

***ABRO LAS TABLAS
::oCliente := ::oMain:oCon:Query( "SELECT * FROM MAANALIS" )
::oTipo_Cte := ::oMain:oCon:Query( "SELECT * FROM TIPOCTES" )

*** CREO UN ARREGLO CON LOS DATOS DEL TIPO DE CLIENTES PARA LUEGO RELACIONARLO CON CADA CLIENTE
::aCte := Array( 02 )
::aCte[01] := {}
::aCte[02] := {}

WHILE !::oTipo_Cte :eof()
AAdd( ::aCte[01], ::oTipo_Cte:descripcion )
AAdd( ::aCte[02], ::oTipo_Cte:COD_TIPO )
::oTipo_Cte:skip()
ENDDO

*** ASI INTENTO RELACIONAR LAS TABLAS, para mostrar el la seleccion en el combobox
::vCmb[01] := ::aCte[01][max( 1,aScan( ::aCte[02], { |a|a = ::oClientes("COD_TIPO") } ) ) ]

***LUEGO ABRO EL COMBOBOX EN UN DIALOGO, SOLO MUESTRA EL PRIMER COD_TIPO Y NO CAMBIA EN CASO QUE EL CLIENTE TENGA OTRO COD_TIPO

DEFINE Dialog oDlg Resource "DL_102"
Redefine ComboBox ::oCmb[01] VAR ::vCmb[01] Id 107 Of oDlg1 Items ::aCte[01]
Activate Dialog ::oDlg

GRACIAS POR SU TIEMPO...

Re: Combobox TMySql v/s Dbf

Posted: Mon Sep 02, 2013 7:03 pm
by cmsoft
Y si abris la consulta ordenada?

***ABRO LAS TABLAS
::oCliente := ::oMain:oCon:Query( "SELECT * FROM MAANALIS ORDER BY ...." ) // con el orden que tiene analisis.cdx
::oTipo_Cte := ::oMain:oCon:Query( "SELECT * FROM TIPOCTES ORDER BY ..." ) // con el orden que tiene tipo_cte.cdx

Así los datos estarian ordenados igual que en tu ejemplo de DBF.

Solo para probar...