Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2009
bastian bastian is offline
Registrado
 
Registrado: ene 2009
Posts: 4
Poder: 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
  #2  
Antiguo 27-02-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por bastian Ver Mensaje
XP sp2, mysql, verdion de delphi desconocida, la imagen del about no la pude subir o debria venir aca

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
No hace falta que subas la imagen del about, basta con que mires el númeo y lo digas.

En cuanto al error, tiene pinta de que estás accediendo a consultar/editar/... el dataset (Query) sin haberlo abierto antes.
Ejecuta paso a paso y sabrás exactamente en qué linea está fallando.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Problemas con el TADOQuery Alexandro SQL 8 16-01-2009 07:22:22
Problema con TADOQuery Nomad SQL 11 25-10-2007 15:19:27
Clonar TADOQuery david.rguez Conexión con bases de datos 2 19-09-2007 16:26:44
Tadoquery Y Dbgrid fernandoio Conexión con bases de datos 3 11-06-2006 04:10:11
Problema con TADOQuery saul_montalvo Conexión con bases de datos 2 23-05-2003 19:08:54


La franja horaria es GMT +2. Ahora son las 10:23:02.


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