Ir al contenido



Foto

ultimo registro +1


  • Por favor identifícate para responder
7 respuestas en este tema

#1 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 25 abril 2012 - 11:34

que hay amigos aqui con una duda a ver si me pueden ayudar tengo el siguiente codigo el cual me muestra el ultimo registro de un campo llamado folio en una base de datos en mysql, este me lo muestra enun edit lo que quiero lograr es que si mi ultimo registro es por ejemplo el 21 en el edit me muestre el numero 22, o sea un numero  mas al ultimo registro.



delphi
  1. procedure TForm1.FormActivate(Sender: TObject);
  2. begin
  3. query.Close;
  4.     query.SQL.Text:='SELECT folio  FROM datos ORDER BY folio desc LIMIT 1';
  5.     query.Open;
  6.       folio.text := query.FieldByName('folio').asString ;
  7.  
  8. end;


  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 25 abril 2012 - 11:38

Hola
El numero de folio en teoria deberia de ser integer en la Tabla:



delphi
  1. procedure TForm1.FormActivate(Sender: TObject);
  2. begin
  3. query.Close;
  4. query.SQL.Text:='SELECT folio  FROM datos ORDER BY folio desc LIMIT 1';
  5. query.Open;
  6. folio.text := IntToStr(query.FieldByName('folio').asInteger +1) ;
  7. end;


Saludos
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 26 abril 2012 - 08:30

O algo como un max + 1 ???



delphi
  1.     procedure TForm1.FormActivate(Sender: TObject);
  2.     begin
  3.     query.Close;
  4.     query.SQL.Text:='SELECT Max(folio) as maximo  FROM datos ';
  5.     query.Open;
  6.     folio.text := IntToStr(query.FieldByName('maximo').asInteger +1) ;
  7.     end;



Nada diferente, es sólo que me parece más directo  *-)  :D

Saludox ! :)
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.262 mensajes
  • LocationArgentina

Escrito 26 abril 2012 - 11:44

¿Y porqué no hacer directamente que la consulta regrese el +1 y no estar sumando "fuera"?

select Max(folio) + 1 as Siguiente from datos


Saludos,
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 26 abril 2012 - 11:53

Pues si... también



delphi
  1. procedure TForm1.FormActivate(Sender: TObject);
  2.     begin
  3.     query.Close;
  4.     query.SQL.Text:='SELECT Max(folio) + 1 as siguiente FROM datos ';
  5.     query.Open;
  6.     folio.text := query.FieldByName('siguiente').AsString ;
  7.     end;



Y nos ahorramos un IntToStr  *-)  (y)  :D  :D

Saludox ! :)
  • 0

#6 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 26 abril 2012 - 07:24

Hola
La opción de Delphius no me gusta, nos deja mal parados, no se vale. *-) :p :D
Saludos
  • 0

#7 edgar_prospero

edgar_prospero

    Advanced Member

  • Miembros
  • PipPipPip
  • 136 mensajes

Escrito 27 abril 2012 - 08:23

muchas gracias por su ayuda quedo solucionado mi problema (b) (b) (b)
  • 0

#8 LuNaTk

LuNaTk

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 27 octubre 2012 - 10:03

Un punto qué hay que tener en cuenta es que si la tabla esta vacía el resultado será null, lo digo por experiencia, cosa que ocurre una única vez cuando el sistema se instala por primera vez y sé requiere que las tablas estén vacías al Iniciar.

Sólo faltaría Agregar un isnull(max(folio),0)+1 en él select
  • 0