Ver Mensaje Individual
  #191  
Antiguo 08-08-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Reputación: 23
José Luis Garcí Va camino a la fama
El módulo de agenda de contactos



Aquí con una letra seleccionada



El código en https://gist.github.com/anonymous/6187111

y la función ActQAgenda

Código Delphi [-]
//-----------------------------------------------------------------------------
//*********************************************************[ ActQAgenda ]******
//  14/06/2012  JLGT  Para modificar la sentencia de un querry para agendas
//-----------------------------------------------------------------------------
//  Estudiando como poder hacer mi código mas corto se me ocurrio esta función
//  para usar un los IBQerry, para mi base de datos Firebird. para el uso de agendas
//  El tema es que cada vez que utilizo un querry y lo modifico tengo que
//  escribir unas 20 lineas y mediante este sistema, logro reducirlo a una sola
//  ya que es un, código repetitivo y soló varia el nombre del query y la
//  sentencia Sql, cree esta función
//-----------------------------------------------------------------------------
// [QRY]              Tibquery a actualizar
// [TAB]              El tabcontrol que lo llama
// [Campo]            Nombre del Campo por el que funcionara el TabControl
// [TxtSql]           Cadena de texto con sentencia SQL
// [MostrarMEnsaje]   Si muestra el mensaje de la Exception
// [RetornarMEnsaje]  Si retorna la cadena Sql que da el Error
// [RetornarQuerry]   Si retorna El querry a la cadena sql de antes del error
//-----------------------------------------------------------------------------
//  Base de datos a usar CLIENTES usar en el tabChage
//   if ActQAgenda(IBQuerry1,Tabcontrol1,'Nombre','Select * form Clientes')=true then
//                   showmessage('Cambio OK') else showmessage('El cambio a fallado');
//- ---[DETALLE]---------------------------------------------------------------
// El grid al que este unido debe tener los campos fijados para evitar un error
//-----------------------------------------------------------------------------
Function ActQAgenda(QRY:TIBQuery; TAB:TTabControl;Campo:String;TxtSql:string; MostrarMensaje:boolean=VMiLogico;Retornarmensaje:boolean=VMiLogico; RetornarQuerry:boolean=VMiLogico): Boolean;
var AntSql:string;
    Letraagenda: string;
begin // Cuando cambiamos en la agenda
  try
    try
      Letraagenda := TAB.Tabs[TAB.TabIndex];
      if TAB.TabIndex = 0 then
      BEGIN
         QRY.Active:=false;
         QRY.SQL.Clear;
         QRY.SQL.Text:=TxtSql;
         QRY.Active:=true;
         Result:=true;
      END else
      BEGIN
          AntSql:=QRY.SQL.Text;
          QRY.Active:=false;
          QRY.SQL.Clear;
          QRY.SQL.Text:=TxtSql+' where UPPER('+Campo+') Between :LDESDE and :LHASTA';
          QRY.ParamByName('LDESDE').AsString := Letraagenda;
          QRY.ParamByName('LHASTA').AsString := Letraagenda + '||Z';
          QRY.Active:=true;
          Result:=true;
      END;
    except
        on E: Exception do
        begin
           if MostrarMensaje=true then
           begin
             ShowMessage('Se ha producido un error: ' + Chr(13) + Chr(13)
                       + 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13)
                       + 'Mensaje del error: ' + E.Message+ Chr(13) + Chr(13)
                       +'  '+ Chr(13) + Chr(13)
                       +'Se volvera al estado anterior');
           end;
        QRY.Active:=False;
        Result:=false;
        end;
    end;
  finally
      if Result=false then
      begin
         if Retornarmensaje=true then  ShowMessage('Sentencia Sql que ha dado Error' + Chr(13) + Chr(13)+ QRY.SQL.Text);
         if RetornarQuerry=true then
         begin
            QRY.Active:=false;
            QRY.SQL.Clear;
            QRY.SQL.Text:=TxtSql;
            QRY.Active:=true;
         end;
      end;
  end;
end;
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita