Ir para conteúdo
  • Cadastre-se

dev botao

Delphi + MySql - Retornar número do registro alterado


  • Este tópico foi criado há 3144 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia!
Tenho um sistema em Delphi e estou enviando alguns dados para o banco de dados MySql para fazer uma sincronização de arquivos.
Funciona da seguinte forma: Faço um cadastro/alteração no sistema Delphi, depois jogo para o MySql, no MySql tenho uma procedure que verifica se o arquivo já existe, se sim faz um UPDATE, se não existir faz um INSERT.
O problema é o seguinte: tenho duas tabelas MESTRE/DETALHE, tabela FAZENDAS que são os dados da fazenda, e tabela FAZENDAS_MAPAS, que são os mapas de uma fazenda. na tabela FAZENDAS_MAPAS tem um campo COD_FAZENDA, que é o numero do registro da tabela FAZENDAS. Esse campo registro é autoincremento. 
Quero saber como faço para retornar o número do campo REGISTRO da tabela FAZENDAS quando faço um UPDATE.
Quando faço um INSERT já consegui, usei o seguinte código no Delphi:

function TForm1.mysql_insert_id(SQLConnection: TSQLConnection): Integer;
var
  SqlDataSet: TSqlDataSet;
begin
  result:= 0;
  SqlDataSet:= TSqlDataSet.Create(nil);
  try
    SqlDataSet.SQLConnection:= SQLConnection;
    SqlDataSet.CommandText:= 'select LAST_INSERT_ID()';
    SqlDataSet.Open;
    result:= SqlDataSet.Fields[0].AsInteger;
    SqlDataSet.Close;
  finally
    SqlDataSet.Free;
  end;
end;


O código "select LAST_INSERT_ID()" retorna o número do ultimo registro inserido. Mas para retornar o ultimo registro alterado não consegui fazer.

Abaixo segue a procedure de importar fazendas no MySql. Se dentro dessa procedure desse para retornar o numero do registro seria ótimo.
 

CREATE DEFINER=`innetsistemas15`@`%%` PROCEDURE `ImportaFazendas`(
PREGISTRO int(11),
PCLIENTE int (11),
PNOME_FAZENDA varchar(80),
PENDERECO varchar(80),
PNUMERO varchar(10),
PBAIRRO varchar(60), 
PCIDADE varchar (60),
PESTADO varchar (2), 
PCEP varchar(10),
PRESPONSAVEL varchar(80),
POBS varchar(250),
PTEL_RESPONSAVEL varchar(16),
PDATAMOD timestamp)
BEGIN 
   DECLARE cli int (11);
   declare nome varchar(80);
   Set cli = 0;
   set nome = '0';
   SELECT cliente, nome_fazenda From FAZENDAS where cliente = PCLIENTE and nome_fazenda = PNOME_FAZENDA into cli, nome;
  if ((cli <> 0) and (nome <> '0')) then
     UPDATE `FAZENDAS` SET DATAMOD=PDATAMOD, CLIENTE = PCLIENTE, NOME_FAZENDA = PNOME_FAZENDA, ENDERECO = PENDERECO, NUMERO = PNUMERO, BAIRRO = PBAIRRO, CIDADE = PCIDADE,
     ESTADO = PESTADO, CEP = PCEP, RESPONSAVEL = PRESPONSAVEL, OBS = POBS, TEL_RESPONSAVEL = PTEL_RESPONSAVEL WHERE DATAMOD < PDATAMOD and cliente = cli and nome_fazenda = nome;
  else
     Insert into FAZENDAS (CLIENTE, NOME_FAZENDA, ENDERECO, NUMERO, BAIRRO, CIDADE, ESTADO, CEP, RESPONSAVEL, OBS, TEL_RESPONSAVEL, DATAMOD)
     values (PCLIENTE, PNOME_FAZENDA, PENDERECO, PNUMERO, PBAIRRO, PCIDADE, PESTADO, PCEP, PRESPONSAVEL, POBS, PTEL_RESPONSAVEL, PDATAMOD);
 end IF;
END

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3144 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.