Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Numero de ítem en dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=77706)

gianfranco_tont 17-02-2012 03:22:09

Dbgrid con fila numeradas
 
Hola foro, tengo un dbgrid con un clientdataset y lo que quiero hacer es que las filas se autonumeren, ejemplo. Cuando se crea una linea nueva en el grid que sea la 01 la siguen la 02 etc.

Ademas quiero que cuando guarro la información que esta en el from me lo guarde con un correlativo, tal como si fuese una from de facturación.

Caral 17-02-2012 03:26:31

Hola
Creo que sigues con el mismo problema con el dbgrid.
No se, pero creo que este tutorial te ayudara.
O por lo menos te dará ideas.
Saludos
PD: Esta recién salido del horno.:D
Con vuestro permiso.

gianfranco_tont 17-02-2012 18:26:38

gracias esto si me dio una idea pero aun tengo un problema, como dije estoy trabajando con clientdataset y necesito hacer la suma de dos columna horizantale y finalmente la suma de la column vertical:

quiero que el cliendatasetTOTAL debe ser igual al cliendatasetCOSTO * cliendatasetCANTIDAD y luego finalmente en un Edit1.text es igual a la suma detoda la culumna cliendatasetTOTAL.

roman 17-02-2012 19:11:46

Cita:

Empezado por gianfranco_tont (Mensaje 425364)
quiero que el cliendatasetTOTAL debe ser igual al cliendatasetCOSTO * cliendatasetCANTIDAD y luego finalmente en un Edit1.text es igual a la suma detoda la culumna cliendatasetTOTAL.

1. Agrega un campo calculado (CalculatedField) llamado Total y en el elevento OnCalcFields del ClientDataSet pones:

Código Delphi [-]
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
  DataSet['total'] := DataSet['costo']*DataSet['cantidad'];
end;

2. Agrega un campo agregado (AggregateField) llamado GranTotal y pones sus propiedades:

a. Expression: SUM(costo*cantidad)
b. Active: true

También te aseguras de poner en True la propiedad AggregatesActive del ClientDataSet.

3. Pones un DBEdit ligado a un datasource que esté ligado al ClientDataSet y en su propiedad DataField pones GranTotal.

// Saludos

gianfranco_tont 17-02-2012 19:25:34

DONDE AGREGO EL CAMPO: EN ADOQUERY? EN CLIENTDATASET O EN EL DBGRID?
1. Agrega un campo calculado (CalculatedField) llamado Total y en el elevento OnCalcFields del ClientDataSet pones:

DONDE AGREGO EL CAMPO: EN ADOQUERY? EN CLIENTDATASET O EN EL DBGRID?
2. Agrega un campo agregado (AggregateField) llamado GranTotal y pones sus propiedades:

a. Expression: SUM(costo*cantidad)
b. Active: true

También te aseguras de poner en True la propiedad AggregatesActive del ClientDataSet.

3. Pones un DBEdit ligado a un datasource que esté ligado al ClientDataSet y en su propiedad DataField pones GranTotal.

// Saludos

roman 17-02-2012 19:39:01

Los campos los agregas al ClientDataSet.

// Saludos

gianfranco_tont 17-02-2012 20:28:19

hice todo pero me aparecen todas los campos menos el grantotal.

gianfranco_tont 17-02-2012 20:41:30

el campo editing clientdataset1.aggregates no me apararece para relacionarlo con el dbedit1. sera que falto algo por hacer?

gianfranco_tont 20-02-2012 00:41:56

Cita:

Empezado por gianfranco_tont (Mensaje 425391)
el campo editing clientdataset1.aggregates no me apararece para relacionarlo con el dbedit1. sera que falto algo por hacer?

Porfavor necesito ayuda con eso si alguien sabes como resolverlo lo agradecería mucho...

gianfranco_tont 20-02-2012 02:05:15

Cita:

Empezado por gianfranco_tont (Mensaje 425486)
Porfavor necesito ayuda con eso si alguien sabes como resolverlo lo agradecería mucho...

Aun sigo con este problema

Caral 20-02-2012 03:35:00

Hola
En el IBClientDataSet hay una propiedad que se llama Agregates (la segunda).
Si presionas en la casilla de al lado te saldra una pantalla pequeña.
Ahí hay dos dibujos, si presionas el primero (izquierda) agregaras uno
Te posicionas en el que creaste, en la propiedad AgragateName pones (GranTotal), en expresión pones lo que dijo Roman.
Vas nuevamente al IBClientDataSet y en la propiedad AgragatesActive la pones en true.
Relacionas el dbedit con el IBClientDataSet y en la propiedad datasource pones grantotal.
Creo que va por ahí.
Nunca he usado el IBClientDataSet, solo lo revise.
Saludos

Delphius 20-02-2012 06:44:15

Hay tan sólo una 1h de diferencia entre tu post #9 y el #10.
Aquí la gente ayuda en cuanto puede, y quiere. No vengas con prisas ni urgencias. Ten paciencia, y tendrás las respuestas a su debido momento. No por postear cada 1h más te van a ayudar más... todo lo contrario: denotas más tu desesperación y menos ganas vamos a tener.
Uno de los puntos de la guía de estilo es pedir las cosas sin urgencias, respétala.

Saludos,

gianfranco_tont 20-02-2012 15:56:23

Cita:

Empezado por Caral (Mensaje 425495)
Hola
En el IBClientDataSet hay una propiedad que se llama Agregates (la segunda).
Si presionas en la casilla de al lado te saldra una pantalla pequeña.
Ahí hay dos dibujos, si presionas el primero (izquierda) agregaras uno
Te posicionas en el que creaste, en la propiedad AgragateName pones (GranTotal), en expresión pones lo que dijo Roman.
Vas nuevamente al IBClientDataSet y en la propiedad AgragatesActive la pones en true.
Relacionas el dbedit con el IBClientDataSet y en la propiedad datasource pones grantotal.
Creo que va por ahí.
Nunca he usado el IBClientDataSet, solo lo revise.
Saludos

El en punto 3 de román y en punto 3 tuyo de verdad no hay forma que pueda relacionar el campo creado en la grid y hay mas ni siquiera lo veo.

Caral 20-02-2012 17:28:44

Hola
Pon el campo total, hara lo mismo.
Saludos

gianfranco_tont 21-02-2012 06:17:51

Numero de ítem en dbgrid
 
Hola foro, estoy trabajando con un dbgrid atado a un datasource, luego a un dataset, luego a un dataset ro idee y finalmente a un adoquery. Quiero que cuando se agrega una fina nueva en el dbgrid en la columna ítem me refrene el numero de ítem ejemplo: 01'02'03 etc, alguien me puede indicar como hacerlo?

olbeup 21-02-2012 09:24:45

No se a que te refieres con el número de item, pero hay una propiedad DBGrid1.DataSource.DataSet.RecNo que te devuelve el número de registro y es automático y correlativo, pero esto es virtual y no te servirá de punto de referencia, si sólo quieres que se vea un número el RecNo te lo da.

Un saludo.

gianfranco_tont 21-02-2012 15:14:37

Ok si pudiera probar es eso lo que necesito, pero donde le coloco esta propiedad?

Casimiro Noteví 21-02-2012 16:12:14

Por favor, cuando no entiendas las soluciones que te dan, no abras otro hilo para ello, simplemente explica que no lo entiendes.
Gracias por tu colaboración.

He unido ambos hilos porque es lo mismo.

gianfranco_tont 21-02-2012 18:16:25

Cita:

Empezado por olbeup (Mensaje 425626)
No se a que te refieres con el número de item, pero hay una propiedad DBGrid1.DataSource.DataSet.RecNo que te devuelve el número de registro y es automático y correlativo, pero esto es virtual y no te servirá de punto de referencia, si sólo quieres que se vea un número el RecNo te lo da.

Un saludo.

Si me funciona pero fijare lo que me sucede:
Solo me muestra el numero del registro donde estoy ubicado pero al pasar a un registro nuevo me lo borra, es decir no se guarda en la columna ítem, sin embargo la secuencia la sigue perfecta. El otro problema es que solo me inicia a contar desde el segundo registro en el primero no me coloca nada.

Caral 21-02-2012 18:30:20

Hola
Código Delphi [-]
QueryTemp.SQL.Text := 'Select Max(Item) from TuTabla';
QueryTemp.Active := true;
TuQuery.Fields[0].AsInteger := QueryTemp.Fields[0].AsInteger+1;

Saludos


La franja horaria es GMT +2. Ahora son las 04:02:21.

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