Ir para conteúdo
Fórum Script Brasil
  • 0

Autoincremento!


DELPHI-Man32

Pergunta

bom pessoal, fazendo um programinha aqui, fiquei na duvida se ai ou não usar um campo autoicremento! mas como fazemos centenas de testes no banco durante o projeto, resolvi criar um campo código simples mesmo(N) no paradox, mas me veio a duvida(?).

como implementar?

então fiz este simples código que nos meus testes se saui muito bem e quem quiser utilizar pode ficar a vontade!

procedure Tfm_cad_alunos.bt_alunosClick(Sender: TObject);
var
ultimo, proximo : integer;
begin
Table1.Open;
Table1.Last;
if ed_cod.Text = '' then
begin
ed_cod.Text := '0';
end;
ultimo := StrToInt(ed_cod.Text);
proximo := ultimo + 1;
Table1.Append;
ed_cod.Text := IntToStr(proximo);
ed_nome.SetFocus;

BASTA COLOCAR O CODIGO NO EVENTO ONCLICK DO BOTAO QUE VAI ADICIONAR UM NOVO REGISTRO NO BANCO DE DADOS.

acho q as linhas estão bem claras!

te mais, espero melhoras no código acima!

abraços a todos...

Editado por DELPHI-Man32
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

cara tenho uma parecida... so que uso uma função para isso... eu tenho como padrão de nomes de colunas e tabelas no banco criar o nome da tabela e a PK com nome da tabela mais NU. ex.: nome da tabela PAIS nome da PK NUPAIS! ai a função ficaria mais ou menos assim:

function TdtmPrincipal.ProximoCodigo(nomeTabela, nomeCampo: string; sqlAd: string = ''): integer;
var
   prox: integer;
   str, campo: string;
begin
{
Retorna o próximo código para uma tabela
    nomeTabela = nome da tabela solicitada
    nomecampo = nome do campo código a pegar o próximo numero (opcional)
    sqlAd = Restrição.
}
campo:=nomeCampo;
if campo = '' then
    campo:='NU' + nomeTabela;
qryProximo.Close;
qryProximo.SQL.Clear;
str:='select max(' + campo + ') as Proximo';
str:=str + ' from ' + nomeTabela;
qryProximo.SQL.Add(str);
if sqlAd <> '' then
    qryProximo.SQL.Add('where ' + sqlAd);
qryProximo.Open;
prox:=qryProximo.FieldByName('PROXIMO').AsInteger;
qryProximo.Close;
Inc(prox);
ProximoCodigo:=prox;
end;
ai ta a função... pra chamar ela fica facil...
ProximoCodigo('NOMETABELA','CHAVEPRIMARIA', 'RESTICAO');
{sendo que as duas ultimas não são obrigatorias... como explicado antes uso um padrão pra nomenclatura...}

era isso galera... mais um modelo de Autoincremento! biggrin.gif

PS: qryProximo é uma ADOQRY

Link para o comentário
Compartilhar em outros sites

  • 0

kro amigo, legal sua função, mas minha intenção e diminuir ao maximo o numero de linhas da 'procedure ou function" mas que funfe, no meu caso deu certo, estava com um probleminha no inicio desde codigo, ele so funcionava depois que já tinha algum numero, se fosse o primeiro registro dava pau, pois não tinha numero para ele incrementar, mas foi resolvido com um simples "IF sem ELSE", falowsss!! como você pode ver ai!

ate mais!

Link para o comentário
Compartilhar em outros sites

  • 0

quer diminuir mais ainda...rsrs

if ed_cod.Text = '' then

begin

ed_cod.Text := '0';

end;

pra que usar o begin se você passa somente um argumento...

if ed_cod.Text = '' then ed_cod.Text := '0';

não muda em nada, somente na estrutura do código e talvez alguns bits ehehe

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

ola amigo!

cara, tanto em paradox e interbase você pode mandar criar um campo auot-inc dentro do proprio banco de dados.

assim não precisa esquentar a cabeca em fazer funcoes.

dê uma olhada, ok?!

Sucesso e paz!

Link para o comentário
Compartilhar em outros sites

  • 0

kro amigo, quem programa em delphi já deve ter si deparado com o problema de:

ao deletar os registros da table! ele não zera! e isso é um incomodo mesmo!

então o autoincremento tem essa desvantagem!

mas se você fizer sua propria contagem! você poderá apagar sem problema que sempre a contagem vai zerar!

é isso!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...