Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-05-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Poder: 15
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
  #2  
Antiguo 05-05-2014
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 303
Poder: 22
tulio Va por buen camino
Gracias Bult

te cuento, estoy tratando de hacer un alta de un registro desde una aplicacion android sobre un servidor datasnap, el mismo corre en una pc que tiene una ip fija y apunta a una tabla de firebird 2.5 , las consultas la puedo hacer sin problemas viendo los registros en mi celular, pero al querer dar un alta no puedo.

si coloco este codigo
Código Delphi [-]
clientmodule1.Jcalles.insert;
 clientmodule1.JCallesCODIGO.AsString:='CODIGO';
 clientmodule1.JCallesDESCRI.AsString:='DESCRIPCION';
 Clientmodule1.JCalles.Post;

no da error , lo ejecuta , pero cuando reviso la tabla no hay nada grabado

Cuando uso parte del codigo que me recomendaste

Código Delphi [-]
 (Clientmodule1.JCalles.State in [dsEdit, dsInsert]) then
    begin
       Clientmodule1.JCalles.Post;
       Clientmodule1.JCalles.ApplyUpdates(-1);

me dice que no reconoce dsedit y dsinsert, Me faltara alguna UNIT ?

Saludos y muchas Gracias

tulio
Responder Con Cita
Respuesta



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 15:13:30.


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