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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 18-06-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
fjcg02,

Cita:
Empezado por fjcg02
...TClientDataset al que le creo en runtime los campos que necesito...me funciona perfectamente...cuando lanzo el proceso por segunda vez, cambiando los campos, me da un error...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBClient, DB, Grids, DBGrids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    DBGrid1: TDBGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;
  Table : TClientDataset;
  DS : TDataSource;

implementation

{$R *.dfm}

// Crea campos del CDS
function CreateField(CDS : TClientDataset; FieldName : String) : Boolean;
var
   F : TStringField;

begin

   F := TStringField.Create(CDS);
   F.FieldName := FieldName;
   F.Name := FieldName;
   F.DataSet := CDS;
   F.Size := 100;
   F.DisplayLabel := 'N-' + FieldName;
   F.DisplayWidth := 10;

end;

// Crea el CDS
procedure TForm1.Button1Click(Sender: TObject);
begin
   if not Assigned(Table) then
      Table := TClientDataset.Create(nil);
end;

// Asigna campos al CDS
procedure TForm1.Button2Click(Sender: TObject);
begin
   if Assigned(Table) and (Table.State <> dsBrowse) then
   begin
      CreateField(Table,'C1');
      CreateField(Table,'C2');
      CreateField(Table,'C3');
      CreateField(Table,'C4');
      Table.CreateDataset;
   end;
end;

// Llena los campos del CDS
procedure TForm1.Button3Click(Sender: TObject);
var
   i : Integer;
begin
   if Assigned(Table) and (Table.FieldCount <> 0) then
   begin
     Randomize;
     Table.Open;
     Table.Append;
     for i := 0 to Table.FieldCount - 1 do
        Table.Fields[i].Value := 'Data-' + IntToStr(Random(1000));
     Table.Post;
   end;
end;

// Visualiza el CDS
procedure TForm1.Button4Click(Sender: TObject);
var
   i : Integer;
begin
   if Assigned(Table) then
   begin
      DS := TDataSource.Create(nil);
      DS.DataSet := Table;
      DBGrid1.DataSource := DS;
      for i := 0 to Table.FieldCount - 1 do
         DBGrid1.Columns[i].Width := 100;
   end;
end;

// Libera el CDS
procedure TForm1.Button5Click(Sender: TObject);
var
   i : Integer;

begin

   if Assigned(Table) and (Table.FieldCount <> 0) then
   begin
      DS.DataSet := nil;
      DBGrid1.DataSource := nil;
      for i := Table.Fields.Count - 1 to 0 do
         Table.Fields[i].Free;
      Table.Free;
      Table := nil;
   end;

   if Assigned(Table) then 
   begin
      Table.Free;
      Table := nil;
   end;

end;

// Libera recursos de Form1
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action := caFree;
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Permite crear y eliminar un TClientDataset de forma dinámica como se muestra en la siguiente imagen:



Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 18-06-2015 a las 17:43:15.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Creacion de grupos en Runtime Willo Impresión 1 16-11-2012 20:05:41
Problema de creación en Runtime hgiacobone OOP 7 16-09-2011 15:19:35
Creación de TFields en Runtime vinguel Conexión con bases de datos 5 16-11-2010 15:16:18
Creación de jpg en RunTime sierraja Gráficos 4 06-10-2005 04:26:04
Creación de Forms en runtime con Tipo dinámico Aprendiz OOP 2 29-09-2004 10:35:25


La franja horaria es GMT +2. Ahora son las 22:57:16.


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