Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2010
sizne sizne is offline
Miembro
 
Registrado: mar 2010
Posts: 104
Poder: 15
sizne Va por buen camino
DBGrid ingresar dos datos misma columna

Planteo mi problema:
Tengo una Ttabla (Tregistro),realizando en SQL Server (Codigo,NOmbres,apellidos, fechaNacimient, edad, fechaInscripcion etc...) estos campos lo tengo en un formulario. Ingreso los datos con normalidad. Pero tengo otro formulario donde quiero ver todos los datos que he ingresado, para lo cual estoy usando un DBGrid, ya lo relacioné con su DataSource del Tregistro. Y en el DBGrid me muestra obviamente todos los campos, pero lo que yo quiero es, por ejemplo que en el campo, en la columna respectiva de Nombre, no solo me muestre el dato del nombre sino quiero que me aparezca en el campo NOMBRE, el nombre+apellidoPaterno+ApellidoMaterno, es decir lo que me aparecia en tres columnas quiero que me aparezca en una sola columna.

Con StringGrid pues se usaba StringGrid.Cells[1,3], StringGrid.Cells[2,3], StringGrid.Cells[3,3], pero en DBGrid no tiene "Cells"
Muestro lo que intentaba hacer.

procedure TFLista.FormCreate(Sender: TObject);
var n:integer;
begin
For n:=1 to DM.Tregistro.RecordCount do
begin
DM.Tregistro.Last;
DM.Tregistro.Insert;
DBGrid.Columns[3]:=DM.Tregistro['NomE']+''+DM.Tinscripcion['ApellidoPE'];
end
end;


Obviamente no funciona este codigo, como podria ser?
Quiero que en una columna de DBGrid me aparezca juntadas tres datos del DATA SOURCE.
Gracias.
Responder Con Cita
  #2  
Antiguo 16-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Tienes dos opciones (por lo menos). Enlazar el DBGrid a una consulta SQL que haga la concatenación de campos o agregar a TRegistro un campo calculado y en su evento OnCalcFields proporcionar el valor del nombre completo.

// Saludos
Responder Con Cita
  #3  
Antiguo 16-03-2010
sizne sizne is offline
Miembro
 
Registrado: mar 2010
Posts: 104
Poder: 15
sizne Va por buen camino
Podrias darme un ejemplo con las dos opciones por favor?
Gracias!
Responder Con Cita
  #4  
Antiguo 16-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ok.

Con la primera opción, usarías un componente Query con una consulta del tipo:

Código SQL [-]
select
  Codigo, concat(Nombres, apellidos) as nombreCompleto, fechaNacimient, edad, fechaInscripcion
from tabla

Si enlazas un DBGrid a este Query, se mostrarán los campos Codigo, nombreCompleto, fechaNacimiento, edad, etc.

Aquí hay que ver cómo se hace realmente la concatenación de campos CHAR en SQL Server. Pongo concat por decir algo pero no conozco cuál es la función exacta.

Para la segunda opción, puedes usar un Query o un Table, como prefieras o requieras, conectado a tu tabla.

En el editor de campos (menú contextual del componente y luego Fields Editor...) agregas todos los campos o los campos que requieras y después añades un campo nuevo (menú contextual del editor de campos y luego Neww Field...). En las prpiedades del nuevo campo pones el nombre que gustes, por ejemplo, NombreCompleto; le pones que sea de tipo String y le das una longitud lo suficientemente grande para abarcar el nombre y apellidos. En Field Type seleccionas Calculated.

Después, en el evento OnCalcFields del Query o Table pones algo como esto:

Código Delphi [-]
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
  DataSet.FieldByName('NombreCompleto').AsString :=
    DataSet.FieldByName('nombres').AsString + ' ' +
    DataSet.FieldByName('apellidos').AsString
end;

// 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
Tipo de datos de una columna en un DBGrid Oni Varios 1 25-10-2005 15:17:44
copiar columna dentro de la misma tabla gmontes Firebird e Interbase 2 22-09-2005 17:16:54
¿Cómo puedo actualizar en el DBGrid los datos que inserto en la misma sesión? nuri SQL 3 18-07-2005 19:27:19
Volver a la misma columna en dbgrid raulparraco OOP 2 06-03-2005 02:58:34
distintas picklists en la misma columna de dbgrid arc22 Varios 4 28-06-2004 17:10:30


La franja horaria es GMT +2. Ahora son las 11:35:59.


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