![]() |
![]() |
| 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. |
|
#7
|
|||
|
|||
|
Gracias, lo estoy probando tan pronto lo termine te platico como me fue.
gracias por tu tiempo |
|
#8
|
|||
|
|||
|
Gracias.
Me funcion muy bien, Claro me me esta dando otros errores ya que aun estoy en el proceso de construccion de mi componenete. Para todos los del Club. jmariano me ayudo a resolver mi problema sin embargo muchos se tomaron el tiempo de leer este hilo y el tiempo es lo mas valioso que tenemos. Gracias por su tiempo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|