Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   valores por defaul en CxGrid .... (https://www.clubdelphi.com/foros/showthread.php?t=70014)

CHECHE81 24-09-2010 19:27:34

valores por defaul en CxGrid ....
 
Saludos camaradas, con la novedad que ando manejando el bondadoso y famoso cxgrid junto con un cxnavigator asociado claro con su clientdataset y datasource, el detalle que al agregar un registro nuevo quiero ponerle un valor que ya tengo guardado en una variable o en algún campo de otra tabla y lo intento en 2 eventos:

Primero:
Código:

pprocedure TfmEstadoCuenta.cxNavigator1ButtonsButtonClick(Sender: TObject;
  AButtonIndex: Integer; var ADone: Boolean);
begin
  if AButtonIndex = NBDI_INSERT then
  begin
    cxGridDBTableView2.ViewData.Records[0].Values[4] := edimportecita.Text;
    cxGridDBTableView2IMPORTE.Caption := edimportecita.Text;
    cxGridDBTableView2IMPORTE.EditValue := edimportecita.Text;
    cxGridDBTableView2IMPORTE.DataBinding.Field.Value := cdcg.FieldValues['importecitas'];
    cdsc.FieldValues['importe'] := cdcg.FieldValues['importecitas'];
  end; 
end;

Segundo
Código:

procedure TfmEstadoCuenta.cdSCBeforeInsert(DataSet: TDataSet);
begin
  if (cdsc.State = dsinsert) then
  begin
    cdsc.FieldValues['importe'] := cdcg.FieldValues['importecitas'];
    cxGridDBTableView2IMPORTE.DataBinding.Field.Value := cdcg.FieldValues['importecitas'];
    cdsc.FieldValues['fecha'] := date;
    cxGridDBTableView2FECHA.DataBinding.ValueType := datetostr(date);
    cxGridDBTableView2IMPORTE.Caption := edimportecita.Text;
    cxGridDBTableView2.ViewData.Records[0].Values[2]:= edimportecita.Text; 
  end;
end;


de cada forma pero ninguna me ha dado resultado, ya busque algúnos ejemplos y con ellos hice lo anterior pero no le he dado al clavo les agradeceria cualquier ayuda, gracias por su tiempo.:D

AzidRain 24-09-2010 22:06:13

No has probado con el soporte de DevExpress? Mándales tu código y te ponen la respuesta directamente, es lo bueno de esos componentes. Por otro lado el enfoque está incorrecto, el grid únicamente muestra los datos lo que quieres hacer es modificar los datos por lo que tienes que ir a la tabla o query que alimenta el grid y ahí hacer el cambio

Al González 24-09-2010 22:07:03

¿Qué pasó Cheché?

Llevas poco más de un año que no trabajas conmigo y ya se te olvida lo básico. :p :o

Cuando quieras asignar valor predeterminado a un campo de un nuevo registro, puedes usar tanto el evento OnNewRecord como el evento AfterInsert.

Recuerda que a nivel de los conjuntos de datos AfterInsert no significa “después de agregar el registro”, sino “después de preparar un nuevo registro para ser capturado”, por tanto es un momento adecuado para complementar esa “preparación” asignándole valores “default”.

En cambio el evento BeforeInsert ocurre antes de dicha preparación, es decir, antes de que el buffer en blanco para un nuevo registro esté listo y activo. Lo que hagas en BeforeInsert afectará al registro que esté activo al momento de iniciar la ejecución del Insert / Append, no al nuevo registro que estos métodos agregan para su captura.

Un abrazo.

Al González. :)

CHECHE81 24-09-2010 23:35:32

Jojo
 
Gracias por sus repuestas :), AzidRain efectivamente estaba mal el evento utilizado, que tal Al :D, si ya probé y ya me muestra los datos con el evento AfterInsert:
Código:

procedure TfmEstadoCuenta.cdSCAfterInsert(DataSet: TDataSet);
begin
  cdsc.FieldValues['importe'] := edimportecita.Text;
  cdsc.FieldValues['fecha'] := date;
end;

Si, la verdad se me paso ese dato de la preparación del nuevo registro desde el clientdataset, porlo que estaba mal enfocado por el lado del cxgrid o el cxnavigator, gracias por recordarmelo, jejej:o te debo unas chelas bien elodias jojojo:cool:


La franja horaria es GMT +2. Ahora son las 09:08:14.

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