FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
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. |
|
|
|