Rutina de busqueda error
Posted: Wed Dec 20, 2006 11:16 pm
Hola amigos
Vengo utilizando la siguiente rutina de busqueda
********
function Busca(cAlias,oLbx,oTab,tQbusco,BusRaiz)
************************************************
local oDlg,aAlias
local oBusco,oboton
local oCbx,osay
local cBusco, cIndi
local nClave
local aIndi:={}
local nReg:=(cAlias)->(Recno())
DEFAULT BusRaiz:=""
aeval( tQbusco[3] , { |LX| aadd(aIndi,strtran(LX,"&")) } )
DEFINE DIALOG oDlg RESOURCE "LOCALIZA2" BRUSH Publicas:oBrush1 TRANSPARENT Font Publicas:oWPpal:ofont
REDEFINE SAY osay ID 10 OF oDlg COLOR CLR_GREEN
REDEFINE BTNGET oBusco VAR cBusco ID 100 OF oDlg ;
ON CHANGE ( nClave:=( cAlias )->(recno()),;
::Assign(),;
iif( (cAlias)->(dbseek(Upper( Substr(cBusco, 1,::nPos -1)))) ,;
.T. ,;
( (cAlias)->( dbGoto ( Recno() )), .f.) ),oLbx:UpStable(),oLbx:Refresh(),;
iif (Chr(nKey)=13,oDlg:End(),.T.))
REDEFINE COMBOBOX oCbx VAR cIndi ITEMS aIndi ID 101 OF oDlg ;
ON CHANGE (oTab:nOption:=oCbx:nAt,oTab:refresh(),;
cBusco:=tQbusco[2,oCbx:nAt], ;
(cAlias)->(OrdSetFocus(tQbusco[1,oCbx:nAt])),oLbx:Refresh(),;
oBusco:Refresh(), oBusco:setFocus(), oDlg:Update() )
REDEFINE BUTTON oboton ID 102 OF oDlg PROMPT "Aceptar" ;
ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
if Busraiz='C'
obusco:blostfocus := {||oDlg:End()}
endif
cBusco:=tQbusco[2,oTab:nOption]
cIndi :=aIndi[oTab:nOption]
return NIL
*******************************************
El problema es que en ambiente MDI, si tengo abierta una ventana que contenga una b.d. p.e. clientes, con alias clientes01 no hay problema, me hace la busqueda bien, pero si abro otra ventana que contenga la misma b.d., aunque con otro alias, clientes02, no me hace la busqueda completa, es decir me selecciona el orden que le pido, pero siempre se me queda en el mismo registro.
Alguna idea?
Saludos
Jose Luis
Vengo utilizando la siguiente rutina de busqueda
********
function Busca(cAlias,oLbx,oTab,tQbusco,BusRaiz)
************************************************
local oDlg,aAlias
local oBusco,oboton
local oCbx,osay
local cBusco, cIndi
local nClave
local aIndi:={}
local nReg:=(cAlias)->(Recno())
DEFAULT BusRaiz:=""
aeval( tQbusco[3] , { |LX| aadd(aIndi,strtran(LX,"&")) } )
DEFINE DIALOG oDlg RESOURCE "LOCALIZA2" BRUSH Publicas:oBrush1 TRANSPARENT Font Publicas:oWPpal:ofont
REDEFINE SAY osay ID 10 OF oDlg COLOR CLR_GREEN
REDEFINE BTNGET oBusco VAR cBusco ID 100 OF oDlg ;
ON CHANGE ( nClave:=( cAlias )->(recno()),;
::Assign(),;
iif( (cAlias)->(dbseek(Upper( Substr(cBusco, 1,::nPos -1)))) ,;
.T. ,;
( (cAlias)->( dbGoto ( Recno() )), .f.) ),oLbx:UpStable(),oLbx:Refresh(),;
iif (Chr(nKey)=13,oDlg:End(),.T.))
REDEFINE COMBOBOX oCbx VAR cIndi ITEMS aIndi ID 101 OF oDlg ;
ON CHANGE (oTab:nOption:=oCbx:nAt,oTab:refresh(),;
cBusco:=tQbusco[2,oCbx:nAt], ;
(cAlias)->(OrdSetFocus(tQbusco[1,oCbx:nAt])),oLbx:Refresh(),;
oBusco:Refresh(), oBusco:setFocus(), oDlg:Update() )
REDEFINE BUTTON oboton ID 102 OF oDlg PROMPT "Aceptar" ;
ACTION oDlg:End() CANCEL
ACTIVATE DIALOG oDlg CENTERED
if Busraiz='C'
obusco:blostfocus := {||oDlg:End()}
endif
cBusco:=tQbusco[2,oTab:nOption]
cIndi :=aIndi[oTab:nOption]
return NIL
*******************************************
El problema es que en ambiente MDI, si tengo abierta una ventana que contenga una b.d. p.e. clientes, con alias clientes01 no hay problema, me hace la busqueda bien, pero si abro otra ventana que contenga la misma b.d., aunque con otro alias, clientes02, no me hace la busqueda completa, es decir me selecciona el orden que le pido, pero siempre se me queda en el mismo registro.
Alguna idea?
Saludos
Jose Luis