Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   restar entre 2 tablas de mysql y mostrar en reporte (https://www.clubdelphi.com/foros/showthread.php?t=80127)

Caral 07-09-2012 17:00:23

Hola
Tal vez mysql no acepta max(), trata de usar Last(), asi:
Código Delphi [-]
If combobox1.text = 'Entrada' then  
   begin
   A:= 'E';
   end
   else begin
   A:= 'S';
   end;
  query.Close;

  query.SQL.Text:='SELECT Last(folio) FROM entradas where tipo = '''+ A + '*'' ';
  query.Open;
  folio.text := IntToStr(query.FieldByName('folio').asInteger +1) ;
Saludos

edgar_prospero 07-09-2012 17:19:45

no tampoco lo acepta no es correcta marca error de sintaxis, no se como se puda adecuar de la manera que yo lo hagopor jemplo con el siguiente codigo es como pongo mi utlimo folio +1 y no me da problema pero a esto no se puede acomodar nomas siempre me pone 1y como observacion en la parte qe le pngo +1 si le llego a poner +20 en el edit de folio aparece 20

Código Delphi [-]
query.Close;
     query.SQL.Text:='SELECT folio FROM entradas ORDER BY folio desc LIMIT 1';
     query.Open;
    folio.text := IntToStr(query.FieldByName('folio').asInteger +1) ;

roman 07-09-2012 18:04:01

Cita:

Empezado por edgar_prospero (Mensaje 442285)
no tampoco lo acepta

Desde luego que lo acepta. MySQL sí admite la función max.

// Saludos

edgar_prospero 07-09-2012 18:06:10

pues entonces no se porque cuando pongo max(folio) me marca esto: query:field 'folio' not found y pues si existe folio y esta bien escrito

roman 07-09-2012 18:26:33

El error no te lo da MySQL. Si fuera así, el error sería:

Código SQL [-]
Unknown column 'folio' in 'field list'

El error te lo está dando el componente query y la razón es muy sencilla. En tu consulta no hay ningún campo llamado folio. Cuando pones:

Código SQL [-]
select max(folio) from entradas

el resultado es un conjunto de datos con una columna y esa columna se llama 'max(folio)' y no folio.

Lo puedes resolver muy fácil poniendo un alias a la consulta:

Código SQL [-]
select max(folio) as folio from entradas

O bien, leyendo el dato por su índice en lugar de su nombre:

Código Delphi [-]
folio.text := IntToStr(query[0].asInteger  + 1) ;

// Saludos

edgar_prospero 07-09-2012 18:42:13

pues efectivamente ya con el alias no marca error aunque todavia no logro mi objetivo que es si el ultimo folio usado es 3 en el edit folio me aparesca 4 que seria el siguiente a usar

edgar_prospero 07-09-2012 19:54:55

pues como no logro hacer qe me quede estoy intentando otra cosa que pongo a continuacion pero nomas me funciona una vez al cargar el form el combobox esta en entradas y el nuemro de folio que le corresponde al mover el combobox a salidas el nuemro de folio se cambia al que le corresponde pero nomas esa vez me funciona si le vuelvo a poner en entradas ya nose mueve folio:

Código Delphi [-]
procedure TForm4.ComboBox1Change(Sender: TObject);

begin

if (ComboBox1.Text='ENTRADA') THEN
        begin
 query.Close;
     query.SQL.Text:='SELECT folio FROM entradas ORDER BY folio desc LIMIT 1';
     query.Open;
    folio.text := IntToStr(query.FieldByName('folio').asInteger +1);

        end
       else begin
 if (ComboBox1.Text='SALIDAS') THEN

 query.Close;
     query.SQL.Text:='SELECT folio2 FROM entradas ORDER BY folio2 desc LIMIT 1';
     query.Open;
    folio.text := IntToStr(query.FieldByName('folio2').asInteger +1) ;

       end;

edgar_prospero 07-09-2012 20:53:39

una disculpa fue error mio en lugar de entrada era entradas ya con ese cambio se logro lo que queria jeje muchas gracias por su ayuda este hilo ya es demasiado grande seguire avanzando y para mi siguiente duda abrire uno nuevo

Casimiro Noteví 07-09-2012 21:58:11

Cita:

Empezado por edgar_prospero (Mensaje 442345)
una disculpa fue error mio en lugar de entrada era entradas ya con ese cambio se logro lo que queria jeje muchas gracias por su ayuda este hilo ya es demasiado grande seguire avanzando y para mi siguiente duda abrire uno nuevo

Si es una duda que no tiene nada que ver con esta, en caso contrario debes seguir aquí.


La franja horaria es GMT +2. Ahora son las 19:08:20.

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