Como ordeno um campo numerico

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

maccrow escreveu:Não posso criar um contador externo, preciso corrigir o banco mesmo.
Cómo externo ?. Meu conselho que seja modificado direto nos fontes do atual sistema (se é essa a função do campo NUMERO, isto é de apenas para exibição). Mas de todas formas precisa ajeitar teu banco de dados, ou até deixar como está, ja que se a finalidade do campo NUMERO é para exibição, é dizer é apenas uma contagem de pessoas de um determinado grupo. Se for isso, confirme por favor.

Baseado no meu exemplo anterior, fiz a modificação que para cada grupo o seu contador zere e comece de novo a numeração (muito fácil), veja só:

Código: Selecionar todos

SELE ESCALA
INDEX ON STR(GRUPO,<tamanho do campo>,<quantidade decimal do campo>)+STR(NUMERO,<tamanho do campo>,<quantidade decimal do campo>) TO ARQ_NTX
GOTO TOP
VN=1
VGRUP=(ESCALA->GRUPO)
DO WHILE !EOF()
    IF !((ESCALA->GRUPO)=VGRUP)
        VN=1
        vgrup=(ESCALA->GRUPO)
    ENDIF
    REPLACE NUMERO WITH VN
    VN=VN+1
    SKIP
ENDDO
Bom seria você passar a estrutura de seu banco de dados e listar: nomes dos campos, tamanho e tipo.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
maccrow
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 11 Fev 2008 23:28
Localização: Sao Paulo

Mensagem por maccrow »

É que não tenho acesso aos fontes do programa ... por isso estou criando essa aplicaçãozinha que corrige o banco =)

Agora vou fazer o que vc disse e te retorno !

[ ]s
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Desculpa a minha distração, não lembrava que você ja tinha dito que não possuia os fontes. Não tem como aplicar eng.reversa ? (Valkirie ou UNCLIP ?). Você ia matar esse problema na sua raíz.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
maccrow
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 11 Fev 2008 23:28
Localização: Sao Paulo

Mensagem por maccrow »

Opa Pablo .. funcionou sua ordenação .... valeu mesmo, fiquei quebrando a cabeça um tempão e nem conseguia imaginar que poderia ser assim !! =)

Qto ao programa aho que teria, mas não o farei porque estou começando agora e nem quero correr o risco de danificar qq coisa.

A empresa que fez o programa não conseguiu achar o erro, porque eu conseguiria ? :))

Mais uma vez valeu !! :xau
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos,

Toledo:
Mas a razão de não se usar DToC() em chaves de índices é que como a função vai transformar a Data em Caracter, assim um registro com data igual a 10/02/2008 virá antes do registro com data igual a 21/01/2008.
Foi isto que tentei explicar para o amigo Clipper.

Clipper: Não fique chateado, não foi uma contestação de conhecimento, mas sim um parecer sobre o que podemos evitar.

maccrow:

Código: Selecionar todos

nQuebra = GRUPO // ----------- Acrescente
do While !EOF() 
     if ESCALA->ESCSEM=nEscala 
        select CADGRUP 
        goto top 
        seek GRUPO 
        if ESCALA->GRUPO>nGrupo 
           select ESCALA 
           replace NUMERO with nNumesc 
           nNumesc++ 
           skip 
        endif 
        if nQuebra != GRUPO // ----------- Acrescente
           nQuebra = GRUPO // ----------- Acrescente
           nNumesc := 1 // ----------- Acrescente
        endif // ----------- Acrescente
     endif 
enddo
Neste caso voce usa como quebra o campo GRUPO e se em algum momento for diferente da variavel quebra é porque mudou de grupo e será modificado e a numeração recomeça.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
maccrow
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 11 Fev 2008 23:28
Localização: Sao Paulo

Mensagem por maccrow »

OK rochinha ! Valeu vou testar esse código também, mas usei o do pablo e funcionou !

Sei que são codigos simples mas estou lendo e relendo-os para poder entender tudo =)

[ ]s
Responder