Algún browse maestro - exclavo para NTX?
-
- Posts: 199
- Joined: Tue Apr 22, 2008 9:54 am
- Location: Valladolid, Spain.
Algún browse maestro - exclavo para NTX?
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!
Muchas gracias! Saludos!
Re: Algún browse maestro - exclavo para NTX?
TODO DEPENDE COMO ABRAS LA TABLA,
SI UTILIZAS INDICES NTX DE TODAS FORMAS TRABAJARÁ EL OBJETO BROWSE
EL ORDEN DE LA INFORMACIÓN VA A DEPENDER DE CUAL DE LOS .NTX TENGAS APUNTADO EN ESE MOMENTO
SET INDEX TO IND1,IND2,IND3 // INDICES NTX
O
SET ORDER TO 1
SI UTILIZAS INDICES NTX DE TODAS FORMAS TRABAJARÁ EL OBJETO BROWSE
EL ORDEN DE LA INFORMACIÓN VA A DEPENDER DE CUAL DE LOS .NTX TENGAS APUNTADO EN ESE MOMENTO
SET INDEX TO IND1,IND2,IND3 // INDICES NTX
O
SET ORDER TO 1
Saludos
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
-
- Posts: 199
- Joined: Tue Apr 22, 2008 9:54 am
- Location: Valladolid, Spain.
Re: Algún browse maestro - exclavo para NTX?
ADBLANCO,
Perdoname pero no entiendo muy bien tu explicación... He abierto sin problemas browses con bases de datos con índices NTX sin problemas, cambiando los índices, etc. pero lo que busco es (y quizás es que no me explicado bien) un doble browse, que al moverse por el maestro, me actualice el browse exclavo, un maestro - detalle creo que así se le denomina mejor. Pero eso sí, que me funcione con índices NTX, porque lo que he encontrado hasta ahora es para CDX.
Gracias y un saludo.
Perdoname pero no entiendo muy bien tu explicación... He abierto sin problemas browses con bases de datos con índices NTX sin problemas, cambiando los índices, etc. pero lo que busco es (y quizás es que no me explicado bien) un doble browse, que al moverse por el maestro, me actualice el browse exclavo, un maestro - detalle creo que así se le denomina mejor. Pero eso sí, que me funcione con índices NTX, porque lo que he encontrado hasta ahora es para CDX.
Gracias y un saludo.
Re: Algún browse maestro - exclavo para NTX?
Triumvirato
Es asi:
USE nombase VIA "DBFNTX" ...
Saludos
Adhemar
Es asi:
USE nombase VIA "DBFNTX" ...
Saludos
Adhemar
Saludos,
Adhemar C.
Adhemar C.
Re: Algún browse maestro - exclavo para NTX?
Esto hace lo que tu dices:
Espero que te sirva de ejemplo
y auque está hecho para sql, las tablas están en dbf
Espero que te sirva de ejemplo
Code: Select all
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.
Code: Select all
******************************************************************************************
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
Saludos
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
-
- Posts: 199
- Joined: Tue Apr 22, 2008 9:54 am
- Location: Valladolid, Spain.
Re: Algún browse maestro - exclavo para NTX?
acuellar wrote:Triumvirato
Es asi:
USE nombase VIA "DBFNTX" ...
Saludos
Adhemar
Adhemar,
Muchas gracias por tu nota, en efecto la apertura de la base de datos sí la tenía clara, lo que no sabía (y aún no tengo muy claro) es cómo a la par que me muevo pro un browse, hacer que se actualice el otro, creo que el ejemplo de ADBLANCO es lo que busco. No obstante, muchas gracias de nuevo.
Saludos!
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
Re: Algún browse maestro - exclavo para NTX?
He aquí las funciones que usé mucho tiempo para trabajar con mi viejo Clipper. Estas simulan el comportamiento de SCOPE con NTX y funcionan!
Code: Select all
// --- 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)
-
- Posts: 199
- Joined: Tue Apr 22, 2008 9:54 am
- Location: Valladolid, Spain.
Re: Algún browse maestro - exclavo para NTX?
Angel,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
Creo que es lo que estoy buscando... así que me pondré manos a la obra a ver si puedo entender bien el código, soy completamente novato en POO y en FW, así que tengo que ir pasito a pasito.
Entre todo este tiempo he visto una clase GTBrowse (de theful) que hace exáctamente lo que busco, pero es para CDX igualmente (al menos eso dicen los manuales de la clase) y lo que busco es eso mismo pero para NTX y creo que en tu código es posible que esté lo que busco.
MUCHAS MUCHAS GRACIAS.
Saludos!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Algún browse maestro - exclavo para NTX?
David,
Tienes un ejemplo completo de maestro-esclavo en FWH\samples\gallery\onemany
Tienes un ejemplo completo de maestro-esclavo en FWH\samples\gallery\onemany
-
- Posts: 199
- Joined: Tue Apr 22, 2008 9:54 am
- Location: Valladolid, Spain.
Re: Algún browse maestro - exclavo para NTX?
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!
Alfredo,
Muchas gracias por tu aporte y ayuda. Veremos si es lo bastante rápido para los NTX...
Saludos!
-
- Posts: 199
- Joined: Tue Apr 22, 2008 9:54 am
- Location: Valladolid, Spain.
Re: Algún browse maestro - exclavo para NTX?
Antonio,Antonio Linares wrote:David,
Tienes un ejemplo completo de maestro-esclavo en FWH\samples\gallery\onemany
Gracias, es perfecto y sencillo, veremos si lo suficientemente rápido para mis bases y los NTX...
Gracias!
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Re: Algún browse maestro - exclavo para NTX?
Hola
No seria mejor cambiarse a los CDX, te tomara un par de horas en cabiarte
solo un consejo
No seria mejor cambiarse a los CDX, te tomara un par de horas en cabiarte
solo un consejo
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl