Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
Obtener ultimo registro ingresado

Hola, tengo una tabla en access llamada turnos con su id_turno.
Necesito obtener desde codigo delphi el ultimo id_turno ingresado, y enviarlo por parametro en Id.
lo intentaba hacer de la siguiente forma pero no se cual es la sintaxis correcta.

with queryturnos do
begin
SQL.Clear;
SQL.Add('Select * From turnos');
Open;
id:=FieldByName('id_turno').AsInteger;
end;


gracias por la ayuda!!
Responder Con Cita
  #2  
Antiguo 28-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #3  
Antiguo 28-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
Disculpas! para la proxima lo tengo en cuenta.
Responder Con Cita
  #4  
Antiguo 28-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si buscas el mayor número:
Código SQL [-]
select max(idturno) from turnos
Ahora bien, si ese idturno no es un número incrementable, deberías buscar por otro dato, por ejemplo, una fecha de creación.
Responder Con Cita
  #5  
Antiguo 28-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
claro es lo que intente, pero me al momento de obtener y inserto ese "ultimo_id" en un edit, me trae un valor extraño, por ejempl 190023, cosas ilogicas, como si me obtuviera basura.

id_turno es un autonumerico.
Responder Con Cita
  #6  
Antiguo 28-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, no somos adivinos, copia aquí todo el código y explica exactamente qué estás haciendo y cómo.
Responder Con Cita
  #7  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
bien, aca les dejo lo que intento hacer..

procedimiento cargar el turno, pero antes de cargar quiero obtener el ultimo turno cargado (siempre va a haber 1 como minimo) para luego insertar en otra tabla TurnoCliente, inserto el id_turno y id_cliente

Código Delphi [-]
procedure TFormTurnos.btnCargarTurnoClick(Sender: TObject);
var
  queryturnos:TADOQuery;
  queryProfesor:TADOQuery;
  queryTurnoCliente:TADOQuery;
  id_turno:Integer;
  hora:string;
begin
 queryturnos:=FormMenuPrincipal.queryTurnos;
 queryProfesor:=FormMenuPrincipal.queryprofesores;
 queryTurnoCliente:=FormMenuPrincipal.queryTurnocliente;
 //capturar_IdProfesor(queryProfesor,comboboxProfesores.Text,Id);

  If(edtTurnohorario.Text<>'')and(edtTurnoDisponibilidad.Text<>'')
  then
    begin
    Cargar_turno(QueryTurnos,edtTurnohorario.Text,StrToInt(edtTurnoDisponibilidad.Text),comboboxDia.Text  ,comboboxProfesores.text);
   //hasta aca funciona correctamente
    
    // aca necesito capturar el id_turno cargado para insertar en tabla clienteturno

    //capturar_idTurno(queryturnos,hora,id_turno);

 // luego inserto en la tabla TurnoCliente el id_turno (es el ultimo turno obtenido)

    Cargar_TurnoCliente(queryTurnoCliente,id_turno);

    MessageDlg('¡Se ha cargado con exito el nuevo turno!',mtConfirmation,[mbOK],0);
    end
  else
  begin
    MessageDlg('¡Hay campos incompletos!',mtConfirmation,[mbOK],0);
  end;
  edtTurnohorario.Clear;
  edtTurnoDisponibilidad.Clear;
  edtTurnohorario.SetFocus;
end;



procedimiento capturar id_UltimoTurno
Código Delphi [-]
Procedure capturar_IdTurno (Queryturnos:TADOQuery;hora:string; var id:integer);
begin
  with Queryturnos do
   begin
     SQL.Clear;
     SQL.Add('select max(idturno) from turnos);
     Open;
     id:=FieldByName('Id_turno').AsInteger;
   end;
end;


gracias!!!!
Responder Con Cita
  #8  
Antiguo 29-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Código Delphi [-]
SQL.Add('select max(idturno) from turnos);

Para empezar, ahí falta la comilla de cierre.

Código Delphi [-]
SQL.Add('select max(idturno) from turnos');
Responder Con Cita
  #9  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
error de tipeo, de todas formas me obtiene basura y no el maximo id_turno..gracias
Responder Con Cita
  #10  
Antiguo 29-06-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por maxi915 Ver Mensaje
error de tipeo,
Se debe copiar y pegar el código. Si escribes otra cosa por cualquier motivo...
Responder Con Cita
  #11  
Antiguo 29-06-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola maxi915.

Cita:
Empezado por maxi915 Ver Mensaje
...
procedimiento capturar id_UltimoTurno

[/delphi]
Código Delphi [-]
Procedure capturar_IdTurno (Queryturnos:TADOQuery;hora:string; var id:integer);
begin
  with Queryturnos do
   begin
     SQL.Clear;
     SQL.Add('select max(idturno) from turnos);
     Open;
     id:=FieldByName('Id_turno').AsInteger;
   end;
end;
Lo que sucede que el campo "Id_turno" no está definido para la consulta.

Intenta de este modo:
Código Delphi [-]
   ...
   with Queryturnos do
   begin
     SQL.Text := 'SELECT MAX(IDTURNO) AS MAX_ID FROM TURNOS';
     Open;
     id := FieldByName('MAX_ID').AsInteger;
   end;
   ...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
muchas gracias por la ayuda, lo voy a probar!
lo utilizo tal cual esta aca?, digo por max_id no se si te referis a sintaxis o a mi variable


Código SQL [-]
with Queryturnos do
   begin
     SQL.Text := 'SELECT MAX(IDTURNO) AS MAX_ID FROM TURNOS';
     Open;
     id := FieldByName('MAX_ID').AsInteger;
   end;
Responder Con Cita
  #13  
Antiguo 29-06-2014
maxi915 maxi915 is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 63
Poder: 13
maxi915 Va por buen camino
gracias por la ayuda! solucionado con ese ultimo aporte!!!!
Responder Con Cita
  #14  
Antiguo 29-06-2014
adrall adrall is offline
Miembro
 
Registrado: ene 2007
Posts: 94
Poder: 18
adrall Va por buen camino
Tambien puedes probar si la base de datos soporta esta funcion: "SELECT LAST_INSERT_ID()" que devuelve el ultimo valor del campo autoincrementado.

Algo así:
Código Delphi [-]
         
Query1.SQL.Text('SELECT LAST_INSERT_ID()');          
Query1.Open;          
iTurno := Query1.Fields[0].asInteger;          
Query1.Close;

Última edición por adrall fecha: 29-06-2014 a las 12:05:51.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener el ultimo registro toni.vi SQL 2 09-12-2009 13:02:58
El ultimo valor ingresado pablonill SQL 5 13-12-2007 13:20:28
como obtener el ultimo registro gustavoh .NET 2 17-07-2006 14:29:07
Obtener el último registro insertado mutant09 SQL 3 04-05-2004 20:59:21
Obtener el último registro juanchi Conexión con bases de datos 2 06-02-2004 01:52:21


La franja horaria es GMT +2. Ahora son las 00:13:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi