Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   clientdataset no me guarda la informacion en DB (https://www.clubdelphi.com/foros/showthread.php?t=77773)

gianfranco_tont 24-02-2012 22:04:11

clientdataset no me guarda la informacion en DB
 
Hola foro estoy trabajando con clientdataset en dbgrid: explico: el dbgrid atado al datasource, el datasource al clientdataset, el clientdatase al provider y finalmente el provider al adoquery. por alguna razon cualdo le doy al buton2 (Guardar) no me guarda la informacion que tengo el grid a la base de dato.

Código Delphi [-]
unit Unitajuste2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, ComCtrls, DB, Provider, DBClient, ADODB,
  Buttons, pngimage, ExtCtrls;

type
  TFormajuste2 = class(TForm)
    PageControl1: TPageControl;
    Edit1: TEdit;
    Edit2: TEdit;
    DBGrid1: TDBGrid;
    ADOQuery1: TADOQuery;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    DataSetProvider1: TDataSetProvider;
    ADOQuery1ajue_num: TIntegerField;
    ADOQuery1reng_num: TIntegerField;
    ADOQuery1art_desc: TMemoField;
    ADOQuery1tipo: TStringField;
    ADOQuery1co_art: TStringField;
    ADOQuery1total_art: TFMTBCDField;
    ADOQuery1uni_compra: TStringField;
    ADOQuery1stotal_art: TFMTBCDField;
    ADOQuery1suni_compr: TStringField;
    ADOQuery1co_alma: TStringField;
    ADOQuery1cost_unit_om: TFMTBCDField;
    ADOQuery1cost_unit: TFMTBCDField;
    ADOQuery1feccom: TDateTimeField;
    ADOQuery1numcom: TIntegerField;
    ADOQuery1uni_venta: TStringField;
    ADOQuery1suni_venta: TStringField;
    ADOQuery1cos_pro_un: TFMTBCDField;
    ADOQuery1ult_cos_om: TFMTBCDField;
    ADOQuery1cos_pro_om: TFMTBCDField;
    ADOQuery1rowguid: TGuidField;
    ADOQuery1total_uni: TFMTBCDField;
    ADOQuery1nro_lote: TStringField;
    ADOQuery1fec_lote: TDateTimeField;
    ADOQuery1pendiente2: TFMTBCDField;
    ADOQuery1tipo_doc2: TStringField;
    ADOQuery1reng_doc2: TIntegerField;
    ADOQuery1num_doc2: TIntegerField;
    ADOQuery1aux01: TFMTBCDField;
    ADOQuery1aux02: TStringField;
    ADOQuery1mo_cant: TFMTBCDField;
    ADOQuery1gf_cant: TFMTBCDField;
    ADOQuery1mo_cant_om: TFMTBCDField;
    ADOQuery1gf_cant_om: TFMTBCDField;
    ADOQuery1produccion: TBooleanField;
    ClientDataSet1ajue_num: TIntegerField;
    ClientDataSet1reng_num: TIntegerField;
    ClientDataSet1art_desc: TMemoField;
    ClientDataSet1tipo: TStringField;
    ClientDataSet1co_art: TStringField;
    ClientDataSet1total_art: TFMTBCDField;
    ClientDataSet1uni_compra: TStringField;
    ClientDataSet1stotal_art: TFMTBCDField;
    ClientDataSet1suni_compr: TStringField;
    ClientDataSet1co_alma: TStringField;
    ClientDataSet1cost_unit_om: TFMTBCDField;
    ClientDataSet1cost_unit: TFMTBCDField;
    ClientDataSet1feccom: TDateTimeField;
    ClientDataSet1numcom: TIntegerField;
    ClientDataSet1uni_venta: TStringField;
    ClientDataSet1suni_venta: TStringField;
    ClientDataSet1cos_pro_un: TFMTBCDField;
    ClientDataSet1ult_cos_om: TFMTBCDField;
    ClientDataSet1cos_pro_om: TFMTBCDField;
    ClientDataSet1rowguid: TGuidField;
    ClientDataSet1total_uni: TFMTBCDField;
    ClientDataSet1nro_lote: TStringField;
    ClientDataSet1fec_lote: TDateTimeField;
    ClientDataSet1pendiente2: TFMTBCDField;
    ClientDataSet1tipo_doc2: TStringField;
    ClientDataSet1reng_doc2: TIntegerField;
    ClientDataSet1num_doc2: TIntegerField;
    ClientDataSet1aux01: TFMTBCDField;
    ClientDataSet1aux02: TStringField;
    ClientDataSet1mo_cant: TFMTBCDField;
    ClientDataSet1gf_cant: TFMTBCDField;
    ClientDataSet1mo_cant_om: TFMTBCDField;
    ClientDataSet1gf_cant_om: TFMTBCDField;
    ClientDataSet1produccion: TBooleanField;
    Edit6: TEdit;
    Edit5: TEdit;
    Image3: TImage;
    Label6: TLabel;
    SpeedButton3: TSpeedButton;
    Image2: TImage;
    Label5: TLabel;
    SpeedButton2: TSpeedButton;
    Image1: TImage;
    Label4: TLabel;
    SpeedButton1: TSpeedButton;
    ADOQuerycodajuste: TADOQuery;
    ADOQuerycodajusteajue_num: TIntegerField;
    ADOQuerycodajustefecha: TDateTimeField;
    ADOQuerycodajustemotivo: TStringField;
    ADOQuerycodajustetotal: TFMTBCDField;
    ADOQuerycodajusteseriales: TIntegerField;
    ADOQuerycodajustefeccom: TDateTimeField;
    ADOQuerycodajustenumcom: TIntegerField;
    ADOQuerycodajustetasa: TFMTBCDField;
    ADOQuerycodajustemoneda: TStringField;
    ADOQuerycodajustedis_cen: TMemoField;
    ADOQuerycodajustecampo1: TStringField;
    ADOQuerycodajustecampo2: TStringField;
    ADOQuerycodajustecampo3: TStringField;
    ADOQuerycodajustecampo4: TStringField;
    ADOQuerycodajustecampo5: TStringField;
    ADOQuerycodajustecampo6: TStringField;
    ADOQuerycodajustecampo7: TStringField;
    ADOQuerycodajustecampo8: TStringField;
    ADOQuerycodajusteco_us_in: TStringField;
    ADOQuerycodajustefe_us_in: TDateTimeField;
    ADOQuerycodajusteco_us_mo: TStringField;
    ADOQuerycodajustefe_us_mo: TDateTimeField;
    ADOQuerycodajusteco_us_el: TStringField;
    ADOQuerycodajustefe_us_el: TDateTimeField;
    ADOQuerycodajusterevisado: TStringField;
    ADOQuerycodajustetrasnfe: TStringField;
    ADOQuerycodajusteco_sucu: TStringField;
    ADOQuerycodajusterowguid: TGuidField;
    ADOQuerycodajusteanulada: TBooleanField;
    ADOQuerycodajusteaux01: TFMTBCDField;
    ADOQuerycodajusteaux02: TStringField;
    ADOQuerycodajusteproduccion: TBooleanField;
    ADOQuerycodajusteimp_num: TIntegerField;
    ADOQuerycodajustefact_num: TIntegerField;
    ADOQuerycodart: TADOQuery;
    ADOQuerycodartco_art: TStringField;
    ADOQuerycodartart_des: TStringField;
    ADOQuerycodartfecha_reg: TDateTimeField;
    ADOQuerycodartmanj_ser: TBooleanField;
    ADOQuerycodartco_lin: TStringField;
    ADOQuerycodartco_cat: TStringField;
    ADOQuerycodartco_subl: TStringField;
    ADOQuerycodartco_color: TStringField;
    ADOQuerycodartitem: TStringField;
    ADOQuerycodartref: TStringField;
    ADOQuerycodartmodelo: TStringField;
    ADOQuerycodartprocedenci: TStringField;
    ADOQuerycodartcomentario: TMemoField;
    ADOQuerycodartco_prov: TStringField;
    ADOQuerycodartubicacion: TStringField;
    ADOQuerycodartuni_venta: TStringField;
    ADOQuerycodartuni_compra: TStringField;
    ADOQuerycodartuni_relac: TFMTBCDField;
    ADOQuerycodartrelac_aut: TIntegerField;
    ADOQuerycodartstock_act: TFMTBCDField;
    ADOQuerycodartstock_com: TFMTBCDField;
    ADOQuerycodartsstock_com: TFMTBCDField;
    ADOQuerycodartstock_lle: TFMTBCDField;
    ADOQuerycodartsstock_lle: TFMTBCDField;
    ADOQuerycodartstock_des: TFMTBCDField;
    ADOQuerycodartsstock_des: TFMTBCDField;
    ADOQuerycodartsuni_venta: TStringField;
    ADOQuerycodartsuni_compr: TStringField;
    ADOQuerycodartsuni_relac: TBCDField;
    ADOQuerycodartsstock_act: TFMTBCDField;
    ADOQuerycodartrelac_comp: TFMTBCDField;
    ADOQuerycodartrelac_vent: TFMTBCDField;
    ADOQuerycodartpto_pedido: TFMTBCDField;
    ADOQuerycodartstock_max: TFMTBCDField;
    ADOQuerycodartstock_min: TFMTBCDField;
    ADOQuerycodartprec_om: TBooleanField;
    ADOQuerycodartprec_vta1: TFMTBCDField;
    ADOQuerycodartfec_prec_v: TDateTimeField;
    ADOQuerycodartfec_prec_2: TDateTimeField;
    ADOQuerycodartprec_vta2: TFMTBCDField;
    ADOQuerycodartfec_prec_3: TDateTimeField;
    ADOQuerycodartprec_vta3: TFMTBCDField;
    ADOQuerycodartfec_prec_4: TDateTimeField;
    ADOQuerycodartprec_vta4: TFMTBCDField;
    ADOQuerycodartfec_prec_5: TDateTimeField;
    ADOQuerycodartprec_vta5: TFMTBCDField;
    ADOQuerycodartprec_agr1: TFMTBCDField;
    ADOQuerycodartprec_agr2: TFMTBCDField;
    ADOQuerycodartprec_agr3: TFMTBCDField;
    ADOQuerycodartprec_agr4: TFMTBCDField;
    ADOQuerycodartprec_agr5: TFMTBCDField;
    ADOQuerycodartcan_agr: TFMTBCDField;
    ADOQuerycodartfec_des_p5: TDateTimeField;
    ADOQuerycodartfec_has_p5: TDateTimeField;
    ADOQuerycodartco_imp: TStringField;
    ADOQuerycodartmargen_max: TBCDField;
    ADOQuerycodartult_cos_un: TFMTBCDField;
    ADOQuerycodartfec_ult_co: TDateTimeField;
    ADOQuerycodartcos_pro_un: TFMTBCDField;
    ADOQuerycodartfec_cos_pr: TDateTimeField;
    ADOQuerycodartcos_merc: TFMTBCDField;
    ADOQuerycodartfec_cos_me: TDateTimeField;
    ADOQuerycodartcos_prov: TFMTBCDField;
    ADOQuerycodartfec_cos_p2: TDateTimeField;
    ADOQuerycodartult_cos_do: TFMTBCDField;
    ADOQuerycodartfec_cos_do: TDateTimeField;
    ADOQuerycodartcos_un_an: TFMTBCDField;
    ADOQuerycodartfec_cos_an: TDateTimeField;
    ADOQuerycodartult_cos_om: TFMTBCDField;
    ADOQuerycodartfec_ult_om: TDateTimeField;
    ADOQuerycodartcos_pro_om: TFMTBCDField;
    ADOQuerycodartfec_pro_om: TDateTimeField;
    ADOQuerycodarttipo_cos: TStringField;
    ADOQuerycodartmont_comi: TBCDField;
    ADOQuerycodartporc_cos: TBCDField;
    ADOQuerycodartmont_cos: TBCDField;
    ADOQuerycodartporc_gas: TBCDField;
    ADOQuerycodartmont_gas: TBCDField;
    ADOQuerycodartf_cost: TDateTimeField;
    ADOQuerycodartfisico: TBooleanField;
    ADOQuerycodartpunt_cli: TBCDField;
    ADOQuerycodartpunt_pro: TBCDField;
    ADOQuerycodartdias_repos: TIntegerField;
    ADOQuerycodarttipo: TStringField;
    ADOQuerycodartalm_prin: TStringField;
    ADOQuerycodartanulado: TBooleanField;
    ADOQuerycodarttipo_imp: TStringField;
    ADOQuerycodartdis_cen: TMemoField;
    ADOQuerycodartmon_ilc: TFMTBCDField;
    ADOQuerycodartcapacidad: TBCDField;
    ADOQuerycodartgrado_al: TBCDField;
    ADOQuerycodarttipo_licor: TStringField;
    ADOQuerycodartcompuesto: TBooleanField;
    ADOQuerycodartpicture: TBlobField;
    ADOQuerycodartcodigo1: TStringField;
    ADOQuerycodartcodigo2: TStringField;
    ADOQuerycodartcodigo3: TStringField;
    ADOQuerycodartcodigo4: TStringField;
    ADOQuerycodartcodigo5: TStringField;
    ADOQuerycodartcodigo6: TStringField;
    ADOQuerycodartcodigo7: TStringField;
    ADOQuerycodartcodigo8: TStringField;
    ADOQuerycodartco_us_in: TStringField;
    ADOQuerycodartfe_us_in: TDateTimeField;
    ADOQuerycodartco_us_mo: TStringField;
    ADOQuerycodartfe_us_mo: TDateTimeField;
    ADOQuerycodartco_us_el: TStringField;
    ADOQuerycodartfe_us_el: TDateTimeField;
    ADOQuerycodartrevisado: TStringField;
    ADOQuerycodarttrasnfe: TStringField;
    ADOQuerycodartco_sucu: TStringField;
    ADOQuerycodartrowguid: TGuidField;
    ADOQuerycodarttuni_venta: TStringField;
    ADOQuerycodartequi_uni1: TFMTBCDField;
    ADOQuerycodartequi_uni2: TFMTBCDField;
    ADOQuerycodartequi_uni3: TFMTBCDField;
    ADOQuerycodartlote: TBooleanField;
    ADOQuerycodartserialp: TStringField;
    ADOQuerycodartvalido: TBooleanField;
    ADOQuerycodartatributo1: TBooleanField;
    ADOQuerycodartvatributo1: TStringField;
    ADOQuerycodartatributo2: TBooleanField;
    ADOQuerycodartvatributo2: TStringField;
    ADOQuerycodartatributo3: TBooleanField;
    ADOQuerycodartvatributo3: TStringField;
    ADOQuerycodartatributo4: TBooleanField;
    ADOQuerycodartvatributo4: TStringField;
    ADOQuerycodartatributo5: TBooleanField;
    ADOQuerycodartvatributo5: TStringField;
    ADOQuerycodartatributo6: TBooleanField;
    ADOQuerycodartvatributo6: TStringField;
    ADOQuerycodartgarantia: TStringField;
    ADOQuerycodartpeso: TFMTBCDField;
    ADOQuerycodartpie: TFMTBCDField;
    ADOQuerycodartmargen1: TBCDField;
    ADOQuerycodartmargen2: TBCDField;
    ADOQuerycodartmargen3: TBCDField;
    ADOQuerycodartmargen4: TBCDField;
    ADOQuerycodartmargen5: TBCDField;
    ADOQuerycodartrow_id: TBytesField;
    ADOQuerycodartimagen1: TStringField;
    ADOQuerycodartimagen2: TStringField;
    ADOQuerycodarti_art_des: TStringField;
    ADOQuerycodartuni_emp: TStringField;
    ADOQuerycodartrel_emp: TFMTBCDField;
    ADOQuerycodartmovil: TBooleanField;
    ADOQuerycodarttot_costo: TFMTBCDField;
    ClientDataSet1total: TFloatField;
    procedure DBGrid1EditButtonClick(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure ClientDataSet1CalcFields(DataSet: TDataSet);
    procedure ClientDataSet1NewRecord(DataSet: TDataSet);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Formajuste2: TFormajuste2;
  Lin: Integer;

implementation
uses unit1, unitconsultatipoaju, UNITSELECTPROD, UNITLISTAJU;

{$R *.dfm}

procedure TFormajuste2.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
  ClientDataSet1.FieldByName('Total').AsFloat:=
  ClientDataSet1.FieldByName('cost_unit').AsFloat *
  ClientDataSet1.FieldByName('total_art').AsInteger;
end;

procedure TFormajuste2.ClientDataSet1NewRecord(DataSet: TDataSet);
begin
   inc(lin);
   ClientDataSet1reng_num.asfloat := Lin;//ClientDataSet1.RecordCount;
end;

procedure TFormajuste2.DBGrid1EditButtonClick(Sender: TObject);
begin
    if dbgrid1.selectedindex = 0 then
    begin
    ClientDataSet1reng_num.Value := DBGrid1.DataSource.DataSet.RecordCount;
    end;
    if Dbgrid1.SelectedIndex = 1 then
    begin
    Application.CreateForm(TFormconsultatipoaju, Formconsultatipoaju);
    if Formconsultatipoaju.ShowModal = mrOk then
      begin
      if ClientDataSet1.State in [dsEdit, dsInsert] then
      else
      ClientDataSet1.Edit;
      ClientDataSet1tipo.AsString := Formconsultatipoaju.ADOQuery1co_tipo.AsString;
      Edit6.Text := Formconsultatipoaju.ADOQuery1des_tipo.AsString;
      dbgrid1.selectedIndex := 3;
   end;
   begin
    if Dbgrid1.SelectedIndex = 3 then
      begin
      Application.CreateForm(TFormselectprod, Formselectprod);
      if Formselectprod.ShowModal = mrOk then
   begin
      if  ClientDataSet1.State in [dsEdit, dsInsert] then
      else
      ClientDataSet1.Edit;
      ClientDataSet1cost_unit.AsString  := FormSelectProd.ADOQuery1cos_pro_un.AsString;
      ClientDataSet1co_art.AsString := Formselectprod.ADOQuery1co_art.AsString;
      ClientDataSet1uni_venta.AsString := FormSelectProd.ADOQuery1uni_venta.asstring;
      Edit5.Text := FormSelectProd.ADOQuery1art_des.AsString;
      if ClientDataSet1tipo.AsString  = 'CP' then
      dbgrid1.SelectedIndex := 6
      else
      dbgrid1.SelectedIndex := 4;
end;
      end;
   end;
    end;
end;
procedure TFormajuste2.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
    if Key = #13 then
   begin
      if Dbgrid1.SelectedIndex = 0 then
         Dbgrid1.SelectedIndex := 1
      else if Dbgrid1.SelectedIndex = 1 then
         Dbgrid1.SelectedIndex := 2
      else if Dbgrid1.SelectedIndex = 2 then
         Dbgrid1.SelectedIndex := 3
      else if Dbgrid1.SelectedIndex = 3 then
         Dbgrid1.SelectedIndex := 4
      else if Dbgrid1.SelectedIndex = 4 then
         Dbgrid1.SelectedIndex := 6
      else if Dbgrid1.SelectedIndex = 6 then
         begin
         Dbgrid1.SelectedIndex := 1;
         ClientDataSet1.Append;
         end;
end;
end;

procedure TFormajuste2.SpeedButton1Click(Sender: TObject);
begin
    ClientDataSet1.ApplyUpdates( 0 );
end;

end.

Agradeceria su ayuda

Al González 24-02-2012 23:18:14

Hola.

Creo que para ir descartando podrías verificar cuál es el valor de la propiedad ClientDataSet1.ChangeCount justo antes de hacer el ApplyUpdates.

gianfranco_tont 24-02-2012 23:23:02

ya los hice y tampoco

procedure TFormajuste2.SpeedButton1Click(Sender: TObject);
begin
if ClientDataSet1.ChangeCount > 0 then
begin
ClientDataSet1.ApplyUpdates( 0 );
end;
end;

Al González 24-02-2012 23:45:58

Podrías usar el depurador, colocando un punto de ruptura en la primera sentencia del método SpeedButton1Click.

O algo más rudimentario como:

Código Delphi [-]
procedure TFormajuste2.SpeedButton1Click(Sender: TObject);
begin
    ShowMessage (IntToStr (ClientDataSet1.ChangeCount));
    ClientDataSet1.ApplyUpdates( 0 );
end;

Sólo si ChangeCount es > 0 es que realmente hay algo que enviar a la base de datos. :)

gianfranco_tont 24-02-2012 23:48:46

el resultado es 1:eek:

Al González 24-02-2012 23:59:14

Muy bien, ya descartaste una causa. :)

Ahora unas preguntas de mayor profundidad:

¿A qué motor de base de datos se conecta ADOQuery1? (algo que ayuda mucho mencionar en cualquier consulta en los foros).

¿Qué valor tiene en el inspector de objetos la propiedad ResolveToDataSet del componente DataSetProvider1?

¿De qué manera estás comprobando que la información realmente no se guarda en la base de datos? (algo que también es importante mencionar de un inicio).

Esperamos tus tres respuestas.

roman 25-02-2012 00:03:10

Yo añado esta pregunta:

¿Qué valor tienen las propiedades LockType y CursorType del ADOQuery?

// Saludos

gianfranco_tont 25-02-2012 00:12:13

Cita:

Empezado por Al González (Mensaje 426081)
Muy bien, ya descartaste una causa. :)

Ahora unas preguntas de mayor profundidad:

¿A qué motor de base de datos se conecta ADOQuery1? (algo que ayuda mucho mencionar en cualquier consulta en los foros).

¿Qué valor tiene en el inspector de objetos la propiedad ResolveToDataSet del componente DataSetProvider1?

¿De qué manera estás comprobando que la información realmente no se guarda en la base de datos? (algo que también es importante mencionar de un inicio).

Esperamos tus tres respuestas.

1. El motor de Base de datos es SQL SERVER 2008.
2. False
3. entro en Manager estudio del SQL busco la tabla y le doy un select * from det_ajuste y no me aparece nada en apsoluto.

gianfranco_tont 25-02-2012 00:13:49

Cita:

Empezado por roman (Mensaje 426083)
Yo añado esta pregunta:

¿Qué valor tienen las propiedades LockType y CursorType del ADOQuery?

// Saludos

el cursor type esta en ctKeyset
y el locktipe esta en ltOptimistic

Al González 25-02-2012 00:41:11

Gracias por responder. :)

Me suena a que esté faltando confirmar la transacción.

Es decir, puede que los datos sí sean enviados a la base de datos, pero que falte hacer el "commit". Con ello los nuevos registros existirán también para otras conexiones / programas. Mientras no se confirme la transacción, los demás procesos no pueden ver esos registros.

¿Usas un componente TADOConnection o la propiedad ConnectionString del componente ADOQuery1?

Agrego: Por cierto, ¿en qué versión de Delphi? (otro dato básico)

gianfranco_tont 25-02-2012 00:48:44

Cita:

Empezado por Al González (Mensaje 426090)
Gracias por responder. :)

Me suena a que esté faltando confirmar la transacción.

Es decir, puede que los datos sí sean enviados a la base de datos, pero que falte hacer el "commit". Con ello los nuevos registros existirán también para otras conexiones / programas. Mientras no se confirme la transacción, los demás procesos no pueden ver esos registros.

¿Usas un componente TADOConnection o la propiedad ConnectionString del componente ADOQuery1?

Agrego: Por cierto, ¿en qué versión de Delphi? (otro dato básico)

Tadoconections y estoy usando delphi 209

Al González 25-02-2012 00:59:20

OK, tengo mucho tiempo de no usar ADO (para MS SQL Server yo emplearía mejor dbExpress, pero eso podría tratarse en otro tema).

Después de hacer el ApplyUpdates, coloca la sentencia:
Código Delphi [-]
conexión.CommitTrans;
Donde "conexión" sería el objeto TADOConnection que estás usando.

Estando en eso, sería útil revisar qué valor trae la propiedad de tipo Boolean InTransaction de ese objeto conexión, justo después del ApplyUpdates y antes del CommitTrans.


La franja horaria es GMT +2. Ahora son las 15:20:02.

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