Fórum Auto incremento por data #396676

03/03/2011

0

Boa noite

Estou condificando um programa de atendimento, onde preciso que tenha na campo NumGuia, tenha um autoinclemento pora data, ou seja, cada dia iniciar com o numero 1 e dai por diante incrementar em +1;
Ex: dia 02/03/2011.

NumGuia inicia em:
01
02
03
04
05...

dia 03/03/2011.

NumGuia.
01
02
03
04
05
06
07
08...


agradeço a todos que poderem ajudar. Obrigado.

Joaci Queiroz

Joaci Queiroz

Responder

Posts

03/03/2011

Marco Salles

Boa noite

Estou condificando um programa de atendimento, onde preciso que tenha na campo NumGuia, tenha um autoinclemento pora data, ou seja, cada dia iniciar com o numero 1 e dai por diante incrementar em +1;
Ex: dia 02/03/2011.

NumGuia inicia em:
01
02
03
04
05...

dia 03/03/2011.

NumGuia.
01
02
03
04
05
06
07
08...


agradeço a todos que poderem ajudar. Obrigado.

Não esta dando para ver diferença NumGuia inicia em: 02/03/2011 e NumGuia inicia em: 03/03/2011.


Responder

Gostei + 0

04/03/2011

Joaci Queiroz

A cada novo dia o numguia tem que iniciar com o numero 1 e seguir inclementando em mais , isso porque tenho um campo id que segue autoinclemento.

id         numguia         data
01            01              02/03/2011
02            02              02/03/2011
03            03              02/03/2011
04            01              03/03/2011
05            02              03/03/2011
06            03              03/03/2011
07            04              03/03/2011
...
Responder

Gostei + 0

04/03/2011

Marco Salles

Seria isto ????  
procedure Desfragemntar(Data:Tdate);
var
DataIni:Tdate;
numguia:integer;
begin
DataIni:=StartOfTheMonth(Data);
numguia:=0;
while CompareDateTime(DataIni,IncDay(Data,2)) < 0 do
begin
Inc(numguia);
showmessage('numguia = '+inttostr(numguia));
DataIni:=IncDay(DataIni);
end;
end;
Responder

Gostei + 0

04/03/2011

Emerson Nascimento

creio que a melhor forma seja, ao gravar, você verificar o dia corrente.

algo assim (como você não diz qual banco de dados nem qualquer outra informação relevante, vou assumir o incremento por SQL):

if query.active then query.close;
query.sql := "SELECT COALESCE(MAX(NUMGUIA),'00') ULTGUIA FROM ATENDIMENTO WHERE DATA = :_DATAATUAL "
query.parambyname('_dataatual').asdate := sysutils.date;
query.open;

novaguia := query.fields[0].asinteger + 1;

query.close;

queryatendimento.fieldbyname('NumGuia').AsString := FormatFloat('00', novaguia);

Responder

Gostei + 0

04/03/2011

Marco Salles

Depende muito da arquitetura ... Se ele estiver em memoria ou desconectado ???   Uma solução é deixar o servidor as tarefas mais complicadas ( gosto tb dessa linhagem ), mas vejo com bons olhos tb o uso do clientDataSet , e commitar no fim do processo . Depende da real necessidade O Mais importante no momento é entender o que ele de fato necessita ????
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar