Ver Mensaje Individual
  #8  
Antiguo 28-05-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
pape19,

Cita:
Empezado por pape19
...en Delphi XE5...utilizo Datasnap, que se conecta a un servidor remoto...Lo que quiero lograr es alguna forma de guardar los datos de esa sesión localmente...


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

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.ListView.Types, FMX.StdCtrls, FMX.ListView, Data.DB, Datasnap.DBClient,
  FMX.Layouts, FMX.ListBox;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Status : Array[0..1] of Boolean = (False, True);

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
   Table : TClientDataset;
   i : Integer;

begin

   Randomize;

   Table := TClientDataset.Create(nil);
   Table.FieldDefs.Add('CodUser', ftInteger, 0, False);
   Table.FieldDefs.Add('NameUser', ftString, 50, False);
   Table.FieldDefs.Add('Date', ftDate, 0, False);
   Table.FieldDefs.Add('Status', ftBoolean, 0, False);
   Table.CreateDataset;
   Table.Open;

   Randomize;

   for i := 1 to 10 do
   begin
      Table.Append;
      Table.FieldByName('CodUser').AsInteger := i;
      Table.FieldByName('NameUser').AsString := 'Name-' + IntToStr(Random(100));
      Table.FieldByName('Date').AsDateTime := Now + Random(730);
      Table.FieldByName('Status').AsBoolean := Status[Random(2)];
      Table.Post;
   end;

   Table.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Table.cds');
   Table.Close;
   Table.Free

end;

procedure TForm1.Button2Click(Sender: TObject);
var
   Table : TClientDataset;
   i : Integer;
   S : String;

begin

   Table := TClientDataset.Create(nil);
   Table.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Table.cds');
   Table.Open;
   Table.First;

   ListBox1.Clear;

   while not Table.Eof do
   begin
      S := Format('%s  %s  %s  %s', [Table.FieldByName('CodUser').Value,
                                     Table.FieldByName('NameUser').Value,
                                     Table.FieldByName('Date').Value,
                                     Table.FieldByName('Status').Value]);
      ListBox1.Items.Add(S);
      Table.Next;
   end;

   Table.Close;
   Table.Free

end;

end.
El código anterior en Delphi XE7 sobre Windows 7 Professional x32, Ejemplifica el uso en FMX del componente TClientDataset para generar, guardar y leer información de la aplicación, como se muestra en la siguiente imagen:



Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 28-05-2015 a las 05:31:40.
Responder Con Cita