Aprenda Programar: função para retornar o valor de um campo auto-incremento

Recebi muitos e-mails de amigos inscritos no meu blog e no canal do youtube com perguntas:

Como saber o próximo número do auto-increment?
como recuperar último código de um auto-incremento ?
Como saber o próximo valor do auto incremento?

###### Clique no GOSTEI ! isso me ajuda muito ! #############

Neste vídeo vou mostrar como criar uma função para retornar o valor do campo auto incremento e como definir o valor do próximo incremento.

###### Função  #####

Uses db; // Declare USES DB


//Private ou Public
function RetornaAutoINC(cTabela, cCampoAI: String; vAtribui:variant):Variant;



        //Função:

function RetornaAutoINC(cTabela, cCampoAI: String; vAtribui:variant): Variant;
var
  vResultaAutoIncrimento : Variant; // resultado do incremento
  nQTD : Variant;   // Variável para próximo incremento
begin
  nQTD:=vAtribui; // atribuição a variavel nQTD o valor do próximo incremento obtido pelo parametro da funcao
  TabGlobal.SqlAutoInc.Close; // fecha Query
  TabGlobal.SqlAutoInc.sql.Clear; // limpa Query
  TabGlobal.SqlAutoInc.SQL.Add(‘Select Max(‘+cCampoAI+’) as nCocInc from ‘+cTabela); // escreve nova query com parametros recebido da funcao
  TabGlobal.SqlAutoInc.Open; // abre a nova query
  case TabGlobal.SqlAutoInc.Fields[0].DataType of
    ftSmallint, ftWord, ftInteger: // se o campo AI for SmallInt, Word ou Integer
      vResultaAutoIncrimento := TabGlobal.SqlAutoInc.Fields[0].AsInteger + nQtd;
    ftFloat, ftCurrency: // Se o campo for Float ou Currency
      vResultaAutoIncrimento := TabGlobal.SqlAutoInc.Fields[0].AsFloat + nQtd;
  end;
  TabGlobal.SqlAutoInc.Close; // fecha query
  Result := vResultaAutoIncrimento; // retornar o campo Resultado Auto INc
end;

###### Assista o vídeo #######

Publicado por

Daniel Morais

Comecei na área de TI há um bom tempo (1991) com aqueles cursos de MS-DOS 6.22, WordStar, Lotus123, Dbase III Plus, etc. Adorei programar em Dbase III Plus utilizando Dbf; achei fantástico quando aprendi a programar em Clipper Summer 87 e posteriormente Clipper 5.x, que era muito estável em rede utilizando Novell NetWare. Desde então sou um fanático por TI. Hoje desenvolvo aplicações para Windows, Android, OS X e Linux utilizando Lazarus (free Pascal) . Blogueiro (www.infocotidiano.com.br, www.aprendalazarus.com.br, www.startdb.info). Além dos meus Blogs tenho um canal no YouTube o www.youtube.com.br/infocotidiano onde tenho mais de 1 Milhão de visualizações com vídeos de dicas diversificadas que vão desde solucionar um erro de impressão, curso sobre banco de dados, até criar software multi-plataforma utilizando o Lazarus.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *