Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   como concatenar y desconcatenar (https://www.clubdelphi.com/foros/showthread.php?t=42691)

UREÑA 19-04-2007 21:10:20

como concatenar y desconcatenar
 
hola amigos

:(
lo que quiero hacer es lo siguiente:
en mi base de datos tengo un campo que se llama nombre que esta compuesto por nombre o nombres, apellidop y apellidom como le puedo hacer para que al momento de consultar se me desconcatene en tres edits y que al momento de insertar se concatene para agregar a la base de datos

garcias!!!
un saludo muy grande a todos!!:cool:

ContraVeneno 19-04-2007 21:25:51

la función copy te puede servir para lo primero.
la función formatstr con parámetros %s te puede servir para lo segundo.

Pero, creo que lo mejor sería que consultaras sobre las reglas de normalización de las bases de datos, donde se recomienda que los datos sean atómicos, es decir, que no sean compuesto.

Es mucho mejor tener los campos separados, de esta manera te evitarías tener que andar con estos menesteres.

Lepe 19-04-2007 21:29:51

El problema lo vas a tener con apellidos compuestos y nombres, por ejemplo:
"Maria Antonia del águila molina" es el más complejo que puedes encontrar.

- ¿Cómo puedes separar eso? El ordenador no puede diferenciar entre un nombre compuesto y "Manuel González Romero"
- ¿Y los apellidos? ¿cómo los troceas? Los espacios no te sirven de separador.

Lo que te han dicho, crear 3 campos, es la única solución, otros inventos te fallarán.

Saludos

Rockin 19-04-2007 21:32:06

Para insertar es tan facil como:


NombreEntero.Text:= Nombre.text + ' ' + Apellido1.text + ' ' + Apellido2.text;

Inserta un espacio entre nombre y apellidos para que no lo ponga junto.

Para la consulta ya es mas complicado, deberias de poner un campo nombre y otro apellido en la BD, seria mejor com dicen los compañeros.

Saludos.

maeyanes 19-04-2007 21:52:41

Dependiendo del tipo de base de datos...

Puedes tener un campo calculado que uses para las consultas:

Código SQL [-]
create table Personas(
  Nombre varchar(50) not null,
  ApellidoP varchar(50) not null,
  ApellidoM varchar(50) not null,
  Nombre_Completo computed by Nombre || ' ' || ApellidoP || ' ' || ApellidoM 
);

De esta forma para editar usas los campos normales y para consultas usas el campo calculado Nombre_Completo...



Saludos...

UREÑA 19-04-2007 22:28:30

hola amigos gracias por sus respuestas

creo que me voy por lo que ustedes me dicen
pero me surgio otra duda...
ya puedo insertar nombre en un registro, apellidop en otro, apellidom....
pero si quisiera mostrarlo en dbgrid en un solo campo que se llame nombre como le puedo hacer

:o

Lepe 19-04-2007 23:38:13

creo que maeyanes y tú habéis posteado casi al mismo tiempo, ¿has leído su mensaje?

Esa forma sería la ideal, aunque hay otras opciones, por ejemplo en la consulta del grid, puedes hacer:
Código SQL [-]
select Nombre || Apellidop || apellidoM as NombreCompleto, domicilio, calle
from tabla

ContraVeneno 19-04-2007 23:40:43

para SQL Server sería:
Código SQL [-]
Select Nombre+' '+ApellidoP as NombreCompleto
From TuTabla


La franja horaria es GMT +2. Ahora son las 02:35:46.

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