Ver Mensaje Individual
  #12  
Antiguo 28-09-2012
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Reputación: 16
novato_erick Va por buen camino
Cita:
AzidRain
En FB supongo que el generador hace lo mismo que el campo autoincrementado, ahí los expertos nos dirán
En realidad si hace lo mismo. Estamos hablando de sql standart aquí dejo este enlace http://es.wikipedia.org/wiki/Firebird. Tambien veo que utilizas Transacciones, lo mismo realice lo unico que para obtener el id generado desde el servidor utilizo un ClientDataSet con los eventos puesto anteriomente. y luego utilizando este modelo en transacciones.

Código SQL [-]
procedure TfrmPrincipal.btnAgregaAgendaClick(Sender: TObject);
var
ExitoAgenda :Boolean;

begin
 HoraA := dtpHora.Time;
 idAgenda := dmLogicaNegocio.cdsAgendaID_AGENDA.AsInteger; //Aqui es donde obtengo ya mi id que proviene del Generador del servidor llamado: AGENDAID_AGENDA
 TrnAgenda := dmConecta.FBLINUXCONECTION.BeginTransaction;
  try
  //// Instrucciones para guardar los datos En la Agenda
   with dmConecta.qAgenda do
   begin
     sql.Clear;
     sql.Add('Insert into Agenda (ID_AGENDA, ID_EMPLEADO, FECHA, ESTADO)');
     sql.Add(' Values (IdAgenda, idEmpleado, fecha, Estado)');
     ParamByName('pidAgenda').asInteger :=  idAgenda;
     ParamByName('pidEmpleado').AsInteger := StrToInt(dbeidEmpleado.Text);
     ParamByName('pFecha').AsDate := monthCalendar1.Date;
     ParamByNAme('pEstado').AsString := '1';
     ExecSQL;
   end;
   with dmConecta.qRecordatorio do
     begin
        Close;
        SQL.Clear;
        SQL.Add('Insert into RECORDATORIOS (ID_AGENDA, TITULO, MENSAJE, HORA)');
        SQL.Add('Values (:idAgenda, :Titulo, :Mensaje, :Hora)');
        idAgenda :=  dmLogicaNegocio.cdsAgendaID_AGENDA.asInteger;//dmConecta.qAgendaID_agenda.AsInteger;//(GEN_AGENDA_ID);
        ParamByName('idAgenda').AsInteger := idAgenda;
        ParamByName('Titulo').AsString := eTitulo.Text;
        ParamByName('Mensaje').AsString := mDetalle.Text;
        ParamByName('Hora').AsTime := HoraA;
        ExecSQL;
      begin
          dmConecta.FBLINUXCONECTION.CommitFreeAndNil(TrnAgenda);
          ExitoAgenda := True;
        end;
    end;
    Except
    on E: Exception do
    begin
      dmConecta.FBLINUXCONECTION.RollbackFreeAndNil(TrnAgenda);
      ShowMessage('Error Encontrado'+ e.Message);
    end;
    end;
    if ExitoAgenda = True then
    begin
      ShowMessage('Recordatorio Ingresado'+ 'Su Numero de Agenda es:' + dbeTomaConsecutivo.Text);
      dmConecta.qAgenda.Close;
      dmConecta.qRecordatorio.Close;
      dmLogicaNegocio.cdsAgenda.Close;
      MonthCalendar1.Date := Now;
      eTitulo.Text := '';
      mDetalle.Text :='';
      frmPrincipal.GroupBox1.Height := 178;
    end;
end;

Trato de que mi ClientDataSet se abra para obtener mi id en el evento OnEnter pero si utiliza el usuario la tecla Tab no se abre... aun estoy viendo como hago eso...

Gracias chicos

Saludos
Responder Con Cita