Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problemas con el pagecontrol (https://www.clubdelphi.com/foros/showthread.php?t=89236)

jose.ignacio.ve 21-10-2015 04:36:55

problemas con el pagecontrol
 
Hola buenas noches. Tengo un problema que no puedo resolver.
tengo un formulario que tiene un pagecontro con dos paginas, una tiene la carga de un socio y la otra pagina tengo una grilla donde me aparece la lista de los alumnos y esta tiene un botón que sirve para modificar un alumno seleccionado de la grilla. Mi problema es que cuando hago clic en la pagina de carga de alumno vuelve con los datos del primer alumno de la grilla y se me modifica siempre ese alumno, no puedo cargar mas alumnos. alguna ayuda. primera ves que trabajo con este componente.

AgustinOrtu 21-10-2015 06:37:06

Y que culpa tiene el PageControl? Que grilla tenes? Una DBGrid? Esta conectada a un DataSet? Cual es el codigo del boton?

Neftali [Germán.Estévez] 21-10-2015 12:12:07

Cita:

Empezado por jose.ignacio.ve (Mensaje 498169)
... y esta tiene un botón que sirve para modificar un alumno seleccionado de la grilla.

Estaría bien que pusieras el código que estás utilizando. De otra forma tenemos que basar nuestras respuestas en suposiciones.
Lo normal es que tengas que "buscar" el alumno que quieres modificar, antes de hacerlo.
¿Lo estás haciendo? ¿Cómo? ¿Locate, SQL?

jose.ignacio.ve 21-10-2015 15:04:43

2 Archivos Adjunto(s)
este seria el codigo completo..
Código Delphi [-]
    unit Uprincipal;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ComCtrls, Vcl.StdCtrls,
  Vcl.Mask, Vcl.DBCtrls, Vcl.Buttons, Vcl.Grids, Vcl.DBGrids,dateutils,
  Vcl.ExtCtrls;

type
  TFprincipal = class(TForm)
    MainMenu1: TMainMenu;
    Reportes1: TMenuItem;
    ListadodeAlumnos2: TMenuItem;
    ListadosdeVencimientos1: TMenuItem;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    DBGrid1: TDBGrid;
    GroupBox1: TGroupBox;
    BSalir: TBitBtn;
    Beliminar: TBitBtn;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DBapellido: TDBEdit;
    DBnombre: TDBEdit;
    DBdni: TDBEdit;
    DBdireccion: TDBEdit;
    DBtele: TDBEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GroupBox5: TGroupBox;
    GroupBox6: TGroupBox;
    GroupBox7: TGroupBox;
    Label6: TLabel;
    DBEinicio: TDBEdit;
    Label7: TLabel;
    Bmodificar: TBitBtn;
    Label8: TLabel;
    Label9: TLabel;
    Enombres: TEdit;
    Edni: TEdit;
    RadioGroup1: TRadioGroup;
    procedure BitBtn1Click(Sender: TObject);
    procedure BmodificarClick(Sender: TObject);
    procedure EnombresChange(Sender: TObject);
    procedure EdniChange(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    //procedure BmodificarClick(Sender: TObject);
    //procedure BmodificarClick(Sender: TObject);
  private
    { Private declarations }
  public
  modificacion:Boolean;
    { Public declarations }
  end;

var
  Fprincipal: TFprincipal;

implementation
uses
umodulo;

{$R *.dfm}



procedure TFprincipal.BitBtn1Click(Sender: TObject);
var
vence:word;
inicio: tdate;
   
ruta:string;
begin

        vence:=   DaysInMonth(now);
        if modificacion=false then
              begin

                     fmodulo.talumnos.FieldByName('fecha_ingreso').AsDateTime:= now;
                    self.DBEinicio.Text:=DateToStr(now);

              end
         else
               begin
                    fmodulo.talumnos.Active:=true;
                    fmodulo.talumnos.Edit;
                    modificacion:=false;

               end;

         if self.dbapellido.Text='' then

                 begin
                      Application.MessageBox('El campo Apellido no puede ser vacio','Gimnasio',MB_OK+MB_ICONWARNING);
                      self.dbapellido.SetFocus;
                      end
                   else
                    if self.DBnombre.Text='' then

                 begin
                      Application.MessageBox('El campo Nombre no puede ser vacio','Gimnasio',MB_OK+MB_ICONWARNING);
                        self.DBnombre.SetFocus;
                 end
                   else
                    if self.DBEinicio.Text='' then
                      begin
                      Application.MessageBox('El campo Fecha de inicio no puede ser vacio','Gimnasio',MB_OK+MB_ICONWARNING);
                      self.DBEinicio.SetFocus;
                      end
                   else
                 
                    if self.DBdni.Text='' then
                     begin
                      Application.MessageBox('El campo Dni no puede ser vacio','Gimnasio',MB_OK+MB_ICONWARNING);
                        self.DBdni.SetFocus;
                      end ;

                       begin

                  fmodulo.talumnos['fecha_vencimiento']:= fmodulo.talumnos['fecha_inicio'] + vence;
                  


            

                  fmodulo.talumnos.Post;
                  fmodulo.talumnos.Refresh;
                  fmodulo.talumnos.Close;
                  fmodulo.zqlistado_alumnos.Active:=true;
                  fmodulo.zqlistado_alumnos.Refresh;
                  fmodulo.zqmodificacionestado.ExecSQL;
                  fmodulo.ZQlisalumnosfecha.Active:=true;
                  fmodulo.zqlisalumnosfecha.refresh;
                  fmodulo.ZQlisalumnosfecha.Close;
                  fmodulo.zqlistado_alumnos.Refresh;
                 PageControl1.ActivePageIndex:=0;
                       end;
end;

procedure TFprincipal.BmodificarClick(Sender: TObject);
begin
      fmodulo.talumnos.Active:=true;
      fmodulo.talumnos.Locate('id_alumnos',fmodulo.zqlistado_alumnos.FieldByName('id_alumnos').AsString,[]);
      modificacion:=true;
      PageControl1.ActivePageIndex:=1;
      dbapellido.Enabled:=true;
      DBnombre.Enabled:=true;
      DBdni.Enabled:=true;
      DBdireccion.Enabled:=true;
end;

procedure TFprincipal.EdniChange(Sender: TObject);
begin
    fmodulo.zqlistado_alumnos.ParamByName('dni').AsString:='%'+self.Edni.Text+'%';
    fmodulo.zqlistado_alumnos.Refresh;
end;

procedure TFprincipal.EnombresChange(Sender: TObject);
begin

    fmodulo.zqlistado_alumnos.ParamByName('apellidos').AsString:='%'+self.enombres.Text+'%';
    fmodulo.zqlistado_alumnos.Refresh;
end;

procedure TFprincipal.PageControl1Change(Sender: TObject);
begin
if PageControl1.TabIndex = 0then
             begin
            fmodulo.zqlistado_alumnos.Active:=true;
            fmodulo.zqlistado_alumnos.ParamByName('apellidos').AsString:='%';
           fmodulo.zqlistado_alumnos.ParamByName('dni').AsString:='%';
           fmodulo.zqlistado_alumnos.ParamByName('estado').AsString:='A' ;
           fmodulo.zqlistado_alumnos.Refresh;
            fmodulo.ZQlisalumnosfecha.Active:=true;
            fmodulo.ZQlisalumnosfecha.Refresh;
            fmodulo.zqmodificacionestado.ExecSQL;
            fmodulo.zqlistado_alumnos.Refresh;
            fmodulo.talumnos.Close;
             end
            else
            begin
                fmodulo.zqlistado_alumnos.Close;
                fmodulo.talumnos.Active:=true;
                 fmodulo.talumnos.Insert;
                //fmodulo.talumnos.Refresh;
                DBEinicio.Text:= datetostr(now);
            end;
end;

procedure TFprincipal.RadioGroup1Click(Sender: TObject);
begin
if (self.RadioGroup1.ItemIndex= 0) then
       begin
        fmodulo.zqlistado_alumnos.ParamByName('estado').AsString:='A' ;

       end
     else
     if(self.RadioGroup1.ItemIndex=1) then
       begin
        fmodulo.zqlistado_alumnos.ParamByName('estado').AsString:='I';
       end;
        fmodulo.zqlistado_alumnos.Refresh;
end;

end.

Neftali [Germán.Estévez] 21-10-2015 17:29:57

Suponiendo que el botón de modificar sea este:

Código Delphi [-]
procedure TFprincipal.BmodificarClick(Sender: TObject);
begin
      fmodulo.talumnos.Active:=true;
      fmodulo.talumnos.Locate('id_alumnos',fmodulo.zqlistado_alumnos.FieldByName('id_alumnos').AsString,[]);
      modificacion:=true;
      PageControl1.ActivePageIndex:=1;
      dbapellido.Enabled:=true;
      DBnombre.Enabled:=true;
      DBdni.Enabled:=true;
      DBdireccion.Enabled:=true;
end;

Lo que yo haría sería añadir un booleano como resultado del Locate.
Y consultas si has encontrado el registro o no.

jose.ignacio.ve 21-10-2015 17:33:06

si mi problema creo que no esta en eso. Si yo quiero saber porque al hacer clic en cargar alumno los campos vuelven con datos del primer registro y lo modifica a ese. osea que nunca me deja cargar mas alumnos.

jose.ignacio.ve 21-10-2015 20:17:44

Ya logre solucionar mi problema. a la hora de crear el formulario active y desactive las tablas.

AgustinOrtu 21-10-2015 21:12:49

Justamente eso te iba a contestar. Al abrir y cerrar un DataSet no se va a "acordar" de donde estaba; vuelve a First

jose.ignacio.ve 21-10-2015 21:33:32

muchas gracias!! ahora tenes algun post donde pinten las paginas? estuve buscando y no logro pintar las paginas del pagecontrol, o si sabes como hacer eso?

Casimiro Notevi 22-10-2015 00:07:17

Cita:

Empezado por jose.ignacio.ve (Mensaje 498229)
muchas gracias!! ahora tenes algun post donde pinten las paginas? estuve buscando y no logro pintar las paginas del pagecontrol, o si sabes como hacer eso?

Por favor, recuerda nuestra guía de estilo, ya no eres un novato aqui, gracias :)

jose.ignacio.ve 22-10-2015 00:10:10

si perdon!


La franja horaria es GMT +2. Ahora son las 22:56:44.

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