Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con FireDac (https://www.clubdelphi.com/foros/showthread.php?t=87010)

darkamerico 04-11-2014 01:11:52

Problema con FireDac
 
Saludos amigos, trabajo con Delphi XE7 y FireDAC.

Estoy intentando hacer un mantenimiento de tablas con un solo componente TFDTable que esta en un TDataModule, para eso el usuario debe elegir el nombre de las tabla que desea de un TComboBox, en su evento OnChange:

Código Delphi [-]
procedure TForm3.cboTablaChange(Sender: TObject);
begin
  dm.tblMantenimiento.Close;
  if(cboTabla.Text='Aula')then
  begin
    dm.tblMantenimiento.TableName:='aula';
    txtIdAula.DataField:='id_aula';
    txtAula.DataField:='aula';
    txtAulaEstado.DataField:='estado';
    panelAula.Visible:=true;
    panelCicloAcad.Visible:=false;
  end;

  if(cboTabla.Text='Ciclo Academico')then
  begin
    dm.tblMantenimiento.TableName:='cicloacademico';
    panelCicloAcad.Visible:=true;
    panelAula.Visible:=false;
  end;
  dm.tblMantenimiento.Active:=true;
end;

No hay problema cuando selecciono por primera vez Aula, luego cuando selecciono Ciclo Academico me aparece el siguiente error:
txtAula.text: Field 'aula' not found.

No se a ciencia cierta porque sale esto si estoy cerrando la tabla al comienzo...

Agradezco cualquier ayuda en esto.

Neftali [Germán.Estévez] 04-11-2014 09:57:35

No he trabajado con FireDAC, pero por el error es posible que el componente esté guardando información de la primera tabla que has seleccionado.
Revisa si hay algún método para eliminar esa información para "limpiar" la información de tblMantenimiento.

TOPX 04-11-2014 14:05:16

Saludos,

Suponiendo que txtAula es un TDbEdit,
y que cboTabla es un TComboBox:
Código Delphi [-]
  dm.tblMantenimiento.Close;
  case cboTabla.ItemIndex of
    0: // 'Aula'
    begin
      dm.tblMantenimiento.TableName := 'aula';
      txtIdAula.DataField := 'id_aula';
      txtAula.DataField := 'aula';
      txtAulaEstado.DataField := 'estado';
      panelAula.Visible := True;
      panelCicloAcad.Visible := False;
    end;
    1: // 'Ciclo Academico'
    begin
      dm.tblMantenimiento.TableName := 'cicloacademico';
      txtIdAula.DataField := nil;
      txtAula.DataField := nil;
      txtAulaEstado.DataField := nil;
      panelCicloAcad.Visible := True;
      panelAula.Visible := False;
    end;
    else 
    begin
      panelCicloAcad.Visible := False;
      panelAula.Visible := False;
      Exit;
    end;
  end;
  dm.tblMantenimiento.Open;
-


La franja horaria es GMT +2. Ahora son las 12:33:53.

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