Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 12-12-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 22
movorack Va camino a la famamovorack Va camino a la fama
Ok... me cogiste de buenas pulgas y pues...

Antes que leas el código recuerda:

Buscar siempre en google.
Aquí una entrada en Delphi FAQ's
temas relacionados en About.com

Ahora sí... una aproximación a lo que te sugerí. La implementación depende de tu programa.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    function OpenDataset(DataSet : TDataSet; StrSQL : string; Parameters : array of Variant) : Boolean;
  public
    { Public declarations }
    //Mi propia función de manejo de excepciones
    procedure MyOnException(Sender: TObject; E : Exception);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MyOnException(Sender: TObject; E: Exception);
begin
  {Aquí puedo manejar cualquier cosa antes de mostrare el mensaje de error
   Ej: Escribir en un log, Enviar alguna notificación}

  //No se debe volver a hacer raise de la excepción ya que
  //Esto generaría un bucle que llevaría a error
  Application.ShowException(E);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //Al crear el formulario Establezco mi función
  //como manejador de excepciones global
  Application.OnException := MyOnException;
end;

procedure TForm1.Button1Click(Sender: TObject);
  var
    lQry : TQuery;
begin
  lQry := TQuery.Create(Self);
  try
    try
      if lQry.Active then
        lQry.Close;
      lQry.Open;
    except
      on e : EDatabaseError do
      begin
        if Pos('NO SQL', UpperCase(E.Message)) > 0 then
          raise Exception.Create('No ha establecido la cadena de consulta.')
        else
          raise Exception.Create('Ha ocurrido un error en el acceso a datos. Error: '+e.Message);
      end;
      on e : exception do
      begin
        raise Exception.Create('Ha ocurrido un error general al ejecutar la consulta. Error: '+e.Message);
      end;
    end;
  finally
    lQry.Free;
  end;
end;

function TForm1.OpenDataset(DataSet: TDataSet; StrSQL: string;
  Parameters: array of Variant): Boolean;
  var
    i : Integer;
begin
  if DataSet.Active then
    DataSet.Close;

  if DataSet is TQuery then
  begin
    TQuery(DataSet).SQL.Text := StrSQL;
    for i := 0 to Length(Parameters) - 1 do
    begin
      TQuery(DataSet).Params[i].Value := Parameters[i];
    end;
  end;

  try
    DataSet.Open;
  except
    on e : Exception do
    begin
      {Aquí darle el manejo que necesito para tratar de solucionar el error}
      raise;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
  var
    lQry : TQuery;
begin
  lQry := TQuery.Create(Self);
  try
    OpenDataset(lQry, 'select * from tabla where id = :id', [123456]);
  finally
    lQry.Free;
  end;
end;

end.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
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
Conexión a SQL server zvf Conexión con bases de datos 7 19-12-2007 16:41:30
Conexión MySQL 4.1 Server MaMu MySQL 1 26-08-2007 14:04:56
Conexion con Ms Sql server mrh_peru Conexión con bases de datos 4 19-10-2006 01:48:27
conexion a sql server nnl MS SQL Server 6 25-09-2006 21:50:04
Conexion con mysql server Cosgaya MySQL 2 27-07-2006 17:48:18


La franja horaria es GMT +2. Ahora son las 06:44:02.


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