Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   mostrar todos los campos excentuando un campo (https://www.clubdelphi.com/foros/showthread.php?t=74190)

ingabraham 02-09-2010 21:07:56

Excluir Campos En Un Select
 
Select * From Tablax
Codigo
Nombre
Direccion
Estado

Quiero Que No Me Muestre El Estado,
Es Algo Asi Como

Select *,-estado From Tablax


No Quiero Esto!
Select Codigo,nombre,direccion From Tablax

Debido A Que Son Muchos Campos.

Ñuño Martínez 03-09-2010 09:32:21

Que yo sepa, no se puede. O pones "*" o pones los campos uno a uno. Al menos así es en el SQL normalizado. Ahora bien, no sé si el gestor que utilices permite hacerlo con alguna extensión al lenguaje, aunque lo cierto es que lo dudo.

Una posible solución es utilizar "vistas", pero creo que eso también depende del gestor.

Lepe 03-09-2010 17:49:04

Como dice Ñuño, no tienes nada que haga lo que pides.

Lo que suele hacerse es "inventar" una opción para que la ocultar una columna en un grid, se quite la columna del select (por ejemplo), o también hacer el select * aunque no se necesite todos los campos (esto es ineficiente, pero suele ocurrir que necesitas un campo para realizar operaciones aunque el usuario no quiera verlo en una rejilla de datos.

Código Delphi [-]
var 
  campos :string;
begin 
  campos := 'select ';
  for i:= 0 to grid1.columns.count-1 do
     if grid1.columns[i].visible then campos := campos + grid1.columns[i].Field.FieldName + ', '
  grid1.dataset.sql.text := copy(campos, 1, length(campos) -2) ; //quitar la ultima coma y espacio
  grid1.dataset.sql.add('from mi tabla');
  grid1.dataset.Close;
  grid1.dataset.Open;
end;
(hecho de memoria... tendrá algun error por ahí).

En caso de que no te sirva esta opción, recuerda que también puedes iterar por Dataset.TFields, por ejemplo:
Código Delphi [-]
campos := 'select ';
for i:= 0 to dataset.fields.count-1 do
  if pos(lowercase(dataset.fields[i].fieldname), 'codigo;nombre;Direccion;estado') < 1 then campos := campos + dataset.fields[i] + ', '

ingabraham 03-06-2011 23:44:30

mostrar todos los campos excentuando un campo
 
hola
tengo una tabla con mas de 50 campo

SELECT * FROM CONTRATOS

ahora esto me muestra todos los campos.

pero quiero que el primer campo no me lo muestre

ContraVeneno 04-06-2011 00:37:44

Código SQL [-]
Select Campo2, campo3, campo4, campo5.... campo50
From TuTabla
Where ....

ingabraham 04-06-2011 01:26:45

jeje, y asi hasta llegar al campo 50.
jeje muy gracioso.

y no son 50 campos son 105 campos.

Casimiro Notevi 04-06-2011 10:34:46

No hay otra forma, salvo que uses alguna base de datos que no nos has dicho. Lo normal es que no se pueda.

ecfisa 04-06-2011 10:47:05

Cita:

Empezado por ingabraham (Mensaje 402554)
jeje, y asi hasta llegar al campo 50.
jeje muy gracioso.

y no son 50 campos son 105 campos.

La propuesta de ContraVeneno no tiene sentido irónico alguno. Desde la cláusula SELECT, no hay otro modo de hacerlo que como él te está mencionando.

Este mismo tema fué tratado el año pasado bajo el título: Excluir Campos En Un Select. ;)


Saludos.

Casimiro Notevi 04-06-2011 11:19:34

Cita:

Empezado por ecfisa (Mensaje 402571)
La propuesta de ContraVeneno no tiene sentido irónico alguno. Desde la cláusula SELECT, no hay otro modo de hacerlo que como él te está mencionando.
Este mismo tema fué tratado el año pasado bajo el título: Excluir Campos En Un Select. ;)
Saludos.

Y además iniciado por la misma persona :)
He unido ambos hilos porque es la misma pregunta, del mismo usuario.

ecfisa 04-06-2011 12:30:34

Cita:

Empezado por Casimiro Notevi (Mensaje 402575)
Y además iniciado por la misma persona :)

Así es. Mi intención era recordarle, pero se me escapó lo de combinar los temas. :o


Saludos. :)

Casimiro Notevi 04-06-2011 12:58:25

Cita:

Empezado por ecfisa (Mensaje 402577)
Así es. Mi intención era recordarle, pero se me escapó lo de combinar los temas. :o
Saludos. :)

Bueno, lo he hecho porque es el mismo usuario y no se "desvirtúa" nada el hilo :)

Diego666 05-06-2011 22:35:05

y por que no haces una funcion como parametros de la tabla y los campos a excluir ?
es decir abres la tabla verificas registras los campos y ademas excluyes los que desees .. afecta un poco el performance..
pero si es lo que necesitas...

Saludos


La franja horaria es GMT +2. Ahora son las 20:47:30.

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