Tema: TADOQuery
Ver Mensaje Individual
  #1  
Antiguo 27-02-2009
bastian bastian is offline
Registrado
 
Registrado: ene 2009
Posts: 4
Reputación: 0
bastian Va por buen camino
TADOQuery

buenas a todos
XP sp2, mysql, verdion de delphi desconocida, la imagen del about no la pude subir o debria venir aca




quiero crear una clase la cual me provea un punto de accesso comun
a un componente que me permita realizar consultas, TADOQuery, aqui viene el condigo

la idea basica era realizar un patron Singleton...

pero me sale un error : Cannto perform this operation on a closed dataset.
cuando le doy F9 al proyecto y en el form que usa esta clase

Código:
unit DBQuery;

interface

uses
  DB, ADODB,
  DM, ListaSE, QParametro;

type
  TDBQuery = class

    private

      parametroCargado : Boolean;
      listaSE : TListaSE;

      class var
        query : TADOQuery;
        preguntador : TDBQuery;
      constructor Create();// override;

    public
      class function getInstance(): TDBQuery;
      class function sayHi() : String;

      function consultaSelect( consulta : String ) : Integer;
      function getFieldByName( campo : String ) : Variant;
      destructor Destroy(); override;
      procedure cargarParametro( param : TQParametro);


  end;

implementation

{ TDBQuery }

procedure TDBQuery.cargarParametro(param: TQParametro);
begin
  listaSE.insertarFinal(param);
  Self.parametroCargado := True;
end;

function TDBQuery.consultaSelect(consulta: String): Integer;
var
  param : TQParametro;
  nombre , valor : String;

begin

  Self.query.SQL.Clear();
  Self.query.SQL.Add(consulta);

  if parametroCargado = True then
  begin

      while Self.listaSE.esVacio() <> true do
      begin

        param := Self.listaSE.getDato();
        nombre := param.getNombre();
        valor :=  param.getValor();

        Self.query.Parameters.ParamByName( nombre ).Value := valor;

      end;
      parametroCargado := False;

  end;

  Result := Self.query.RecordCount;
end;

constructor TDBQuery.Create;
begin

  query := TADOQuery.Create(nil);
  query.Connection := DataModule1.AC1;

  ///--------------------------------------------------
  //If query.Active then query.Close;
   //   query.Prepared := True;
   //   query.Open();
  ///--------------------------------------------------

  listaSE := TListaSE.Create();

end;

destructor TDBQuery.Destroy;
begin
  query.Free;
  //lista.Free;

  //If query.Active then query.Close;
  query.Prepared := False;
  inherited;
end;

function TDBQuery.getFieldByName(campo: String): Variant;
begin
  Self.query.FieldByName(campo).Value;
  Self.query.Next;
end;

class function TDBQuery.getInstance: TDBQuery;
begin
  if Self.preguntador = nil then begin
    preguntador := TDBQuery.Create();
  end;

  Result := preguntador;
end;

class function TDBQuery.sayHi: String;
begin
  Result := 'Hola Amigo. THis is a test, dont scare yourself.';
end;

end.
procedure TDBQuery.cargarParametro(param: TQParametro);
begin
  listaSE.insertarFinal(param);
  Self.parametroCargado := True;
end;

function TDBQuery.consultaSelect(consulta: String): Integer;
var
  param : TQParametro;
  nombre , valor : String;

begin

  Self.query.SQL.Clear();
  Self.query.SQL.Add(consulta);

  if parametroCargado = True then
  begin

      while Self.listaSE.esVacio() <> true do
      begin

        param := Self.listaSE.getDato();
        nombre := param.getNombre();
        valor :=  param.getValor();

        Self.query.Parameters.ParamByName( nombre ).Value := valor;

      end;
      parametroCargado := False;

  end;

  Result := Self.query.RecordCount;
end;

constructor TDBQuery.Create;
begin

  query := TADOQuery.Create(nil);
  query.Connection := DataModule1.AC1;

  //TDataSet.
  //query.Recordset.Open(nil, nil, nil, nil, 1);
  listaSE := TListaSE.Create();

end;

function TDBQuery.getFieldByName(campo: String): Variant;
begin
  Self.query.FieldByName(campo).Value;
  Self.query.Next;
end;

class function TDBQuery.getInstance: TDBQuery;
begin
  if Self.preguntador = nil then begin
    preguntador := TDBQuery.Create();
  end;

  Result := preguntador;
end;

class function TDBQuery.sayHi: String;
begin
  Result := 'Hola Amigo. THis is a test, dont scare yourself.';
end;

end.
Debe de ser algun error en la creacion ya que no estoy usando componentes visuales, algo que normalmente se hace automaticamente
jpero que?
Si es algun error de novato perdon
Responder Con Cita