Necesito saber si hay algún tipo de browse que permita trabajar como maestro-exclavo pero con índices NTX. Los que llevo vistos hasta ahora son para CDX.
Muchas gracias! Saludos!
REDEFINE LISTBOX oLbx ;
FIELDS TRANSFORM(TMPLIMIT->F_INICIO,'99/99/9999') ,;
TRANSFORM(TMPLIMIT->F_FINAL,'99/99/9999') ,;
TMPLIMIT->VERSION+CRLF ,;
TRANSFORM(TMPLIMIT->LIMITE,'999,999,999.99'),;
IIF(TMPLIMIT->FLK_ACTIVO,'Activo','Inactivo');
FIELDSIZES 75,75,95,105,95,95;
MESSAGE "Seleccione Versión/Límite/Vigencia ([Enter] o Doble Click => Modificar),(F2 - Incluir Nueva Versión/Limite/Vigencia)";
HEADERS "Desde","Hasta","Version","Monto Limite","Estatus" ID 401 OF oDlg ;
WHEN lEdit .and. lMod
bModiPlan := {|| modi_plan(oDlg,cRamo,nRamo,cPlan,nPlan,TMPLIMIT->IntId),oLbx:setfocus(.t.) }
oLbx:cAlias := "tmplimit"
oLbx:bldblClick:= {|| EVAL(bModiPlan) }
oLbx:nFreeze := 5 && Congela hasta la Quinta columna
oLbx:bKeyDown := {|nKey| IIF(nKey==VK_RETURN,EVAL(bModiPlan),),;
Carga_CobTmp(cPlan,TMPLIMIT->IntId,oLbx2),;
oLbx:Click(),;
oLbx:SetFocus(.t.)}
oLbx:bChange := {|| Carga_CobTmp(cPlan,TMPLIMIT->IntId,oLbx2),;
oLbx:Click(),;
oLbx:SetFocus(.t.)}
oLbx:nHeaderHeight := 31 && Da la altura del header
oLbx:Set3DStyle()
oLbx:Ajustify := {0,0,0,1,0}
oLbx:bGotFocus := {|| IIF(TMPLIMIT->(RECCOUNT())>0,(oButMod:Enable(),oButMod:lActive:=.t.),oButMod:Disable()),;
oButMod:bAction:={|| EVAL(bModiPlan) },;
oButMod:cMsg:="Modificar Versión/Límite/Vigencia Seleccionada de la Lista",;
oSay1:Show() ,;
oButDupli:Enable() ,;
oButDupli:Enable() ,;
oButDupli:cMsg:="Duplicar Esta Versión/Límite/Vigencia",;
bButDupli:={|| EVAL(bDupLimite)},;
oButActiva:Enable() ,;
oButActiva:lActive:=.t. ,;
oButActiva:cMsg:="Activar/Desactivar Versión",;
bButActiva :={|| EVAL(bActivLimit)},;
oButInserta:Enable() ,;
oButInserta:lActive:=.t.,;
EVAL(bSay2) ,;
bButInserta:={|| EVAL(bInsLimite)},;
oButInserta:cMsg:="Incluir Nueva Versión/Límite/Vigencia a la Lista",;
oButElim:Enable() ,;
oButElim:lActive:=.t. ,;
bButElim:={|| EVAL(bElimLimite)},;
oButElim:cMsg:="Eliminar Versión/Límite/Vigencia a la Lista",;
oButListar:lActive:=.t. ,;
oButListar:Enable()}
REDEFINE LISTBOX oLbx2 ;
FIELDS TMPCOBER->COBERTURA;
FIELDSIZES 300;
HEADERS "Cobertura" ID 402 OF oDlg ;
WHEN .f. //lEdit .and. lMod
oLbx2:cAlias :="tmpcober"
oLbx2:nHeaderHeight:= 31 && Da la altura del header
oLbx2:Set3DStyle()
oLbx2:Ajustify:={0}
oLbx2:lDrawSelect :=.f.
******************************************************************************************
STATIC FUNCTION CARGA_COBTMP(cPlan,nPlanVigencia,oLbx2)
******************************************************************************************
LOCAL oQuery ,;
bSeek ,;
xPlan:=alltrim(cPlan) ,;
nPlan:=len(xPlan) ,;
lOk:=.f.
TMPCOBER->(DBZAP()) // INICIALIZO ARCHIVO TEMPORAL DE TIPOS DE COBERTURA
IF nPlanVigencia>0
bSeek:={||'SELECT '+cDTBase+'.DtsCobertura.VchDescripcion,'+;
cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsPlanVigenciaCobertura,'+;
cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsCobertura,'+;
cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsSubCobertura '+;
'FROM '+cDTBase+'.DtsPlan '+;
'INNER JOIN '+cDTBase+'.DtsPlanVigencia ON ('+cDTBase+'.DtsPlan.IntIdDtsPlan = '+cDTBase+'.DtsPlanVigencia.IntIdDtsPlan) '+;
'INNER JOIN '+cDTBase+'.DtsPlanVigenciaCobertura ON ('+cDTBase+'.DtsPlanVigencia.IntIdDtsPlanVigencia = '+cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsPlanVigencia) '+;
'INNER JOIN '+cDTBase+'.DtsCobertura ON ('+cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsCobertura = '+cDTBase+'.DtsCobertura.IntIdDtsCobertura) '+;
'WHERE '+cDTBase+'.DtsPlan.VchDescripcion = "'+xPlan+SPACE(30-nPlan)+'"'+;
' AND '+cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsPlanVigencia = '+str(nPlanVigencia,10,0)+;
' AND '+cDTBase+'.DtsPlan.TinStatus <> 0'+;
' AND '+cDTBase+'.DtsPlanVigenciaCobertura.TinStatus <> 0'+;
' ORDER BY '+cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsCobertura,'+;
+cDTBase+'.DtsPlanVigenciaCobertura.IntIdDtsSubCobertura'}
oQuery :=TMSQuery():New( oDTbase ) // inicializa la clase
oQuery:Open( eval(bSeek) ) // efectua el query
IF ( oQuery:nRowCount>0 ) // Si Existe Data
DO WHILE !oQuery:lEof
TMPCOBER->(DBAPPEND())
TMPCOBER->COBERTURA:=oQuery:Xfieldget(1)
TMPCOBER->IntId :=oQuery:Xfieldget(2)
TMPCOBER->COBERT :=oQuery:Xfieldget(3)
TMPCOBER->SUBCOBERT:=oQuery:Xfieldget(4)
IF TMPCOBER->SUBCOBERT>0
TMPCOBER->COBERTURA:=' - '+DtsSubCobertura(TMPCOBER->SUBCOBERT)
ENDIF
oQuery:Fetch()
ENDDO
lOk :=.t.
ENDIF
oQuery:Close()
TMPCOBER->(DBGOTOP())
ENDIF
oLbx2:Refresh()
RETURN lOk
acuellar wrote:Triumvirato
Es asi:
USE nombase VIA "DBFNTX" ...
Saludos
Adhemar
// --- Redefinici¢n de Movimiento en Browse, Scope para NTX ------
// oBrw:bGoTop :={|| GoToTop(cAlias,cKey)}
// oBrw:bGoBottom :={|| GoToBot(cAlias,cKey)}
// oBrw:bSkip :={|n| MovePtr(cAlias,cKey,n)}
FUNCTION GoToTop(cAlias,cKey)
DbSelectArea(cAlias)
(cAlias)->(DbSeek(cKey))
RETURN (NIL)
FUNCTION GoToBot(cAlias,cKey)
LOCAL cTem:=STUFF(cKey,Len(cKey),1,Chr(Asc(Right(cKey,1))+1))
DbSelectArea(cAlias)
(cAlias)->(DbSeek(cTem,.T.))
(cAlias)->(DbSkip(-1))
IF &((cAlias)->(IndexKey(0)))=cKey
(cAlias)->(DbSkip(0))
ELSE
(cAlias)->(DbSeek(cKey))
ENDIF
RETURN (NIL)
FUNCTION MovePtr(cAlias,cKey,nReg)
LOCAL nNext:=0
DbSelectArea(cAlias)
IF nReg=0 .OR. (cAlias)->(LastRec())=0 .OR. !(&((cAlias)->(IndexKey(0)))=cKey)
(cAlias)->(DbSkip(0))
ELSEIF nReg>0 .AND. (cAlias)->(RecNo())<>(cAlias)->(LastRec())+1
DO WHILE nNext<=nReg .AND. !(cAlias)->(EoF()) .AND. &((cAlias)->(IndexKey(0)))=cKey
(cAlias)->(DbSkip())
nNext++
ENDDO
(cAlias)->(DbSkip(-1))
nNext--
ELSEIF nReg<0
DO WHILE nNext>=nReg .AND. !(cAlias)->(BoF()) .AND. &((cAlias)->(IndexKey(0)))=cKey
(cAlias)->(DbSkip(-1))
nNext--
ENDDO
IF !(cAlias)->(BoF())
(cAlias)->(DbSkip())
ENDIF
nNext++
ENDIF
RETURN (nNext)
ADBLANCO wrote:Esto hace lo que tu dices:
Espero que te sirva de ejemplo
y auque está hecho para sql, las tablas están en dbf
Alfredo Arteaga wrote:He aquí las funciones que usé mucho tiempo para trabajar con mi viejo Clipper. Estas simulan el comportamiento de SCOPE con NTX y funcionan!
Antonio Linares wrote:David,
Tienes un ejemplo completo de maestro-esclavo en FWH\samples\gallery\onemany
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 69 guests