Ver Mensaje Individual
  #6  
Antiguo 25-06-2014
luisarturop luisarturop is offline
Registrado
NULL
 
Registrado: feb 2011
Posts: 4
Reputación: 0
luisarturop Va por buen camino
Nueva Solución encontrada...

Nada Manuel,

El error persiste, continué investigando y encontré aqui en ClubDelphi que al parecer este error se ha venido presentando desde la versión de RXLib de Delphi XE.
Ya encontré una solución alterna, la planteo por si alguien se le presenta el mismo inconveniente.
En mi caso el RXMemoryData no lo conecto a una Tabla en BD ya que lo utilizo para la revisión de un proceso. La solución es la siguiente:
En vez de utilizar un RXMemoryData, utilice un TClientDataSet, obligatoriamente debo asociarle un TDataSetProvider y a este DataSetProvider es necesario asociarle un DataSet (ó Tabla en BD), por esto le asocie el RXMemoryData original. Una vez hecho esto puedo realizar lo siguiente en código Delphi:

Código Delphi [-]

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, RxMemDS, Vcl.StdCtrls,
  Datasnap.DBClient, Datasnap.Provider, ZAbstractRODataset, ZAbstractDataset,
  ZAbstractTable, ZDataset;

type
  TForm1 = class(TForm)
    Button1: TButton;
    RxMemoryData1: TRxMemoryData;
    RxMemoryData1Nombre: TStringField;
    Memo1: TMemo;
    ClientDataSet1: TClientDataSet;
    ClientDataSet1Nombre: TStringField;
    DataSetProvider1: TDataSetProvider;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientDataSet1.Open;
  // Ingreso el primer registro
  ClientDataSet1.Append;
  ClientDataSet1Nombre.Value := 'Luis';
  ClientDataSet1.Post;
  // Ingreso el segundo registro
  ClientDataSet1.Append;
  ClientDataSet1Nombre.Value := 'Zolibel';
  ClientDataSet1.Post;
  // Ingreso el tercer registro
  ClientDataSet1.Append;
  ClientDataSet1Nombre.Value := 'Arturo';
  ClientDataSet1.Post;
  // Ingreso el cuarto registro
  ClientDataSet1.Append;
  ClientDataSet1Nombre.Value := 'Juan';
  ClientDataSet1.Post;

  // Si deseo filtrar algun dato lo hago tipo SQL de la siguiente manera:
  ClientDataSet1.Filter := 'Nombre='+QuotedStr('Zolibel')+' or Nombre='+QuotedStr('Juan');
  ClientDataSet1.Filtered := True;

  // Si deseo Ordenar los datos por algún Campo lo hago de la siguiente manera
  ClientDataSet1.IndexFieldNames := 'Nombre';

  ClientDataSet1.First;
  while not ClientDataSet1.Eof do
  begin
    Memo1.Lines.Add(ClientDataSet1Nombre.Value);
    ClientDataSet1.Next;
  end;
  ClientDataSet1.Close;
end;

end.

Es algo rebuscado, pero a mí me funciona por los momentos. Espero a alguien lo pueda sacar de apuros también.

Muchas Gracias,

Saludos
Responder Con Cita