Zerar contagem de documento

Olá. Estou tentando um aplicação para cadastrar Ofícios, sendo que ao mudar de ano a contagem ZERA, continuando nova contagem para o ano seguinte.
Alguém pode me ajudar?
Desde já agradeço á atenção.

vc tem um campo na tabela de oficios e deseja zerar a contagem ao mudar o ano?

Esse campo não é autoincrement na tabela, correto? E nem índice exclusivo?

Agradeço o retorno Haroldo. Como pode perceber sou iniciante em lógica de programação.
Bom então, tenho que ter um campo, que não seja o autoincrement, e nem índice da tabela e a partir daí zerar a contagem, seria isso?
A tabela que criei é essa:
CREATE TABLE tbl_sg1procentr (
idtbl_docsg1ProcEntr INT(6) NOT NULL AUTO_INCREMENT,
numDocumento INT(6) NULL DEFAULT NULL,
ano INT(4) NULL DEFAULT NULL,
tipoDoc INT(1) NULL DEFAULT NULL,
pastaDoc VARCHAR(1) NULL DEFAULT NULL COLLATE ‘utf8_general_ci’,
juridico INT(1) NULL DEFAULT NULL,
dataCad DATE NULL DEFAULT NULL,
descrDoc VARCHAR(125) NULL DEFAULT NULL COLLATE ‘utf8_general_ci’,
assist INT(2) NULL DEFAULT NULL,
dataSaida DATE NULL DEFAULT NULL,
depto VARCHAR(2) NULL DEFAULT NULL COLLATE ‘utf8_general_ci’,
obs VARCHAR(60) NULL DEFAULT NULL COLLATE ‘utf8_general_ci’,
PRIMARY KEY (idtbl_docsg1ProcEntr) USING BTREE
)
Nesse caso o campo numDocumento deve ser zerado para o inicio do próximo ano, mas não estou acertando

muito bem, agora fica mais claro e podemos te ajudar.

Solução em Scriptcase:
No evento onbeforeinsert:

$select = "select  max(numDocumento)+1 from tbl_sgqprocentr where ano = year(currdate())";
sc_lookup(ds, $select);
if ($rs) {
   {numDocumento} = $ds[0][0]; 
}else{
 {numDocumento} = 1;
}

Veja bem, em uma aplicação muito concorrente isso por gerar problemas.

Outras soluções existem mas requer cada vez mais conhecimento avançado.

Eu criaria uma índice exclusivo para as colunas ano + numDocumento

Agradeço a paciência e atenção.
Vou quebrar um pouco a cabeça, então retornarei.

criando o índice que sugeri evita a duplicidade de número de documento dentro do mesmo ano.

1 Curtida

Verifique no teu banco de dados e utilize Triggers que é mais garantido.

2 Curtidas

Utilizo a geração no no ajax do campo, passando o código:

$anonovo=date(‘Y’);
$novo_numero=str_pad({numero}, 4, “0”, STR_PAD_LEFT);
{numCompleto}=$novo_numero."-".$anonovo;

Já utilizo a algum tempo e funciona sem problema com cerca de 20 pessoas utilizado o gerador de numeros.

1 Curtida

1 Curtida

///criei o metodo PHP com o codigo abaixo:

$ano_atual = date(“Y”);

sc_lookup(rs, “SELECT tipo FROM tipo_documentos WHERE idtipo={tipo}”);

$tipoNome={rs[0][0]};

sc_lookup(ds, “SELECT numero FROM numerodocumento WHERE tipo={tipo} and ano=$ano_atual ORDER BY id DESC LIMIT 1”);

$num= {ds[0][0]};

if($num==Null){

sc_ajax_message("Primeiro número do(a) <br><strong>".$tipoNome."</strong> do ano: <strong>".$ano_atual."</strong>. <br>Informe manualmente no campo <strong>'Número'</strong>: o valor <strong>'1'</strong>", "Aviso", "type=error");

}
elseif($num!=Null){

$i=$num;
do{	

	$i++;


}while ($i <=$num);


$novonumero=$i;
{numero}=$novonumero;
$novonumero=str_pad($novonumero, 4, "0", STR_PAD_LEFT);
$data_atual = date("Y");			
{numCompleto}=$novonumero."-".$data_atual;
	
sc_ajax_message("Número gerado com sucesso!<br> <h2><strong>".$tipoNome." Nº: ".{numCompleto}, "</strong></h2> Confirmação", "type=success"); 	

}

1 Curtida