Jump to content
Fivewin Brasil

Atenção usuários de ORDSCOPE()


vagner

Recommended Posts

Olá Pessoal,

Passei o dia inteiro com um problema que achava ser do ordscope no xharbour, até postei no fórum do xharbour, e então me veio a solução do caso icon_smile_big.gif

Bom eu tinha que pegar uns valores entre uns períodos, e sempre me saia errado ou seja pegava os valores corretos mas os períodos errados, não obedecia o intervalo, fiquei de cabeça quente (me aguarde brejas, vou tomar muitas hoje icon_smile_big.gif), bom aqui está a solução para isso :

É pessoal,

Depois de analisar e reavaliar, cheguei a uma triste realidade.

O OrdScope não funciona para índices compostos, alias funciona porém sendo o

1º field da comparação sendo igual sempre, vou dar um exemplo :

Se eu tenho um CNPJ e quero selecionar todos as faturas desse CNPJ, funciona

normalmente.

Index CNPJ+DTOS(DATA)+NroFatura ....

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"1234567890123"+"20051028")

Isso me traz todas as faturas desse cliente, sem problema algum.

Agora se eu fizer o seguinte :

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"2345678901234"+"20051028")

Isso não Funciona, e é lógico que não funcione :þ), eu é q não tinha visto a

relação, com muita coisa na cabeça as vezes a gente precisa parar e ir dar

uma volta para poder pensar ;þ)

Se eu tiver uma chave que estaria +- assim :

"2045678901234"+"20040101"

Ela seria maior que a minha primeira chave, fazendo com que estivesse dentro

do intervalo :þ)

Então para quem usa muito o OrdScope como eu, tomem cuidado, principalmente

se estiverem usando para selecionar períodos :þ)

Abraços

Vagner Wirts

São Paulo-Brasil

Isso é só para que não caiam na mesma coisa que eu icon_smile_big.gif

Vagner Wirts

Clipper 5.2 Lib 5.3 - Blinker 5.0 FW 2.0, Harbour 43.0 (Flex), xHarbour 99.1 99.2 99.3 (Simplex) FW 2.5 icon_smile_big.gif

Link to comment
Share on other sites

Olá Pessoal,

Passei o dia inteiro com um problema que achava ser do ordscope no xharbour, até postei no fórum do xharbour, e então me veio a solução do caso icon_smile_big.gif

Bom eu tinha que pegar uns valores entre uns períodos, e sempre me saia errado ou seja pegava os valores corretos mas os períodos errados, não obedecia o intervalo, fiquei de cabeça quente (me aguarde brejas, vou tomar muitas hoje icon_smile_big.gif), bom aqui está a solução para isso :

É pessoal,

Depois de analisar e reavaliar, cheguei a uma triste realidade.

O OrdScope não funciona para índices compostos, alias funciona porém sendo o

1º field da comparação sendo igual sempre, vou dar um exemplo :

Se eu tenho um CNPJ e quero selecionar todos as faturas desse CNPJ, funciona

normalmente.

Index CNPJ+DTOS(DATA)+NroFatura ....

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"1234567890123"+"20051028")

Isso me traz todas as faturas desse cliente, sem problema algum.

Agora se eu fizer o seguinte :

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"2345678901234"+"20051028")

Isso não Funciona, e é lógico que não funcione :þ), eu é q não tinha visto a

relação, com muita coisa na cabeça as vezes a gente precisa parar e ir dar

uma volta para poder pensar ;þ)

Se eu tiver uma chave que estaria +- assim :

"2045678901234"+"20040101"

Ela seria maior que a minha primeira chave, fazendo com que estivesse dentro

do intervalo :þ)

Então para quem usa muito o OrdScope como eu, tomem cuidado, principalmente

se estiverem usando para selecionar períodos :þ)

Abraços

Vagner Wirts

São Paulo-Brasil

Isso é só para que não caiam na mesma coisa que eu icon_smile_big.gif

Vagner Wirts

Clipper 5.2 Lib 5.3 - Blinker 5.0 FW 2.0, Harbour 43.0 (Flex), xHarbour 99.1 99.2 99.3 (Simplex) FW 2.5 icon_smile_big.gif

Link to comment
Share on other sites

Olá Pessoal,

Passei o dia inteiro com um problema que achava ser do ordscope no xharbour, até postei no fórum do xharbour, e então me veio a solução do caso icon_smile_big.gif

Bom eu tinha que pegar uns valores entre uns períodos, e sempre me saia errado ou seja pegava os valores corretos mas os períodos errados, não obedecia o intervalo, fiquei de cabeça quente (me aguarde brejas, vou tomar muitas hoje icon_smile_big.gif), bom aqui está a solução para isso :

É pessoal,

Depois de analisar e reavaliar, cheguei a uma triste realidade.

O OrdScope não funciona para índices compostos, alias funciona porém sendo o

1º field da comparação sendo igual sempre, vou dar um exemplo :

Se eu tenho um CNPJ e quero selecionar todos as faturas desse CNPJ, funciona

normalmente.

Index CNPJ+DTOS(DATA)+NroFatura ....

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"1234567890123"+"20051028")

Isso me traz todas as faturas desse cliente, sem problema algum.

Agora se eu fizer o seguinte :

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"2345678901234"+"20051028")

Isso não Funciona, e é lógico que não funcione :þ), eu é q não tinha visto a

relação, com muita coisa na cabeça as vezes a gente precisa parar e ir dar

uma volta para poder pensar ;þ)

Se eu tiver uma chave que estaria +- assim :

"2045678901234"+"20040101"

Ela seria maior que a minha primeira chave, fazendo com que estivesse dentro

do intervalo :þ)

Então para quem usa muito o OrdScope como eu, tomem cuidado, principalmente

se estiverem usando para selecionar períodos :þ)

Abraços

Vagner Wirts

São Paulo-Brasil

Isso é só para que não caiam na mesma coisa que eu icon_smile_big.gif

Vagner Wirts

Clipper 5.2 Lib 5.3 - Blinker 5.0 FW 2.0, Harbour 43.0 (Flex), xHarbour 99.1 99.2 99.3 (Simplex) FW 2.5 icon_smile_big.gif

Link to comment
Share on other sites

Boa Noite!

Valeu pela dica, eu uso somente o ordscope(), e fazendo o teste realmente acontece isso, porem, claro, depende de cada caso, e mexendo fiz um SORT entre as variaveis do codigo para saber qual é menor e deu certo colocando data+codigo, fica aqui mais uma dica.

Abraços

Alessandro F. Silva - Ribeirão Preto/SP

aferracini@terra.com.br

FW2.0d + CL53b + Blinker 7.0

MSN: ferracini_silva@hotmail.com

TERCEIRO ENCONTRO DE FIVEWINNERS NOVEMBRO DE 2005 EU APOIO E VOU.

Link to comment
Share on other sites

Vagner eu uso e pelo que havia entendido do Ordscope() é que o filtro deve obdecer exatamente o índice. No seu caso você postou CNPJ+DTOS(DATA)+NroFatura e na sua pesquisa está o CNPJ e Nº da Fatura, eu nao sabia que funcionava assim, mas se indexar somente por CNPJ+Fatura, acho que ele pegara normalmente os dados.

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

Index CNPJ+Fatura

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"2345678901234"+"20051028")

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

Index CNPJ+DTOS(data)+Fatura

OrdScope(0,"1234567890123"+DTOS(PERIODO1)+"20051028")

OrdScope(1,"2345678901234"+DTOS(PERIODO2)+"20051028")

Nao sei se isso mas nos meus testes foi assim que fiz, ou do contrario, pelo menos comigo nao dava certo.

Favor testar ai e nos reportar por favor.

Geraldo Barbosa da Silva

FW 2.6 + Clipper 5.3b + Blinker 6.0 + WS 4.5

FWH 2.6 + xHarbour 0.99.50 (Simplex) + Bcc55 + Pelles + MyMake

Windows Xp SP2

lucgera@terra.com.br

Link to comment
Share on other sites

Ai pegou então. No meu caso eu uso bastante assim: Index(Contrato+CentrodeCusto+algumacoisa) e quando realizo filtros nunca escolho 2 contratos pois seria estranho no meu caso, talvez seja por isso que não vi nenhum problema até o momento. Mas temos de ficar de olho para não perder o rumo da coisa. Valeu pelo retorno.

Geraldo Barbosa da Silva

FW 2.6 + Clipper 5.3b + Blinker 6.0 + WS 4.5

FWH 2.6 + xHarbour 0.99.50 (Simplex) + Bcc55 + Pelles + MyMake

Windows Xp SP2

lucgera@terra.com.br

Link to comment
Share on other sites

Olá,

Só para deixar claro, como disse o Paulo, não é um problema do OrderScope(), e sim de lógica. Aliás, como o próprio Vagner demonstra. O problema estava entre o teclado e a cadeira. Hehehehe

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.5+PellesC+xBuild+xHarbour.org 0.99.3

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005

Link to comment
Share on other sites

citação:

Olá,

Só para deixar claro, como disse o Paulo, não é um problema do OrderScope(), e sim de lógica. Aliás, como o próprio Vagner demonstra. O problema estava entre o teclado e a cadeira. Hehehehe

[]s,

Evandro G. de Paula

Curvelo - MG

evandro@skillnet.com.br (Escr. - na Cidade)

imortal@skillnet.com.br (Res. - na Roça)

FWH 2.5+PellesC+xBuild+xHarbour.org 0.99.3

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005


id=quote>id=quote>

E é aí que se vê quem é profissional ou não. Poucos criariam um tópico mostrando o próprio erro, para evitar que outros caiam.

Paulo/CONTATO SISTEMAS

Clipper53b / FW26 / Blinker70

Ajudar é um prazer, agradecer é uma obrigação

PRESTIGIEM O III ENCONTRO DE USUÃRIOS DE FIVEWIN - 2005

Inscreva-se: http://www.installsis.com.br/encontro

Link to comment
Share on other sites

  • 4 years later...

citação:

Vagner!

Como vc resolveu isso?

Usou a pesquisa de outra forma sem ordscope?

Paulo


id=quote>id=quote>

simples pra resolver isso:


Index CNPJ+DTOS(DATA)+NroFatura ....

Index DTOS(DATA)+CNPJ+NroFatura ....

dbSetOrder(1)

OrdScope(0,"1234567890123"+"20051028")

OrdScope(1,"1234567890123"+"20051028")

dbSetOrder(2)

OrdScope(0,"20051028"+"1234567890123")

OrdScope(1,"20051028"+"2345678901234")

id=code>id=code>

como alguem disse acima: LOGICA PURA..rss

[]'s

Gilberto Frohlich - Toledo/PR

giba_f@hotmail.com

giba_f@yahoo.com.br

xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2)

Link to comment
Share on other sites

quanto a isso sim.

Mas tenho outro problema com ordscope.

Ele só faz a consulta com dados que existem, exemplo.

Use tabela.dbf

index codprod+dtos(data)...

Campo codprod tipo Caract tamanho 7 pict "99-9999"

Se eu pesquisar os primeiros campos iguais ao segundo, funciona blz

exemplo:

OrdScope(0,"01-0014"+"20100501")

OrdScope(1,"01-0014"+"20100531")

Neste caso mostra todo o movimento do mes de maio 2010 do produtor 01-001,

perfeito e muito rápido, nem comparação com set filter..

agora se eu quiser filtrar produtores de "00-0000" até "99-9999" entre

01/05/2010 a 31/05/2010

OrdScope(0,"00-0000"+"20100501")

OrdScope(1,"99-9990"+"20100531")

não existe produtores com "00-0000" e "99-9999"

somente maiores e menores.

então a solução seria:

dbseek("00-000020100501",.t.)

cTemp := codprod+dtos(data)

dbseek("99-999920100531",.t.)

ctemp2 := codprod+dtos(data)

set scope to ctemp,ctemp1

go top

Só que se o primeiro ou último, codprod, não tiver nenhum lançamento neste período, ele busca o primeiro com outra data, ou se não achar, fica em branco.

Acho o Ordscope excelente, mata a pau na velocidade, mas é um pouco limitado.

Ou teria uma solução para este caso?

Paulo

Link to comment
Share on other sites

OrdScope realmente é uma beleza.

Mas poderia ter uma opção de colocar o operador, tipo

OrdScope(0,"12345",">=")

OrdScope(1,"99999","<")

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

  • 4 years later...

Amigos sei que este tópico é bastante antigo e para muito o problema ja foi sanado criando-se índices temporários mas na teimosia, relutei em recorrer devido a muitas mudanças nas rotinas mas o fato é que o ORDSCOPE É FALHO quando se trata de datas e tentei de muitas formas e dias permanecer no mesmo e a solução só veio mesmo com os índices temporários.

Para quem precisar e estiver passando a mesma dificuldade, resolvi somente assim...

SELECT ContasRece
ContasRece->(DBGOTOP())
ContasRece->(ordscope(0,)) // Para retirar qualquer filtro existente
ContasRece->(ordscope(1,))
SET FILTER TO

ContasRece->(DBGOTOP())
INDEX ON ContasRece->data_venc TAG IndTemp TO IndT FOR (ContasRece->tipo = "R1" .AND. ContasRece->cod_client = vcod_clien) MEMORY
ContasRece->(DBGOTOP())

E GRAÇAS A DEUS!!

Que criaram este "atalho" pois o SET FILTER em rede não em nenhuma condição de ser usado e já estava muito insatisfeito com a linguagem para um problema básico para todos.

Valeu muito as dicas.

FWH 8.12 / xHB 1.1

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