![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Problemas con TclientDtataset
Saludos a todos,
Mi problema es el siguiente: Estoy creano un componente TclientDataset al cual le quiero agregar dos componetes TsqlDataset y TdatasetProvider, el problema es no he podido asignarle la propiedad ProviderName a mi componente que tendria que ser el nombre del TdatasetProvider que declaro como variable dentro del mismo componete, anexo el codigo para ver si me pueden ayudar: Código:
unit SCEClientDataSet;
interface
uses
Windows, Messages, SysUtils, Classes, DB, DBClient, Provider, SqlExpr;
type
TSCEClientDataSet = class(TClientDataSet)
private
procedure SetSqlDataset(const Value: TSQLDataSet);
{ Private declarations }
protected
// aqui declaro la variable
FDatasetProvider : TDataSetProvider;
FSqlDataset : TSQLDataSet;
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
published
// esta la utilizo para
property SqlDataset : TSQLDataSet Read FSqlDataset Write SetSqlDataset;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('dbExpress', [TSCEClientDataSet]);
end;
{ TSCEClientDataSet }
constructor TSCEClientDataSet.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDatasetProvider:= TDataSetProvider.Create(Self);
FDatasetProvider.DataSet := FSqlDataset;
self.ProviderName := FDatasetProvider.Name;
end;
destructor TSCEClientDataSet.Destroy;
begin
FDatasetProvider.Free;
FDatasetProvider := Nil;
inherited Destroy;
end;
procedure TSCEClientDataSet.SetSqlDataset(const Value: TSQLDataSet);
begin
FSqlDataset := Value;
end;
end.
|
|
#2
|
||||
|
||||
|
Tienes que darle un nombre al componente TDataSetProvider en el constructor Create de la clase (cuando un componente es creado manualmente no se le asigna un nombre por defecto).
Saludos! |
|
#3
|
|||
|
|||
|
Gracias por responder.
Ya he probado algo asi, aun que veo una diferencia Código:
FDatasetProvider.Name := '(Nombre)'; Gracias de nuevo. |
|
#4
|
||||
|
||||
|
No, jeje!
, en realidad lo que quería decir con '(Nombre)' es que pusieras cualquier nombre que quisieras como: 'DataSetProvider1' o lo que sea pero sin los parentesis.Por cierto, ¿funcionó? Saludos! |
|
#5
|
|||
|
|||
|
Nop, de echo hize la prueba nuevamente y non nofunciono.
haber si vieras otra cosa. Grasis de nuevo. |
|
#6
|
||||
|
||||
|
Existe otra manera que quizás sea mas acorde a lo que quieres hacer, utilizar el método "SetProvider" del ClientDataSet:
La desventaja de usar este método es que tendrás que invocarlo cada vez que abras el ClientDataSet. Por lo que mejor sería asignarlo en el método que se ejecuta antes de abrir tu componente:
Saludos! Última edición por jmariano fecha: 14-09-2005 a las 17:12:52. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|