Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   DBGrid ingresar dos datos misma columna (https://www.clubdelphi.com/foros/showthread.php?t=66877)

sizne 16-03-2010 20:46:45

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.

roman 16-03-2010 20:51:55

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

sizne 16-03-2010 21:12:51

Podrias darme un ejemplo con las dos opciones por favor?
Gracias!

roman 16-03-2010 21:31:04

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


La franja horaria es GMT +2. Ahora son las 10:53:13.

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