Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   agregar campo a consulta sql (https://www.clubdelphi.com/foros/showthread.php?t=92535)

ebeltete 22-11-2017 14:37:34

agregar campo a consulta sql
 
Hola, estoy haciendor una consulta a una tabla paradox desde un query y quiero consultar todos los campos y ademas que me aparzca un campo en la consulta sin que lo agrege a la tabla original. seria algo como
Código SQL [-]
select *, nuevocampo from "tabla.db"

saludos

ecfisa 22-11-2017 15:41:17

Hola.

Y ese campo ("nuevocampo"), ¿ de donde se debe obtener ?

Saludos :)

ebeltete 22-11-2017 16:03:23

bueno en realidad quiero obtener una counsulta con un orden aleatorio, se me ocurria llenar el campo nuevo con un random, recorriendo la tabla, pero tal vez exista en paradox un order by aleatorio

manelb 22-11-2017 16:18:59

Cita:

Empezado por ebeltete (Mensaje 522741)
Hola, estoy haciendor una consulta a una tabla paradox desde un query y quiero consultar todos los campos y ademas que me aparzca un campo en la consulta sin que lo agrege a la tabla original. seria algo como
Código SQL [-]
select *, nuevocampo from "tabla.db"

saludos

Pues algo como esto debería funcionar...

Código SQL [-]
select nuevocampo, tbl.* from tabla tbl

De todas formas lo del "nuevocampo" no lo veo muy claro...

Saludos

ebeltete 22-11-2017 16:52:04

Código SQL [-]
select nuevocampo, tbl.* from tabla tbl
Esto no me funciona, tal vez exista algun select aleatorio en paradox?
he buscado pero no encontre nada.

movorack 22-11-2017 16:58:52

Puedes crear un campo calculado en el dataset y en el programa alimentarlo con un valor aleatorio. Si accedes a este dataset con un clientdataset puedes colocar ese campo calculado como índice.

roman 22-11-2017 17:07:56

Cita:

Empezado por ebeltete (Mensaje 522752)
Código SQL [-]
select nuevocampo, tbl.* from tabla tbl
Esto no me funciona, tal vez exista algun select aleatorio en paradox?
he buscado pero no encontre nada.

Dudo mucho que Paradox tenga algo así, de hecho me asombra que todavía tenga vida :p. Recuerda:



LineComment Saludos

movorack 22-11-2017 17:12:35

Será? En la compañía aun hay muchos programas con paradox como tablas temporales y hay una gatera impresionante en las calles.

ecfisa 22-11-2017 19:34:39

Hola.

Paradox no soporta funciones "tan sofisticadas", creo que la sugerencia de movorack es tu solución.

Un ejemplo sobre la tabla Country.db que viene con Delphi.
Código Delphi [-]
...
implementation {$R *.dfm}

const
   MAX_RND = 100;
type
  TQueryEx = class(TQuery);

procedure TForm1.FormCreate(Sender: TObject);
var
  fld: TField;
begin
  Randomize;
  Query1.SQL.Text := 'SELECT * FROM COUNTRY';
  TQueryEx(Query1).FieldDefs.Update;
  TQueryEx(Query1).CreateFields;
  fld := TIntegerField.Create(Query1);
  fld.FieldName  := 'RNDFLD';
  fld.Calculated := True;
  fld.DataSet    := Query1;
  Query1.Open;
end;

procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
  Query1.FieldByName('RNDFLD').AsInteger := Random(MAX_RND) + 1; // 1 - MAX_RND
end;

end.
Podes ahorrarte el código de creación si lo realizas en tiempo de diseño.

Saludos :)

Edito: (También te recomiendo migrar a otro gestor de base de datos )

ebeltete 22-11-2017 19:51:32

Es un viejo programa que lo hice hace 20 años y todavia da sus frutos en un Windows xp, queria hacerle una nueva funcion para poder usarlo 20 años mas JAJA!!.
Las viejas tablas Paradox todavia me dan satisfacciones.
Lo que hice fue recorrer todos los renglones de la tabla y completar un campo 'lugar' con un numero aleatorio, luego realizo una consulta en orden de ese campo (
Código SQL [-]
order by lugar
). Es un poco lento el proceso pero funciona.
Queria saber si había algo mas rapido, como por ejemplo llenar ese campo en la consulta.
lo de ecfisa funciona, pero no puedo ordenar la consulta con el campo creado, o si?

Saludos

ecfisa 22-11-2017 21:16:31

Hola.
Cita:

Empezado por ebeltete (Mensaje 522774)
...
lo de ecfisa funciona, pero no puedo ordenar la consulta con el campo creado, o si?

Lamentablemente no, por que el campo que figure en la cláusula ORDER BY deberá estar comprendido en el conjunto resultante de la consulta .

Saludos :)


La franja horaria es GMT +2. Ahora son las 14:40:43.

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