Página 2 de 2
Enviado: 15 Fev 2008 21:24
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.
Enviado: 15 Fev 2008 21:59
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
Enviado: 15 Fev 2008 22:19
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.
Enviado: 15 Fev 2008 23:21
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
Enviado: 16 Fev 2008 06:00
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.
Enviado: 16 Fev 2008 23:05
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