Jump to content
Fivewin Brasil

Xbrowser


digao

Recommended Posts

Boa tarde a todos!

Bom num projeto meu eu tenho um xbrowser de VISITAS e nele eu tenho 3 tabelas.. e nesse xbrowser eu tenho a opção de filtrar pela tabela de cliente ou de funcionario, tendo retorno retorno de todas visitas daquele cliente ou daquele funcionario. Só que quando eu saio desse filtro( é aberto em uma janela nova ) e levo o focus pra alguma da minhas 3 tabela do browser principal ela fica em branco. Ai eu tenho que fechar o browser e abrir novamente. Alguem poderia me dar uma ajuda sobre o que fazer para resolver isto?

o Codigo do filtro é o seguinte:


****************************************************************************

static function Filtrar()

****************************************************************************

*

* filtra a tabela de visitas atravez da tabela de cliente e de funcionario

* Parametros:

* Retorno:

*

* Autor: Diego

* 31/3/2010 - 09:54:57

*

****************************************************************************

private oDlgFiltra, oBrwFiltra, nIndice, nRegistro

Private aVisita := {}

Define Dialog oDlgFiltra Resource "TDLGFILTRA" of oDlgFiltra

Select VISITAS

nRegistro := RecNo() //-- grava o resgistro de visitas

nIndice := IndexOrd() //-- grava o indice de visitas

set relation to //-- retira relation

set filter to //-- retira filtro

DbSetOrder(1)

dbgotop()

AdicionaMatriz()

//-- Grid Filtro de Visitas -------------------------------------------//

oBrwFiltra := TXBrowse():New( oDlgFiltra )

oBrwFiltra:CreateFromResource( 101 )

oBrwFiltra:SetArray( aVisita )

//-- Colunas ----------------------------------------------------------//

*1*

oCol:= oBrwFiltra:aCols[1]

oCol:cHeader := "CODIGO"

oCol:nWidth := 70

*2*

oCol:= oBrwFiltra:aCols[2]

if cFocus = "CLIENTE"

oCol:cHeader := "CLIENTE"

else

oCol:cHeader := "FUNCIONARIO"

end

oCol:nWidth := 150

*3*

oCol:= oBrwFiltra:aCols[3]

if cFocus = "CLIENTE"

oCol:cHeader := "FUNCIONARIO"

else

oCol:cHeader := "CLIENTE"

end

oCol:nWidth := 150

*4*

oCol:= oBrwFiltra:aCols[4]

oCol:cHeader := "CIDADE"

oCol:nWidth := 150

*5*

oCol:= oBrwFiltra:aCols[5]

oCol:cHeader := "DATA"

oCol:nWidth := 80

*6*

oCol:= oBrwFiltra:aCols[6]

oCol:cHeader := "HORA"

oCol:nWidth := 40

*7*

oCol:= oBrwFiltra:aCols[7]

oCol:cHeader := "DESCRIÇÃO"

oCol:nWidth := 260

*8*

oCol:= oBrwFiltra:aCols[ 8]

oCol:cHeader := "OBSERVAÇÂO"

oCol:nWidth := 260

//-- Alinhamento ------------------------------------------------------//

oBrwFiltra:aCols[1]:nDataStrAlign := AL_CENTER

oBrwFiltra:aCols[2]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[3]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[4]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[5]:nDataStrAlign := AL_CENTER

oBrwFiltra:aCols[6]:nDataStrAlign := AL_CENTER

oBrwFiltra:aCols[7]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[ 8]:nDataStrAlign := AL_LEFT

//-- Estilo -----------------------------------------------------------//

xBrowseStyle(oBrwFiltra)

//-- Eventos ----------------------------------------------------------//

//-- Fim Grid ---------------------------------------------------------//

//-- Redefine ---------------------------------------------------------//

Redefine ButtonBmp oBtn ;

id 102 ;

of oDlgFiltra ;

prompt "Sai&r" ;

bitmap "Saida24" ;

Action ( oDlgFiltra:End() ) ;

TEXTRIGHT

cSay[4] := "Filtro de Visitas"

Redefine Say oSay[4] ;

Prompt cSay[4] ;

ID 100 ;

Of oDlgFiltra ;

Font oFont ;

Update

oDlgFiltra:lHelpIcon := .f.

Activate Dialog oDlgFiltra CENTERED

RelationVisitas()

DbSetOrder(nIndice)

DbGoTo(nRegistro)

Return Nil

/*------------------------------------------------------------------------*/

****************************************************************************

static function AdicionaMatriz()

****************************************************************************

*

* Faz filtro da tabela de clientes e funcionarios para a de visitas

* Parametros:

* Retorno:

*

* Autor: Diego

* 31/3/2010 - 11:29:51

*

****************************************************************************

Local cFiltro := "", cCliente := "", cFuncionario := "", cCidades := ""

If cFocus = "CLIENTE" //-- verifica se o focus esta no browser de cliente

select CLIENTES

cFiltro := CLIENTES->CCODIGO

cCliente := PegaCliente(CLIENTES->CCODIGO) //-- pega o nome de cliente e cidade pq

cCidades := PegaCidade(CLIENTES->CCIDADE) //-- nao tem nessecidade de pegar dentro

//-- do loop pois iria demorar mais

elseif cFocus = "FUNCIONARIO" //-- verifica se o focus esta no browser de funcionario

select FUNCIONA

cFiltro := FUNCIONA->FCODIGO

cFuncionario := PegaFuncionario(FUNCIONA->FCODIGO) //-- pega o nome do func.

//-- pq nao tem nessecidade de

end //-- pegar dentro do loop pois

//-- sempre sera o mesmo func.

select VISITAS

dbgotop()

do while !eof()

If cFocus = "CLIENTE" //-- se focus esta no browser de cliente

if VISITAS->VCLIENTE = cFiltro //-- se o focus estiver em cliente add na matriz

aAdd(aVisita,{ VISITAS->VCODIGO, cCliente, PegaFuncionario(VISITAS->VSUPORTE),;

cCidades, VISITAS->VDATA, VISITAS->VHORA,;

VISITAS->VDESCRICAO, VISITAS->VOBS })

end

elseif cFocus = "FUNCIONARIO"

if VISITAS->VSUPORTE = cFiltro //-- se o focus estiver em func. add na matriz

aAdd(aVisita,{ VISITAS->VCODIGO, cFuncionario, PegaCliente(VISITAS->VCLIENTE),;

PegaCidade(VISITAS->VCIDADE),VISITAS->VDATA,;

VISITAS->VHORA, VISITAS->VDESCRICAO,;

VISITAS->VOBS })

end

end

select VISITAS

dbskip()

enddo

Return Nil

/*------------------------------------------------------------------------*/

****************************************************************************

static function PegaCliente(pcCodCli)

****************************************************************************

*

*

* Parametros:

* Retorno:

*

* Autor: Diego

* 12/4/2010 - 08:18:11

*

****************************************************************************

Local cNomeCli := ""

Select CLIENTES

DbSetOrder(1)

if dbseek(pcCodCli) //-- Pesquisa na tabela de clientes pelo codigo de cliente

cNomeCli := CLIENTES->CNOME //-- armazena na variavel o nome do cliente

endif

Return cNomeCli //-- retorna o nome do cliente

/*------------------------------------------------------------------------*/

****************************************************************************

static function PegaFuncionario(pcCodFun)

****************************************************************************

*

*

* Parametros:

* Retorno:

*

* Autor: Diego

* 12/4/2010 - 08:18:54

*

****************************************************************************

Local cNomeFun := ""

Select FUNCIONA

DbSetOrder(1)

if dbseek(pcCodFun) //-- pesquisa na tabela de funcionario pelo codigo do func.

cNomeFun := FUNCIONA->FNOME //-- armazena na variavel o nome do func.

end

Return cNomeFun //-- retorna o nome do funcionario

/*------------------------------------------------------------------------*/

****************************************************************************

static function PegaCidade(pcCodCid)

****************************************************************************

*

*

* Parametros:

* Retorno:

*

* Autor: Diego

* 12/4/2010 - 08:19:38

*

****************************************************************************

Local cNomeCid := ""

Select CIDADES

DbSetOrder(1)

If dbseek(pcCodCid) //-- pesquisa na tabela de cidades pelo codigo da cidade

cNomeCid := CIDADES->CDNOME //-- armazena na variavel o nome da cidade

end

Return cNomeCid //-- retorna o nome da cidade

/*------------------------------------------------------------------------*/

****************************************************************************

static function RelationVisitas()

****************************************************************************

*

* Relation para visitas

* Parametros:

* Retorno:

*

* Autor: Diego

* 26/3/2010 - 16:38:07

*

****************************************************************************

SELECT VISITAS

SET RELATION to

SELECT CLIENTES

DbSetOrder(1)

SELECT FUNCIONA

DbSetOrder(1)

SELECT CIDADES

DbSetOrder(1)

SELECT VISITAS

Set Relation to VCLIENTE INTO CLIENTES

Set Relation to VSUPORTE INTO FUNCIONA ADDITIVE

set Relation to VCIDADE INTO CIDADES ADDITIVE

SELECT CLIENTES

SET RELATION TO

SELECT CIDADES

DbSetOrder(1)

SELECT CLIENTES

Set Relation to CCIDADE INTO CIDADES

Return Nil

id=code>id=code>

Editado por - digao on 13/04/2010 14:19:06

Link to comment
Share on other sites

Boa tarde a todos!

Bom num projeto meu eu tenho um xbrowser de VISITAS e nele eu tenho 3 tabelas.. e nesse xbrowser eu tenho a opção de filtrar pela tabela de cliente ou de funcionario, tendo retorno retorno de todas visitas daquele cliente ou daquele funcionario. Só que quando eu saio desse filtro( é aberto em uma janela nova ) e levo o focus pra alguma da minhas 3 tabela do browser principal ela fica em branco. Ai eu tenho que fechar o browser e abrir novamente. Alguem poderia me dar uma ajuda sobre o que fazer para resolver isto?

o Codigo do filtro é o seguinte:


****************************************************************************

static function Filtrar()

****************************************************************************

*

* filtra a tabela de visitas atravez da tabela de cliente e de funcionario

* Parametros:

* Retorno:

*

* Autor: Diego

* 31/3/2010 - 09:54:57

*

****************************************************************************

private oDlgFiltra, oBrwFiltra, nIndice, nRegistro

Private aVisita := {}

Define Dialog oDlgFiltra Resource "TDLGFILTRA" of oDlgFiltra

Select VISITAS

nRegistro := RecNo() //-- grava o resgistro de visitas

nIndice := IndexOrd() //-- grava o indice de visitas

set relation to //-- retira relation

set filter to //-- retira filtro

DbSetOrder(1)

dbgotop()

AdicionaMatriz()

//-- Grid Filtro de Visitas -------------------------------------------//

oBrwFiltra := TXBrowse():New( oDlgFiltra )

oBrwFiltra:CreateFromResource( 101 )

oBrwFiltra:SetArray( aVisita )

//-- Colunas ----------------------------------------------------------//

*1*

oCol:= oBrwFiltra:aCols[1]

oCol:cHeader := "CODIGO"

oCol:nWidth := 70

*2*

oCol:= oBrwFiltra:aCols[2]

if cFocus = "CLIENTE"

oCol:cHeader := "CLIENTE"

else

oCol:cHeader := "FUNCIONARIO"

end

oCol:nWidth := 150

*3*

oCol:= oBrwFiltra:aCols[3]

if cFocus = "CLIENTE"

oCol:cHeader := "FUNCIONARIO"

else

oCol:cHeader := "CLIENTE"

end

oCol:nWidth := 150

*4*

oCol:= oBrwFiltra:aCols[4]

oCol:cHeader := "CIDADE"

oCol:nWidth := 150

*5*

oCol:= oBrwFiltra:aCols[5]

oCol:cHeader := "DATA"

oCol:nWidth := 80

*6*

oCol:= oBrwFiltra:aCols[6]

oCol:cHeader := "HORA"

oCol:nWidth := 40

*7*

oCol:= oBrwFiltra:aCols[7]

oCol:cHeader := "DESCRIÇÃO"

oCol:nWidth := 260

*8*

oCol:= oBrwFiltra:aCols[ 8]

oCol:cHeader := "OBSERVAÇÂO"

oCol:nWidth := 260

//-- Alinhamento ------------------------------------------------------//

oBrwFiltra:aCols[1]:nDataStrAlign := AL_CENTER

oBrwFiltra:aCols[2]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[3]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[4]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[5]:nDataStrAlign := AL_CENTER

oBrwFiltra:aCols[6]:nDataStrAlign := AL_CENTER

oBrwFiltra:aCols[7]:nDataStrAlign := AL_LEFT

oBrwFiltra:aCols[ 8]:nDataStrAlign := AL_LEFT

//-- Estilo -----------------------------------------------------------//

xBrowseStyle(oBrwFiltra)

//-- Eventos ----------------------------------------------------------//

//-- Fim Grid ---------------------------------------------------------//

//-- Redefine ---------------------------------------------------------//

Redefine ButtonBmp oBtn ;

id 102 ;

of oDlgFiltra ;

prompt "Sai&r" ;

bitmap "Saida24" ;

Action ( oDlgFiltra:End() ) ;

TEXTRIGHT

cSay[4] := "Filtro de Visitas"

Redefine Say oSay[4] ;

Prompt cSay[4] ;

ID 100 ;

Of oDlgFiltra ;

Font oFont ;

Update

oDlgFiltra:lHelpIcon := .f.

Activate Dialog oDlgFiltra CENTERED

RelationVisitas()

DbSetOrder(nIndice)

DbGoTo(nRegistro)

Return Nil

/*------------------------------------------------------------------------*/

****************************************************************************

static function AdicionaMatriz()

****************************************************************************

*

* Faz filtro da tabela de clientes e funcionarios para a de visitas

* Parametros:

* Retorno:

*

* Autor: Diego

* 31/3/2010 - 11:29:51

*

****************************************************************************

Local cFiltro := "", cCliente := "", cFuncionario := "", cCidades := ""

If cFocus = "CLIENTE" //-- verifica se o focus esta no browser de cliente

select CLIENTES

cFiltro := CLIENTES->CCODIGO

cCliente := PegaCliente(CLIENTES->CCODIGO) //-- pega o nome de cliente e cidade pq

cCidades := PegaCidade(CLIENTES->CCIDADE) //-- nao tem nessecidade de pegar dentro

//-- do loop pois iria demorar mais

elseif cFocus = "FUNCIONARIO" //-- verifica se o focus esta no browser de funcionario

select FUNCIONA

cFiltro := FUNCIONA->FCODIGO

cFuncionario := PegaFuncionario(FUNCIONA->FCODIGO) //-- pega o nome do func.

//-- pq nao tem nessecidade de

end //-- pegar dentro do loop pois

//-- sempre sera o mesmo func.

select VISITAS

dbgotop()

do while !eof()

If cFocus = "CLIENTE" //-- se focus esta no browser de cliente

if VISITAS->VCLIENTE = cFiltro //-- se o focus estiver em cliente add na matriz

aAdd(aVisita,{ VISITAS->VCODIGO, cCliente, PegaFuncionario(VISITAS->VSUPORTE),;

cCidades, VISITAS->VDATA, VISITAS->VHORA,;

VISITAS->VDESCRICAO, VISITAS->VOBS })

end

elseif cFocus = "FUNCIONARIO"

if VISITAS->VSUPORTE = cFiltro //-- se o focus estiver em func. add na matriz

aAdd(aVisita,{ VISITAS->VCODIGO, cFuncionario, PegaCliente(VISITAS->VCLIENTE),;

PegaCidade(VISITAS->VCIDADE),VISITAS->VDATA,;

VISITAS->VHORA, VISITAS->VDESCRICAO,;

VISITAS->VOBS })

end

end

select VISITAS

dbskip()

enddo

Return Nil

/*------------------------------------------------------------------------*/

****************************************************************************

static function PegaCliente(pcCodCli)

****************************************************************************

*

*

* Parametros:

* Retorno:

*

* Autor: Diego

* 12/4/2010 - 08:18:11

*

****************************************************************************

Local cNomeCli := ""

Select CLIENTES

DbSetOrder(1)

if dbseek(pcCodCli) //-- Pesquisa na tabela de clientes pelo codigo de cliente

cNomeCli := CLIENTES->CNOME //-- armazena na variavel o nome do cliente

endif

Return cNomeCli //-- retorna o nome do cliente

/*------------------------------------------------------------------------*/

****************************************************************************

static function PegaFuncionario(pcCodFun)

****************************************************************************

*

*

* Parametros:

* Retorno:

*

* Autor: Diego

* 12/4/2010 - 08:18:54

*

****************************************************************************

Local cNomeFun := ""

Select FUNCIONA

DbSetOrder(1)

if dbseek(pcCodFun) //-- pesquisa na tabela de funcionario pelo codigo do func.

cNomeFun := FUNCIONA->FNOME //-- armazena na variavel o nome do func.

end

Return cNomeFun //-- retorna o nome do funcionario

/*------------------------------------------------------------------------*/

****************************************************************************

static function PegaCidade(pcCodCid)

****************************************************************************

*

*

* Parametros:

* Retorno:

*

* Autor: Diego

* 12/4/2010 - 08:19:38

*

****************************************************************************

Local cNomeCid := ""

Select CIDADES

DbSetOrder(1)

If dbseek(pcCodCid) //-- pesquisa na tabela de cidades pelo codigo da cidade

cNomeCid := CIDADES->CDNOME //-- armazena na variavel o nome da cidade

end

Return cNomeCid //-- retorna o nome da cidade

/*------------------------------------------------------------------------*/

****************************************************************************

static function RelationVisitas()

****************************************************************************

*

* Relation para visitas

* Parametros:

* Retorno:

*

* Autor: Diego

* 26/3/2010 - 16:38:07

*

****************************************************************************

SELECT VISITAS

SET RELATION to

SELECT CLIENTES

DbSetOrder(1)

SELECT FUNCIONA

DbSetOrder(1)

SELECT CIDADES

DbSetOrder(1)

SELECT VISITAS

Set Relation to VCLIENTE INTO CLIENTES

Set Relation to VSUPORTE INTO FUNCIONA ADDITIVE

set Relation to VCIDADE INTO CIDADES ADDITIVE

SELECT CLIENTES

SET RELATION TO

SELECT CIDADES

DbSetOrder(1)

SELECT CLIENTES

Set Relation to CCIDADE INTO CIDADES

Return Nil

id=code>id=code>

Editado por - digao on 13/04/2010 14:19:06

Link to comment
Share on other sites

olá digao, seja bem vindo, pelo visto teras que fazer algumas verificações.

1) Veja se os browse estão com nome de objetos diferentes.

2) se for a mesma base de dados precisa selecionar a base e dar um ->( dbgoto ) ) e obrw:refresh() no browse

Alessandroid=blue>

FW20d+CL53b+Blk7+@Say+CDX

FW9.07+xHb121+PellesC+CDX

"Uma imaginação bem canalizada é fonte de grandes proezas"id=red>

Link to comment
Share on other sites

citação:

Uma dúvida:

Com o XBROWSE() eu posso substituir o comando ACHOICE que uso muito em consultas desenvolvidas em clipper?

Ou tem outra forma de substituir o ACHOICE?

Fivewin for [x]Harbour 8.06, Pelles, xDev 0.65.


id=quote>id=quote>

Boa noite..

Com a xBrowse vc. faz o que quiser.. consultas nela é bem rápida..


oBrw[1]:bSeek := {|c| PRGdaBusca( c, cBusca, oBrw[1] ) }

id=code>id=code>

Luiz Arruda - Corumba(MS)

FiveWin Desde 2004id=blue>

[x]Harbour

xDev

WS

ico.corumba@gmail.com

ico67@msn.com

-

NÃO ABANDONE SEU TÓPICO id=blue>

Retorne avisando se a dica funcionou

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...