Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2005
masnovita masnovita is offline
Registrado
 
Registrado: oct 2005
Posts: 4
Poder: 0
masnovita Va por buen camino
Como recojo el resultado de SELECT MAX(ID)

Hola.
Como puedo recoger el resultado de esta consulta?

dm1.zQtemp.SQL.Clear;
dm1.zQtemp.SQL.Add('Select MAX(ID) from operacions');
dm1.zQtemp.ExecSQL;

He probado varias animaladas como esta, pero sin resultado
Showmessage(dm1.Dstemp.DataSet.fieldbyname('MAX(ID)').AsString);

Tengo una tabla operacions con campo id autonumerico.
Cuando hago un insert necesito saber el id que ha generado para ponerlo en la tabla detalle de operacions.
No se si es lo mas correcto mirar justo despues de hacer el insert el id mas grande.
Gracias!
Responder Con Cita
  #2  
Antiguo 04-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por masnovita
Hola.
Como puedo recoger el resultado de esta consulta?

dm1.zQtemp.SQL.Clear;
dm1.zQtemp.SQL.Add('Select MAX(ID) from operacions');
dm1.zQtemp.ExecSQL;
Prueba así:

Código Delphi [-]
          dm1.zQtemp.SQL.Clear;
          dm1.zQtemp.SQL.Add('Select MAX(ID) maximo from operacions');
          dm1.zQtemp.Open;

Ahora lo puedes llamar desde código como un campo más..
Además cuando utilizas un Select el método a usar es OPEN.

Cita:
Empezado por masnovita
Tengo una tabla operacions con campo id autonumerico.
Cuando hago un insert necesito saber el id que ha generado para ponerlo en la tabla detalle de operacions.
No se si es lo mas correcto mirar justo despues de hacer el insert el id mas grande.
Gracias!
Puede ser una forma de hacerlo, para mí es correcto....
__________________
No todo es como parece ser...
Responder Con Cita
  #3  
Antiguo 04-10-2005
masnovita masnovita is offline
Registrado
 
Registrado: oct 2005
Posts: 4
Poder: 0
masnovita Va por buen camino
Gracias.

Por cierto, que velocidad de respuesta!!!!

1K gracias!
Responder Con Cita
  #4  
Antiguo 04-10-2005
omy omy is offline
Miembro
 
Registrado: ago 2003
Ubicación: Acapulco gro.
Posts: 100
Poder: 21
omy Va por buen camino
Talking Hola espero ayude

Yo lo hice asi

sql:= 'Select count (bandera) from tiempocamion where bandera = '+ inttostr(aqdumy2.FieldValues['id']);
AQchecatiempocamion.SQL.Clear;
AQchecatiempocamion.SQL.Add(sql);
AQchecatiempocamion.Active:=true;

variable := AQchecatiempocamion.FieldValues['Expr1000'];

Es lo mismo para el max

nota. si no sirve me avisas porfa
__________________
omar velazquez
Responder Con Cita
  #5  
Antiguo 04-10-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 19
Chente(rMan) Va por buen camino
Como que eso que haces no lo veo muy correcto, que pasa si tienes muchos usuarios insertando a la base de datos, podrias obtener otro número que no fue el que te corresponde a ti, yo utilizo MS-SQL y lo hago desde un procedimiento almacenado.

Código SQL [-]
declare @id
insert tabla (fecha)
values ('01/01/2005')
set @id = scope_identity()
select @id as ID

ejecutas el Proc desde delphi y recojes el resultado.


Saludos.

Vicente López.
Responder Con Cita
  #6  
Antiguo 04-10-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
La parte propuesta por Chente(rMan) me parece la mas adecuanda y mas aún para un Sistema Cliente-Servidor.
Cita:
Empezado por omy
sql:= 'Select count (bandera) from tiempocamion where bandera = '+ inttostr(aqdumy2.FieldValues['id']);
....
....
variable := AQchecatiempocamion.FieldValues['Expr1000'];
Esta asignación del "campo" creado por la sentencia no es muy aceptable. Lo aconsejable es asignarle un Alias a la consulta, ya que esta campo (creado por la Motor Db) podría ser diferente, dependiendo la Base de datos
Código Delphi [-]
 sql:= 'Select count (bandera) as Total from tiempocamion where bandera = :id ';
AQchecatiempocamion.SQL.Clear;
AQchecatiempocamion.SQL.Add(sql);
AQchecatiempocamion.ParamByName('id').AsString:=aqdumy2.FieldValues['id'];
AQchecatiempocamion.Open;
Puedes ver como cree un alias(TOTAL)

Pd: omy:Usa las etiquetas
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #7  
Antiguo 05-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Para usar SCOPE_IDENTITY( ), hay que definir un campo en la tabla de este tipo, como se ve en la ayuda de SQL Server.
__________________
No todo es como parece ser...
Responder Con Cita
  #8  
Antiguo 05-10-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 19
Chente(rMan) Va por buen camino
Cita:
Empezado por lucasarts_18
Hola:

Para usar SCOPE_IDENTITY( ), hay que definir un campo en la tabla de este tipo, como se ve en la ayuda de SQL Server.
Correcto Lucas, masnovita nos dice que tiene un campo autonumérico (supongo yo que autoincrementable), y si estamos hablando de MS-SQL tiene que estar definido como Identity, si estoy mal, que alguien me corriga.

Por cierto, masnovita, ¿que BD usas?


Saludos.

Vicente López.
Responder Con Cita
  #9  
Antiguo 05-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

He hecho algunas pruebas y estoy totalmente agradecido a chente(rman) por la idea...no conocía esto en SQL Server.

Pues les dejo el ejemplo a nuestra amiga..

Código SQL [-]
  Insert into PPQOrders values (6,'nombre','Ciudad','8847','2005-08-15')
  
  SELECT SCOPE_IDENTITY()
  
  GO

Hasta luego y gracias.....
__________________
No todo es como parece ser...

Última edición por lucasarts_18 fecha: 05-10-2005 a las 16:51:18.
Responder Con Cita
  #10  
Antiguo 05-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por Chente(rMan)
y si estamos hablando de MS-SQL tiene que estar definido como Identity, si estoy mal, que alguien me corriga.
Estás en lo correcto!!!!....
__________________
No todo es como parece ser...
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


La franja horaria es GMT +2. Ahora son las 10:34:17.


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