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...
Combobox TMySql v/s Dbf
Re: Combobox TMySql v/s Dbf
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...
***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...