Still having problems!
when I create dataset can populate etc but if I try to add an index no data appears in the dataset and no error is generated
Here is some demo code
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, memds, FileUtil, Forms, Controls, Graphics,
Dialogs, StdCtrls, DBGrids, bufdataset;
type
{ TForm1 }
TForm1 = class(TForm)
BufDataset1: TBufDataset;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
MemDataset1: TMemDataset;
Quit: TButton;
PopulateDataset: TButton;
Memo1: TMemo;
ReadDataset: TButton;
ConnectDataset: TButton;
procedure ConnectDatasetClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure PopulateDatasetClick(Sender: TObject);
procedure QuitClick(Sender: TObject);
procedure ReadDatasetClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
thedata: Tbufdataset;
procedure Create_A_Dataset;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Create_A_Dataset;
begin
thedata := Tbufdataset.Create(self);
with thedata.FieldDefs do
begin
add('Field1',ftstring,10,true);
add('Field2',ftstring,10,true);
add('Field3',ftstring,10,true);
add('Field4',ftstring,10,true);
add('Field5',ftstring,10,true);
end;
thedata.MaxIndexesCount:= 100;
thedata.createdataset;
thedata.open;
thedata.AddIndex('Field1idx','Field1',[ixPrimary]); // Rem this line and next for code to work
thedata.IndexName:= 'Field1idx'; //Rem this line for code to work
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Create_A_Dataset;
end;
procedure TForm1.ConnectDatasetClick(Sender: TObject);
begin
Datasource1.DataSet := thedata;
end;
procedure TForm1.PopulateDatasetClick(Sender: TObject);
var I,J,thevalue : integer ;
thefieldname: string;
begin
for i := 1 to 100 do
begin
thedata.Append;
for j := 1 to 5 do
begin
thefieldname := 'Field' + inttostr(j);
thevalue := i + j;
thedata.FieldByName(thefieldname).asstring := inttostr(thevalue);
end;
thedata.post;
end;
end;
procedure TForm1.QuitClick(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.ReadDatasetClick(Sender: TObject);
var tempstr: string;
i : integer;
begin
memo1.Clear;
thedata.First;
while not thedata.EOF do
begin
tempstr := '';
for i := 0 to 4 do
tempstr := tempstr + thedata.Fields.value + ' ';
memo1.Append(tempstr);
thedata.next;
end;
end;
end.