Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-07-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Identar cadenas en una consulta

Hola comunidad:
Necesito concatenar cadenas de texto en una consulta. El problema que al utilizar '||' obtengo el resultado pero los datos no aparecen identados:
P.e.



Código SQL [-]select apellido||nombre||dni||domicilio from maestro


y obtengo:

PEDRO SALVATIERRA 20200230 AV.SALVADOR 456
SALADO JUAN 34345234 SARMIENTO 234

Y NECESITO QUE LAS COLUMNAS APELLIDO,NOMBRES,DNI,DOMICILIO QUEDEN ALINEADAS, Se entiende ?. Muchas gracias por todo.

Saludos
__________________
Atentamente
Luis
Responder Con Cita
  #2  
Antiguo 27-07-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
No sé que motor estás utilizando, pero supongo que el problema es que te corta los espacios en blanco y te devuelve cadenas de distintos anchos para una misma columna, tendrías que probar rellenando con espacios en blanco.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 27-07-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Hola Marcos:
Gracias por tu respuesta, si, olvide el motor, es firebird. Intenté llenar con espacios en blanco, pero el problema sigue. Utilicé la udf rpad que llena con espacios lo que resta de la cadena pero el largo de la cadena sigue siendo de tamaños distintos.

un saludo
__________________
Atentamente
Luis
Responder Con Cita
  #4  
Antiguo 27-07-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira a ver si a RPad le puedes pasar como parámetro el largo total del campo, por ejemplo 40 - el largo real.

Rpad(MiCampo, 40 - Lenght(MiCampo))

Length no estoy seguro de que exista en Firebird.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 27-07-2008
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

Yo para esto utilizo udf propias, pero se puede hacer sin udf utilizando substring pero previamente alargamos el campo para luego con el substring darle el tamaño que queramos

Código SQL [-]
select 
substring(apellido||'                                                        ' from 1 for 50)|| substring(nombre||'                                                     ' from 1 for 50)|| substring(dni||'                                         ' from 1 for 15)
|| substring(domicilio||'                                                                 ' from 1 for 70)   from maestro

No se si esta bien la sintaxis pero creo que se entiende la idea

Saludos
Responder Con Cita
  #6  
Antiguo 28-07-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Gracias por las respuestas:

La verdad que no funciona y el problema por lo que veo es el tamaño de los caracteres. pe. DANIELA y MARIELA tienen la misma cantidad de letras sin embargo en la consulta la cadena MARIELA es mas larga por lo que en el resultado final quedan distintas.

El sentido de esto en es realidad la necesidad de armar un reporte configurable, es decir, el usuario puede seleccionar de una lista de campos posibles los que necesite imprimir. Genero con los campos seleccionados una consulta:

Código SQL [-]
Select APELLIDOS||NOMBRES||...||.. FROM MAESTRO


y obtengo una cadena que luego envio a un reporteador, espero se entienda. Si existe un modo mas sencillo de hacerlo agradecido.

Saludos y gracias de nuevo
__________________
Atentamente
Luis
Responder Con Cita
Respuesta



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
programa para identar ingel Varios 1 14-11-2007 21:56:28
Uso de cadenas zvf OOP 4 05-04-2006 00:55:47
Separar Cadenas ronson Varios 2 25-07-2005 18:01:46
if ... in [] con cadenas???? neon Varios 3 10-12-2004 13:15:39
comparación de cadenas perico Varios 1 22-06-2004 23:52:28


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


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