digao Posted April 13, 2010 Report Share Posted April 13, 2010 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 Quote Link to comment Share on other sites More sharing options...
digao Posted April 13, 2010 Author Report Share Posted April 13, 2010 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 Quote Link to comment Share on other sites More sharing options...
aferra Posted April 13, 2010 Report Share Posted April 13, 2010 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> Quote Link to comment Share on other sites More sharing options...
digao Posted April 13, 2010 Author Report Share Posted April 13, 2010 Obrigado. Vou verificar aqui e dou um retorno. obrigado pela atenção! Quote Link to comment Share on other sites More sharing options...
digao Posted April 13, 2010 Author Report Share Posted April 13, 2010 Ficou certinho. Muito obrigado pela atenção Alessandro. Quote Link to comment Share on other sites More sharing options...
fatimafaria Posted April 14, 2010 Report Share Posted April 14, 2010 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. Quote Link to comment Share on other sites More sharing options...
Luiz Arruda (ICO) Posted April 14, 2010 Report Share Posted April 14, 2010 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 Quote Link to comment Share on other sites More sharing options...
fatimafaria Posted April 14, 2010 Report Share Posted April 14, 2010 Ico, Obrigada. Vou pesquisar mais.Já vi que tem alguns tópicos no fórum sobre o xbrowse. Digao, Valeu, me deu algumas idéias de como criar uma consulta. (estava precisando, estou tão acostumada com o Achoice) Fivewin for [x]Harbour 8.06, Pelles, xDev 0.65. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.