logo DevMedia  
Home Entenda o site Revistas Canais Cursos Palestras Suporte Fórum +Serviços Assine Compre Créditos

Edição do Mês
  Fórum DevMedia
Fórum de Discussão
Conheça também o NOVO fórum da DevMedia, no endereço: www.devmedia.com.br/forum
O novo fórum possui diversas vantagens! Saiba mais em
www.devmedia.com.br/articles/viewcomp.asp?comp=14726
Estamos sempre trabalhando na melhora do site como um todo! Bons códigos!
Equipe DevMedia

 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos  RegistrarRegistrar   
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 
Edição do Mês

Last_Insert_Id() só retorna zero?????
 
Novo Tópico   Responder Mensagem    Fórum DevMedia - Índice do Fórum -> MySQL
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
geucimar
Novato


Registrado em: Terça-Feira, 2 de Outubro de 2007
Mensagens: 13

MensagemEnviada: Qui Nov 15, 2007 11:21 pm    Assunto: Last_Insert_Id() só retorna zero????? Responder com Citação

Alguém poderia me ajudar. Confused Estou usando Delphi 7, MySql 5 e Zeos para conexão de dados. Após executar a inserção dos dados na primeira tabela, eu tento pegar o Last_Insert_Id() da tabela Pessoa, mas a função só retorna zero.

C?o:

           // Insere na primeira tabela
            sqlCondominos.SQL.clear;
            sqlCondominos.SQL.add('insert into PESSOA ' +
                          '(PESSOA.NOME, PESSOA.ENDERECO, PESSOA.NUMERO, ' +
                          ' PESSOA.CEP, PESSOA.RG, PESSOA.SEXO, ' +
                          ' PESSOA.PROFISSAO, PESSOA.DATANASC, ' +
                          ' PESSOA.DATACAD, PESSOA.DATAALT) ' +
                 'values  ' +
                          '("'+ txtNome.Text + '","' + txtEndereco.Text + '","'
                              + txtNumero.Text + '","' + txtCep.Text + '","'
                              + txtRG.Text +'","' + cbxSexo.Text + '","' + txtProfissao.Text + '","'
                              + FormatDateTime('yyyyMMdd',dtpDtNasc.Date) + '","'
                              + FormatDateTime('yyyyMMdd',Date) + '","'
                              + FormatDateTime('yyyyMMdd',Date) + '")');
            sqlCondominos.ExecSql;
            sqlTemp.SQL.Clear;
            sqlTemp.SQL.Add('Select Last_Insert_Id() as CODPES');
            sqlTemp.ExecSql;
            idPessoa := sqlTemp.FieldByName('CODPES').AsInteger;
            ShowMessage('O id é: ' + IntToStr(idPessoa));
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
carlosphp
Novato


Registrado em: Segunda-Feira, 31 de Março de 2008
Mensagens: 4

MensagemEnviada: Seg Mar 31, 2008 1:25 pm    Assunto: Last_insert _id Responder com Citação

Cara,
não sei como é no delphi, mas no o comando last_insert_id() tem que receber como parametro o link da conexão.

ex: $ultimo_id = last_insert_id($conexao);

Espero ter dado uma luz.
Abraços
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar Email
MySYS
Membro Senior


Registrado em: Quarta-Feira, 14 de Mai de 2003
Mensagens: 523
Localiza?: Cuiabá - MT

MensagemEnviada: Sáb Abr 05, 2008 6:14 pm    Assunto: Responder com Citação

LAST_INSERT_ID([expr])
Retornao´ultimovalorgeradoautomaticamentequetenhasidoinseridoemum
coluna AUTO_INCREMENT. Seeundefined [mysql_insert_id()],pageunde-
fined.
mysql>SELECTLAST_INSERT_ID();
->195
O ´ultimo ID que foi gerado e mantido no servidor em uma base por conex?ao.
Elen?aoser´aalteradoporoutrocliente.Elenemmesmoser´aatualizadosevoc?e
atuializaroutracoluna AUTO_INCREMENT comumvalorn?ao-m´agico(Isto´e,um
valroquen?aoseja NULL e nem 0).
Sevoc?einserirmuitosregistrosaomesmotempocomumainstru¸c?aoinsert,
LAST_INSERT_ID() retornaovalordaprimeiralinhainserida.Araz?aopara
´
isto´etornarpossivelreproduzirfacilmenteamesmaintru¸c?ao INSERT emalgum
outroservidor.
Se expr ´edadocomumargumentopara LAST_INSERT_ID(), ent?ao o valor
doargumento´eretornadopelafun¸c?aoe´econfiguradocomoopr´oximovalor
paraserretornadopela LAST_INSERT_ID(). Isto pode ser ´util para simular
sequ?encias:
Primeirocrieatabela:
mysql>CREATETABLEsequencia(idINTNOTNULL);
mysql>INSERTINTOsequenciaVALUES(0);
Ent?aoatabelapodeserusadaparagerarsequ?enciaden´umeroscomoestes:

mysql>UPDATEsequenciaSETid=LAST_INSERT_ID(id+1);
Voc?epodegerarsequ?enciassemchamar LAST_INSERT_ID(), mas a utilidade
deseusarafun¸c?aodestemodo´equeovalorID´emantidonoservidorcomoo
´ultimovalorgeradoautomaticamente(seguroparamulti-usur´ario).Voc?epode
recuperaranovaIDcomovoc?eleriaqualquervalor AUTO_INCREMENT normal
noMySQL.Porexemplo, LAST_INSERT_ID() (semumargmento)retornar´aa
novaID.Afun¸c?ao mysql_insert_id() daAPICtamb´empodeserusadapara
obterovalor.
Notequecomomysql_insert_id()s´o´eatualizadodepoisdeinstru¸c?oesINSERT
e UPDATE, voc?e n?ao pode utilizar a fun¸c?ao da API C para recuperar o valor para
LAST_INSERT_ID(expr) depoisdeexecutaroutrainstru¸c?aoSQLcomo SELECT
ou SET.
_________________

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar Email Visitar a homepage do Usuário MSN Messenger
Luiz @nton&o
Novato


Registrado em: Quinta-Feira, 19 de Março de 2009
Mensagens: 1

MensagemEnviada: Qui Mar 19, 2009 3:51 pm    Assunto: Erro Responder com Citação

Cara o Erro está em "sqlTemp.ExecSql", quando for dar o select LAST_INSERT_ID() tem que ser sqlTemp.Open.

Um Abraço
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    Fórum DevMedia - Índice do Fórum -> MySQL Todos os horários são GMT - 3 Hours
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibído.
Responder Tópicos Proibído
Editar Mensagens: Proibído.
Excluir Mensagens: Proibído.
Votar em Enquetes: Proibído.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB