Estoy atorado con este problema.
Tengo una función que muestra información de movimientos en un xbrowse y hago un join para traer diferentes datos de unos clientes.
Esta funcion es para que elija que movimiento anular.
Este es el codigo:
Code: Select all
function AnulMov2
local cSql, hvcoti, rere
rere:= .f.
hvnum = hb_hash()
modelo:=oodbc:query('SELECT fecha, hora, caja, b.razon razon, moneda, tipo, vcotiza cotiza, vmoneda monto, vpesos pesos, a.orden orden FROM mv_cambio AS a LEFT JOIN m_cliente AS b ON a.cliente = b.codigo WHERE fecha >= date_sub(CURRENT_DATE(), INTERVAL 1 MONTH) order by a.orden DESC' )
DEFINE FONT oBold NAME 'TAHOMA' SIZE 0,-25
DEFINE dialog ownd2 TITLE "Anulación de Operaciones del ultimo mes" ICON "#8001"
saxx = .t.
@ 0,0 XBROWSE oBrw OF ownd2 DATASOURCE MODELO AUTOSORT CELL update FONT oFuentbd ;
columns 'fecha','hora','caja','razon','tipix','moneda','cotiza','monto','pesos';
headers 'FECHA','HORA','CAJA','CLIENTE','TIPO','MONEDA','COTIZACION', 'MONTO', 'PESOS'
oBrw:TIPO := { || saberElTipo2( modelo:tipo ) }
oBrw:MONTO:cEditPicture := '@e 999,999,999.99'
oBrw:PESOS:cEditPicture := '@e 999,999,999.99'
oBrw:COTIZACION:cEditPicture := '@e 999,999,999.99'
oBrw:lFastEdit := .f.
oBrw:nMoveType := 5
obrw:nHeaderHeight := 40
oBrw:bClrHeader := { || {CLR_BLACK, METRO_GRIS7b, METRO_GRIS7b } }
oBrw:bClrFooter := oBrw:bClrHeader
oBrw:nRowHeight := 32
oBrw:bClrRowFocus := { || { CLR_BLACK, RGB( 185,220,255 ) } }
oBrw:bClrSelFocus := {|| { CLR_WHITE,CLR_7}}
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nColorPen := METRO_GRIS7A
oBrw:lFullGrid := .f.
oBrw:l2007 := .f.
oBrw:lmultiselect := .f.
oBrw:lExcelCellWise := .t.
oBrw:lFlatStyle := .t.
oBrw:lRecordSelector := .f.
oBrw:lSeekWild := .t.
oBrw:bClrStd := { || If( Eval( oBrw:bKeyNo,,oBrw) % 2 == 0, { METRO_GRIS5, RGB( 253, 254, 254 ) }, { METRO_GRIS5, RGB( 244, 246, 246 ) } ) }
oBrw:lColDividerComplete := .t.
oBrw:SetDolphin(modelo)
oBrw:bKeyChar := { |n| If( n == VK_RETURN, 0, nil ) }
/* Aqui esta el problema */
oBrw:bKeyChar := { |n| If( n == 13,( DelMovi2(modelo:orden,2), modelo:refresh(), oBrw:SetFocus(), obrw:refresh(), ) ,)}
oBrw:bLDblClick := { || DelMovi2(modelo:orden,2), modelo:Refresh(), oBrw:SetFocus(), oBrw:Refresh() }
/* HASTA AQUI */
AEval( oBrw:aCols, { |o| o:oHeaderFont := aFont1[2] } )
sysrefresh()
oBrw:CreateFromCode()
oWnd2:oClient := oBrw
ACTIVATE dialog oWnd2 on init( BtnBaranu05( oWnd2, obrw,oBold, 'Anular operaciones' ), oWnd2:Maximize(), oWnd2:Resize() )
modelo:end()
return .t.
Code: Select all
oBrw:bKeyChar := { |n| If( n == 13,( DelMovi2(modelo:orden,2), modelo:refresh(), oBrw:SetFocus(), obrw:refresh(), ) ,)}
oBrw:bLDblClick := { || DelMovi2(modelo:orden,2), modelo:Refresh(), oBrw:SetFocus(), oBrw:Refresh() }
El problema radica en que si, yo en la query NO incluyo un JOIN, se genera todo perfectamente. Pero al poner un JOIN, al ejecutar modelo:Refresh(), el resultado me arroja como si en el SELECT hubiese puesto "*", ya que al abrir el objeto e inspeccionarlo, devuelve todos los datos de ambas tablas.
El xBrowse se actualiza y funciona bien, pero al devolver TODOS los datos de ambas tablas, dejan de funcionar los valores que comparten el mismo nombre en ambas tablas (ejemplo: campo orden (ID unico) ) y a su vez, pierden el alias todas las columnas.
Hay alguna manera de que el Refresh() no actue de esa manera? u otro procedimiento?
Muchas gracias.