Fórum Delphi xe7 + Mysql #549993
31/03/2016
0
sou iniciante no delphi, e preciso de ajuda. Estou com um problema. Quero pegar o ultimo registro da tabela e add mais 1.
ja pesquisei na net mais nao encontrei um ex que eu pudesse usar.
se alguem puder mais ajudar e me explicar bem detalhado.
desde ja agradeço a atenção.

Alexandre Berti
Curtir tópico
+ 0Posts
31/03/2016
Bin Laden
Gostei + 0
31/03/2016
Raimundo Pereira
Id:integer;
begin
id:=0;
Suatabela.open;
id:=Suatabela.recordcount+1;
showmessage(inttostr(id);
end;
Gostei + 0
01/04/2016
Alexandre Berti
Eu estou usando o banco de dados Mysql 5.5 com os componentes FireDac nativo do delphi xe7, estou usando tbm o action manager para controlar os botoes do form.
O q esta acontecendo e o seguinte se eu vou inserir o primeiro registro blz nao da nenhum erro ele gera o codigo 1 e da tudo certo. So q quando eu vou inserir outro registro o banco gera o codigo 2 mais à aplicação me mostra o cogido 1 novamente com isso gera um erro.
Eu to pescisando pegar o ultimo id inserido e add + 1 da tabela.
eu nao faço a minima ideia de como fazer isso. kkkkkkkk
Gostei + 0
01/04/2016
Raimundo Pereira
VAR PROXIMA_ID:INTEGER;
BEGIN
PROXIMA_ID:=0;
DM.SUAQUERY.CLOSE;
DM.SUAQUERY.SQL.CLEAR;
DM.SUAQUERY.SQL.TEXT:='SELECT * FROM SUA TABELA ORDER BY ID';// AQUI VAI ORDENAR PELO ID.
DM.SUAQUERY.OPEN;
DM.SUAQUERY.LAST; //SETA PARA O ULTIMO REGISTRO
PROXIMA_ID:=DM.SUAQUERY.FIELBYNAME('ID').ASINTEGER+1; //PEGA O VALOR DO CAMPO ID NO REGISTRO DE SUA TABELA E SOMA +1
showmessage(inttostr(PROXIMA_ID);
END;
Agora você poderia colocar para esta ID ser gerada automaticamente pelo Mysql colocando o campo ID com PK e UN
Gostei + 0
02/04/2016
Alexandre Berti
PROXIMA_ID:INTEGER;
begin
PROXIMA_ID:=0;
DM.SQL_Clientes.CLOSE;
DM.SQL_Clientes.SQL.CLEAR;
DM.SQL_Clientes.SQL.TEXT:='SELECT * FROM Clientes ORDER BY CodCli';// AQUI VAI ORDENAR PELO ID.
DM.SQL_Clientes.OPEN;
DM.SQL_Clientes.LAST; //SETA PARA O ULTIMO REGISTRO
PROXIMA_ID:= DM.SQL_Clientes.FieldByName('CodCli').ASINTEGER+1; //PEGA O VALOR DO CAMPO ID NO REGISTRO DE SUA TABELA E SOMA +1
//showmessage(inttostr(PROXIMA_ID);
END;
meu codigo ficou assim.
qual seria o lugar certo para colocar esse codigo? Fiz uns testes aki e nao deu certo.
Gostei + 0
02/04/2016
Raylan Zibel
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
type
TForm1 = class(TForm)
FDQuery1: TFDQuery;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function genID(tabela: string; campo: string): integer;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
id_cliente: integer;
begin
id_cliente := genID('clientes', 'cd_cliente');
end;
function TForm1.genID(tabela, campo: string): integer;
begin
FDQuery1.SQL.Text := Format('select (max(''%s'') + 1) as chave from %s', [tabela,campo]);
FDQuery1.Open;
Result := FDQuery1.Fields[0].AsInteger;
FDQuery1.Close;
end;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Ve se funciona pra voce...
Gostei + 0
02/04/2016
Raylan Zibel
http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)