Array
(
)

Sistema Ordem de Serviço

Piassa
   - 08 ago 2004

preciso de uma idéia pra fazer o seguinte, tenho q fazer um cadastro de O.S. só q vai funcionar da seguinte maneira,

O código da O.S. ( chave primária) vai ter 13 dígitos, só q os quatro primeiros dígitos vão ser fixos, por exemplo

0200000000001
0200123625362


e o resto dos 9 dígitos vai ser auto incremente, de 1 em 1, como posso fazer isso, sendo q os 4 números fixos vão ter 2 sequências, sendo uma:

0200

e a outra

0500


Preciso de uma luz pra resolver.


Grato pela atenção.


Piassa
   - 09 ago 2004

sobe


Ronaldo.cutu
   - 09 ago 2004

qual o banco de dados que vc usar


Piassa
   - 09 ago 2004


Citação:
qual o banco de dados que vc usar



interbase6


Titanius
   - 09 ago 2004

Olá,

Podes criar um GENERATOR, chamado GEN_OS.. ele vai guardar os increnmentos da numeracao... já que voce vai usar os primeiros numeros fixos, podemos fazer o seguinte:

#Código


var
Generator: integer;
NovoCodigo: string;
begin
cQuery := TMDOQuery.Create(Application);
cQuery.Database := MDODatabase1;

with cQuery do
begin
// pega o valor incrementado no banco e incrementa mais 1
SQL.Add(´select gen_id(GEN_OS, 1) from rdb$database´);
Open;

// joga o valor em uma variavel
Generator := cQuery.Fields[0].AsInteger;

// formata a variavel com os 4 primeiros numeros fixos e o
// resto com o numero gerado e caso nao seja de 9 posicoes,
// preenche o resto com 0
NovoCodigo := 0500 + FormatFloat(´000000000´, Generator);
cQuery.Free;
end;


Amigo neste código usei o Query do componente MDO, mude a linha de criacao do Query para o componente que você está usando, ou apenas adicione um componente da paleta no Form e pronto... aih nao precisa cria-lo..

Espero ter ajudado,
abracos.


Piassa
   - 09 ago 2004

vlw titanius, vou tentar desse jeito