Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 05-05-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Poder: 17
bulc Va por buen camino
LoQueYoUso

Utilizo cuatro botones: Altas, Guardar,Modificar y Cancelar. Es una base de datos de mamíferos con orden, familia y especies.
Código Delphi [-]
procedure TForm1.BitBtn2Click(Sender: TObject); //Guardar Familia 
begin
if  (ClientDataSet3.State in [dsEdit, dsInsert]) then
    begin
       ClientDataSet3.Post;
       ClientDataSet3.ApplyUpdates(-1);
       //DataSource1.DataSet.Refresh;  // Da 'Error catastrófico' !!
       DBGrid1.Columns[0].Font.Color:= clNavy;
    end else
    ClientDataSet3.Cancel;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);  //CANCELAR   CDS2
begin
 if ClientDataSet3.State in [dsInsert, dsEdit] then
    ClientDataSet3.Cancel;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);  // ALTA ESPECIE cds3
begin
if ClientDataSet3.State in [dsBrowse] then
   ClientDataSet3.Insert;
   ClientDataSet3.FieldByName('ENUM').AsInteger:= StrToInt(Label2.Caption)+1;
   Button1.Click;
   EsAltaE:=True;
end;

procedure TForm1.BitBtn6Click(Sender: TObject); //GUARDA ESPECIE
begin
if ClientDataSet3.State in [dsInsert, dsEdit] then
begin
       if DataSource3.DataSet.FieldByName('ESP').asString=''  then
          begin
          ClientDataSet3.Cancel;
          Button2.Click; // EEDIT_NO
          EsAltaE:=False;
          Exit;
          end else
          begin
            ClientDataSet3.Post;
            ClientDataSet3.ApplyUpdates(-1);
            //Detrás del Apply porque así el nuevo número ya se guardó.
            REVISA_GEN_ESP(IBQuery3, esAltaE, Label2);
          end;
end;
 Button2.Click;    //EEDIT_NO
 EsAltaE:=False;
 BitBtn5.Enabled:=True;
 BitBtn8.Enabled:=True;
end;

procedure TForm1.BitBtn7Click(Sender: TObject); // CANCELAR ESPECIE 3
begin
if ClientDataSet3.State in [dsInsert, dsEdit] then
    ClientDataSet3.Cancel;
end;
Para automatizar el incremento del nº de registro uso: Select GEN_ID(GEN_ESP, 1) FROM RDB$DATABASE, cuando es un Alta de nuevo registro. (Variable EsAlta:=True).
Espero que se entienda. Aquí la función externa para el autoincremento.
Código Delphi [-]
Function REVISA_GEN_ESP( IBQuery3: TIBQuery; EsAltaE : Boolean ; Label2: TLabel) : Integer;
Var
  Avance : String;   // Si EsNuevo=True, then Avance is 1.
begin
    if EsAltaE then Avance:='1' else Avance:='0';
    IBQuery3.Close;
    IBQuery3.SQL.Clear;
    IBQuery3.SQL.ADD('SELECT GEN_ID( GEN_ESP,'+Avance+' ) FROM RDB$DATABASE');
    IBQuery3.Open;  // Primero se abre y luego se recoge el resultado;
    Result := IBQuery3.Fields[0].AsInteger;
    Label2.Caption:= IntToStr(Result); // Label2 = GEN_ESP de ESPECIE.
    EsAltaE:=False;
END;
Suerte,
Bulc
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
buscar registros de un ClientDataSet a otro clientDataSet novato_erick Conexión con bases de datos 2 02-02-2013 20:48:09
Trigger Update or insert amerika111 MS SQL Server 0 03-08-2011 21:18:52
Insert or update dependiendo de pk Joe_Balda Firebird e Interbase 4 13-08-2010 16:04:12
Insert con ClientDataSet Rockin Conexión con bases de datos 25 15-07-2008 17:38:47
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37


La franja horaria es GMT +2. Ahora son las 04:05:34.


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
Copyright 1996-2007 Club Delphi