Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Campo concatenado

Buenas tardes a todos.

Tengo una duda sobre como usar el valor de un campo concatenado.

Semanalmente me pasan un fichero txt con los registros de la gente que posee licencia de ciclismo para confeccionar las tablas mater, el formato de este archivo es:

ID, Apellido1, Apellido2, Nombre, Licencia, etc.

Yo importo este fichero a una tabla Firebird sin ningun problema, pero a mi me interesa obtener el formato Apellido1 Apellido2, Nombre, con lo cual realizo una sentencia sql así:

Código SQL [-]
 
SELECT ID, APELLIDO1||' '||APELLIDO2||', '||NOMBRE AS NOMBRE1, LICENCIA

El problema que tengo es que el valor obtenido NOMBRE1 no me vale para hacer ordenaciones y busquedas secuenciales; mi pregunta es:

Se puede hacer algo con estos datos para poder usar este campo en diferentes consultas?

La tabla mueve aproximadamente 55.000 a final de temporada menos al inicio ya que se van incrementando semanalmente.

Gracias por adelantado

Josep
Responder Con Cita
  #2  
Antiguo 15-12-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
Hola,
a mi me pasa lo mismo y yo trabajo con tablas de access, tengo en una consulta mezclado el papel y el adhesivo de un material y lo llamo mezcla, pero no puedo hacer consultas ni ordenación por este campo, lo que hice para solucionar el asunto es controlar cuando se está buscando u ordenando por este campo y entonces utilizar los campos que forman el campo mezcla individualmente.
Cuando alguien busca por mezcla en la consulta de SQL pongo:

Código SQL [-]
SELECT * FROM articulos WHERE (papel LIKE 'texto' OR adhesivo LIKE 'texto')

y en la ordenacion:

Código SQL [-]
ORDER BY papel,adhesivo

No se si te ayuda pero por lo menos mal de muchos...

Saludos.
Responder Con Cita
  #3  
Antiguo 15-12-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por jafera Ver Mensaje
Se puede hacer algo con estos datos para poder usar este campo en diferentes consultas?
Puedes crearte un campo que sea la suma de apellido1 y apellido2, lo llamas, por ejemplo, apellidos, y listo.
Responder Con Cita
  #4  
Antiguo 16-12-2011
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Gracias por las respuestas.

El problema basicamente radica en que no solo ordeno por estos campos, en un combo box puedo seleccionar por donde quiero ordenar, Nombre, Licencia, DNI, etc.

Despues viene el problema cuando al cambiar en onselect del combo box me lanza el error de que no encuentra el campo por el que quiero ordenar

Código Delphi [-]
 
procedure TF_MasterDetall.ComboBox1Select(Sender: TObject);
begin
        Edit1.Text :='';
        Master.Close;
        Master.SQL[2] := 'ORDER BY '+ ComboBox1.Text;
        Master.Open;
        Master.FieldByName(ComboBox1.Text).Index := 0;
        JvDBUltimGrid1.SetFocus;
end;

Código Delphi [-]
 
procedure TF_MasterDetall.Edit1Change(Sender: TObject);
var Camp: String;
begin
        Camp:=Combobox1.Text;
        If Camp='NOM' then
        Camp:='COGNOM1';
        BuscarCorredor.Close;
        BuscarCorredor.SQL.Clear;
        BuscarCorredor.SQL.Add('select '+Camp+' from CU0001 where upper('+Camp+') like '+quotedstr(AnsiUpperCase(Edit1.Text))+' order by '+Camp+'');
        BuscarCorredor.Open;
        Try
                Master.Locate(Camp,BuscarCorredor.Fields[0].Value,[]);
        finally
                BuscarCorredor.Close;
        end;
end;

El tema del campo calculado con apellido1+ apellido2+nombre tambien lo he probado, no acaba de funcionar correctamente la búsqueda.

Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar campo ftDATASET a otro campo delphijm Conexión con bases de datos 2 14-03-2011 12:55:53
Asignar el valor de un campo aggregate a un campo de la base TrUnkS Conexión con bases de datos 1 23-02-2010 05:17:42
Pasar un campo calculado a un campo del mismo DbGrid maravert Conexión con bases de datos 3 12-05-2006 00:31:30
UPDATE de un campo dependiendo del valor de un campo de otra tabla Javi2 SQL 5 18-04-2005 16:35:05
Relacion campo numérico vs campo string JorgeBec Varios 1 11-04-2005 18:26:51


La franja horaria es GMT +2. Ahora son las 17:14:26.


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
Copyright 1996-2007 Club Delphi