Jump to content
Fivewin Brasil

LISTBOX DUPLICANDO


gilbrodrigues

Recommended Posts

Quando exibo um LISTBOX com um set filter ele está duplicando o registro. Ex. Caso o resultado de um set filter seja apenas 1 registro ele coloca 3 linhas repetidas. Por que sera:

---------------------------------------------

FUNCTION MostFilt()

TIPOIMOV->(dbSetOrder(3)) // descricao

TIPOIMOV->(dbSeek(optpimovel))

aliaslaudo := TIPOIMOV->BASE

SET FILTER TO // LIMPANDO O FILTRO CORRENTE

otela1:update()

oLbx9:hide()

SELECT (aliaslaudo) // SELECIONANDO A AREA (BASE)

(aliaslaudo)->(dbGotop())

IF EMPTY(xcodLaudo)

SET FILTER TO (aliaslaudo)->BAIRRO == opBairro

ELSE

SET FILTER TO ALLTRIM( (aliaslaudo)->LAUDO ) == ALLTRIM(xcodLaudo)

ENDIF

&(aliaslaudo)->(dbGoTop())

//oLbx9:UpsTable()

oLbx9:refresh()

oLbx9:Gotop()

otela1:update()

otela1:refresh()

oLbx9:SetFocus()

oLbx9:show()

RETURN .T.

---------------------------

Obrigado para aqueles que puderem ajudar.

Link to comment
Share on other sites

Quando exibo um LISTBOX com um set filter ele está duplicando o registro. Ex. Caso o resultado de um set filter seja apenas 1 registro ele coloca 3 linhas repetidas. Por que sera:

---------------------------------------------

FUNCTION MostFilt()

TIPOIMOV->(dbSetOrder(3)) // descricao

TIPOIMOV->(dbSeek(optpimovel))

aliaslaudo := TIPOIMOV->BASE

SET FILTER TO // LIMPANDO O FILTRO CORRENTE

otela1:update()

oLbx9:hide()

SELECT (aliaslaudo) // SELECIONANDO A AREA (BASE)

(aliaslaudo)->(dbGotop())

IF EMPTY(xcodLaudo)

SET FILTER TO (aliaslaudo)->BAIRRO == opBairro

ELSE

SET FILTER TO ALLTRIM( (aliaslaudo)->LAUDO ) == ALLTRIM(xcodLaudo)

ENDIF

&(aliaslaudo)->(dbGoTop())

//oLbx9:UpsTable()

oLbx9:refresh()

oLbx9:Gotop()

otela1:update()

otela1:refresh()

oLbx9:SetFocus()

oLbx9:show()

RETURN .T.

---------------------------

Obrigado para aqueles que puderem ajudar.

Link to comment
Share on other sites

citação:

Quando exibo um LISTBOX com um set filter ele está duplicando o registro. Ex. Caso o resultado de um set filter seja apenas 1 registro ele coloca 3 linhas repetidas. Por que sera:

---------------------------------------------

FUNCTION MostFilt()

TIPOIMOV->(dbSetOrder(3)) // descricao

TIPOIMOV->(dbSeek(optpimovel))

aliaslaudo := TIPOIMOV->BASE

SET FILTER TO // LIMPANDO O FILTRO CORRENTE

otela1:update()

oLbx9:hide()

SELECT (aliaslaudo) // SELECIONANDO A AREA (BASE)

(aliaslaudo)->(dbGotop())

IF EMPTY(xcodLaudo)

SET FILTER TO (aliaslaudo)->BAIRRO == opBairro

ELSE

SET FILTER TO ALLTRIM( (aliaslaudo)->LAUDO ) == ALLTRIM(xcodLaudo)

ENDIF

&(aliaslaudo)->(dbGoTop())

//oLbx9:UpsTable()

oLbx9:refresh(.t.)id=red>

oLbx9:Gotop()

otela1:update()

otela1:refresh()

oLbx9:SetFocus()

oLbx9:show()

RETURN .T.

---------------------------

Obrigado para aqueles que puderem ajudar.


id=quote>id=quote>

Em Cristo!

Rone - Itajubá(MG)

id=red>

xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio

A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue>

Link to comment
Share on other sites

Ola Theotokos, fiz o teste colocando true no parametro como vc indicou mas continua a mesma coisa. Na verdade ele 'toma a forma do conteúdo anterior', se o resultado anterior contiver 3 linhas o próximo resultado mesmo com 1 registro ele exibirá com 3 linhas (repetidas)

Editado por - gilbrodrigues on 03/01/2011 13:53:49

Link to comment
Share on other sites

tente então colocar antes do refresh()

oLbx:Skip( )

NT: Qual tipo de browse vc esta usando (xBrowse, ListBox, TcBrowse,...)

citação:

Ola Theotokos, fiz o teste colocando true no parametro como vc indicou mas continua a mesma coisa. Na verdade ele 'toma a forma do conteúdo anterior', se o resultado anterior contiver 3 linhas o próximo resultado mesmo com 1 registro ele exibirá com 3 linhas (repetidas)

Editado por - gilbrodrigues on 03/01/2011 13:53:49


id=quote>id=quote>

Em Cristo!

Rone - Itajubá(MG)

id=red>

xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio

A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue>

Link to comment
Share on other sites

tente inveter esta parte

otela1:update()

otela1:refresh()

oLbx9:SetFocus()

oLbx9:show()

RETURN .T.

coloca assim:

oLbx9:SetFocus()

oLbx9:show()

otela1:update()

otela1:refresh()

RETURN .T. id=red>

Em Cristo!

Rone - Itajubá(MG)id=red>

xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio

A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue>

Link to comment
Share on other sites

citação:

A solucao que tenho a fazer é gerar um arquivo temporario, o problema que se trata de varios arquivos com estruturas diferentes. Obrigado a todos e Feliz 2009


id=quote>id=quote>

FELIZ 2009id=red> pra você também... icon_smile_big.gif

Sobre os Listboxes da vida, sei que quando tem registro "deleted" no registro, a barra de rolagem considera eles. Já tentou fazer um PACK no arquivo ?

E eu não sou muito fã de SET ORDER não, pode até ser um pouco mais trabalhoso, mas não acha melhor trabalhar com um array ou arquivo temporário não ?

Google-Android-48.png

Luis Fernando Jr. (Luisão)

Leme/SP

--

FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

juninho.luisao@gmail.com

juninho_luisao@hotmail.com

Skype luis.fernando.jr

Link to comment
Share on other sites

desculpem é feliz 2011 e nao 2009 icon_smile_blush.gif ! Ele nao esta considerando os registros duplicados (ja usei PACK) o problema é que ele duplica o registro. Se o resultado deveria ter um registro ele pega este registro e mostra 3 vezes. Existe como eu mostrar a tela do programa ?

Editado por - gilbrodrigues on 04/01/2011 10:09:11icon_smile_blush.gif

Editado por - gilbrodrigues on 04/01/2011 10:19:37

Link to comment
Share on other sites

S.A.Oliveira

Eu uso o Listbox direto:

REDEFINE LISTBOX oLbx9 ;

FIELDS (aliaslaudo)->LAUDO,;

(aliaslaudo)->LOGRA,;

(aliaslaudo)->ENDER,;

(aliaslaudo)->NUM,;

(aliaslaudo)->COMPL,;

TRANSFORM((aliaslaudo)->VALOR, mask1 ) ;

ALIAS (aliaslaudo);

ID 4007 OF otela1;

HEADERS "Cod.Laudo","Logr","Rua","Num","Complemento", " Valor (R$)" ;

ON DBLCLICK EditaLaudo(.F.) ;

FIELDSIZES 100,40,200,80,50,95 UPDATE

oLbx9:bkeydown:={|nkey| if(nkey == 13 , EditaLaudo(.F.) , nil )}

oLbx9:aJustify := {.F.,.F.,.F.,.F.,.F.,.F.} // .T. DIREITA

Link to comment
Share on other sites

Boa tarde!!!

Filtro: BAIRRO ou LAUDO

A ordem " dbSetOrder(3) " eh a mesma independentemente do

filtro?

Nao vi BAIRRO no seu LISTBOX. Experimente colocar um indice para cada FILTRO (campo do filtro)

Ambrosio de Barros Filho.

JRAMBRO - jrambro@hotmail.com

Curitiba/São José dos Pinhais - PR

Clipper5.0/ADVPL

Editado por - ambrosio on 04/01/2011 13:32:15

Link to comment
Share on other sites

AMBROSIO. Bairro é uma combobox. O filtro é por bairro, laudo e tipo de imovel (sao os tres em conjunto). Se o codigo do laudo estiver em branco (vazio) virão todos os laudos daquele delterminado bairro (selecionado) o bairro nao precisa aparecer na listbox por que já e filtrado na combo, nem o tipo de imóvel. O listbox só exibe o resultado

Editado por - gilbrodrigues on 04/01/2011 14:00:00

Link to comment
Share on other sites

citação:

Entendi...

Em qual filtro aparece duplicado, no primeiro LAUDO VAZIO ou no segundo?

Ambrosio de Barros Filho.

JRAMBRO - jrambro@hotmail.com

Curitiba/São José dos Pinhais - PR

Clipper5.0/ADVPL


id=quote>id=quote>

Aparece duplicado quando deveria ter apenas 1 registro que satisfaça a condição. Ao invés dele exibir uma linha de resultado ele mostra três.

Link to comment
Share on other sites

Certo, mas minha pergunta foi em qual dos filtros?

Se codigo do laudo for VAZIO entra no primeiro filtro, ou seja aparecerão todos os laudos daquele bairro. Caso contrario ele filtrara apenas o laudo selecionado/preenchido, mas outra pergunta aparece PARA QUAL BAIRRO? No segundo filtro nao deveria ter BAIRRO tbm? Ou o laudo eh unico!

Ambrosio de Barros Filho.

JRAMBRO - jrambro@hotmail.com

Curitiba/São José dos Pinhais - PR

Clipper5.0/ADVPL

Editado por - ambrosio on 04/01/2011 15:04:47

Link to comment
Share on other sites

citação:

Certo, mas minha pergunta foi em qual dos filtros?

Se codigo do laudo for VAZIO entra no primeiro filtro, ou seja aparecerão todos os laudos daquele bairro. Caso contrario ele filtrara apenas o laudo selecionado/preenchido, mas outra pergunta aparece PARA QUAL BAIRRO? No segundo filtro nao deveria ter BAIRRO tbm? Ou o laudo eh unico!

Ambrosio de Barros Filho.

JRAMBRO - jrambro@hotmail.com

Curitiba/São José dos Pinhais - PR

Clipper5.0/ADVPL

Editado por - ambrosio on 04/01/2011 15:04:47


id=quote>id=quote>

-------------------------------------------------------

Se o codigo do laudo for deixado em branco, deverá aparecer uma lista de imoveis para o bairro selecionado na combo(por default caso nao seja escolhido o primeiro bairro da lista será escolhido - note que aparece em ordem alfabética). Se o codigo for preenchido virá apenas aquele laudo. Cada imóvel tem o seu codigo (ele é unico para cada imóvel) não há duplicidades entre codigos, mesmo em bairros e tipos diferentes (ex. KEY1209-001 - significa:

KEY - nome da empresa controladora (imobiliaria)

1 se é venda ou locação

2 residencial, comercial, industrial, etc.

09 (os dois ultimos caracteres antes do hifem) o tipo de imovel: apartamento, conjugado, sitio, sala, galpao, terreno, predio inteiro, andar corrido, estabelecimentos comerciais (passagem de ponto: padaria, salao, etc. - geralmente é precedido de 9x),

- xx quantidade de imoveis para esta categoria (vide acima), 001,002,003,ATÉ 999 por enquanto, muito difícil ter mais de 100 imoveis para uma categoria sem ser vendido ou alugado, ao ser dado baixa, o mesmo sera movido para outro banco, embora o espaço não fique vazio a sequencia continua (por que fiz um BD que controla a numeração para cada caso e está OK), se passar de 999 é só ir aumentando o tamanho na estrutura (DBF)

Editado por - gilbrodrigues on 05/01/2011 11:27:16

Link to comment
Share on other sites

citação:

Não vejo solução para esse problema em tentar ajustar o listbox. Fiz em outra ocasião, um arquivo temporário e nao deu esse problema. O jeito e fazer o mesmo. o unico problema e dar um seek toda vez que ele quiser visualizar o registro.

Obrigado a todos


id=quote>id=quote>

Ola,

isso ja aconteceu comigo e dava esse problema apenas quando fintrava um registro so.

A combinação de listbos e setfilter nao e uma boa ideia pq alem desses problemas estranhos quando voce navega no listbozx com set filter ele fica travando para pular para a proxima linha, e o arquivo nem precisa ser muito grande.

Te garanto que dando o seek e alimentando uma matriz ou arquivo temporario e muito mais rapido e vc nao tera problemas na navegacao no browse.

Obrigado.

Evaldo Wagner

FiveWin9.07 xHarbour 1.21,BCC55, Pelles C xDev,xHarbour for Linux(console)

evaldowl@hotmail.com

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...