Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 31-01-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Muy complicado de hacer; las diferentes implementaciones estan en distintos arboles de herencia.

Por ejemplo en DB.pas se define el tipo TParam para operar con los parametros de los TQuery

Pero en ADODB.pas se define otro tipo TParameter que no tiene nada que ver con TParam

Tampco hay un ancestro comun para los TQuery. ADOQuery hereda de TCustomAdoDataSet quien hereda de TDataSet; y es en TCustomAdoDataSet donde se agrega la funcionalidad para los TParameter


Lo mas cercano que podes hacer es declarar una interface y luego crear clases wrapper, asi:

Código Delphi [-]
unit Unit3;

interface

type
  IQuery = interface
    ['{055FBC2E-FB1C-41DC-9696-B3071C8D04C4}']
    procedure SetParamValue(const AName: string; AValue: Variant);
    function GetParamValue(const AName: string): Variant;
    procedure Close;
    procedure Open;
  end;

procedure cargar_query(const AQuery: IQuery; const Parametro, Valor: string);

implementation

procedure cargar_query(const AQuery: IQuery; const Parametro, Valor: string);
begin
  AQuery.Close;
  AQuery.SetParamValue(Parametro, Valor);
  AQuery.Open;
end;

end.

Wrapper ADO:

Código Delphi [-]
type
  TAdoQueryWrapper = class(TADOQuery, IQuery)
  public
    procedure SetParamValue(const AName: string; AValue: Variant);
    function GetParamValue(const AName: string): Variant;
  end;

{ TAdoQueryWrapper }

function TAdoQueryWrapper.GetParamValue(const AName: string): Variant;
begin
  Result := Parameters.ParamByName(AName).Value;
end;

procedure TAdoQueryWrapper.SetParamValue(const AName: string; AValue: Variant);
begin
  Parameters.ParamByName(AName).Value := AValue;
end;

Ejemplo de uso:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  AQuery: TAdoQueryWrapper;
begin
  AQuery := TAdoQueryWrapper.Create(NIL);
  AQuery.Connection := ADOConnection1;
  DataSource1.DataSet := AQuery;
  AQuery.SQL.Text := ' SELECT * FROM Clientes WHERE Id > :Id ';
  cargar_query(AQuery, 'Id', '5');
end;
Responder Con Cita
 



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
Copiar informacion de un Tdataset a otro Tdataset joelphi Varios 10 19-02-2009 22:27:44
Paso de parámetros a TDataset arturom Firebird e Interbase 9 04-04-2008 18:04:03
Paso de parametros senpiterno Varios 1 11-04-2004 03:44:17
paso de parametros gustavo2 SQL 7 16-01-2004 15:46:23
Paso de parametros __cadetill PHP 2 12-08-2003 10:15:09


La franja horaria es GMT +2. Ahora son las 13:01:07.


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