Delphi の TAdoTable にプログラムでフィールドを追加する方法に基づいて、すべてのフィールドを FibPlus データセット (TDataSet の子孫である可能性があります) に動的に追加しようとしています。各フィールドは変数として宣言されます。宣言部分
TForm4 = class(TForm)
pFIBDatabase1: TpFIBDatabase;
pFIBTransaction1: TpFIBTransaction;
ds1: TpFIBDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
iVERField : TFIBIntegerField;//I need that all fields to be represented by a variable
{ Public declarations }
end;
formcreate イベントでは、すべてのフィールドを作成し、必要なプロパティを設定して、それらすべてをデータセットに動的に追加します。
procedure TForm4.FormCreate(Sender: TObject);
var i:Integer;
fieldDef :TFieldDef;
begin
ds1.SQLs.SelectSQL.Text := 'select ver from ver';
ds1.Fields.Clear;
ds1.FieldDefs.Clear;
ds1.FieldDefs.update;
iVERField := TFIBIntegerField.Create(ds1);
iVERField.FieldName := 'VER';
iVERField.DisplayLabel := 'VER';
iVERField.Name := 'iVERField';
iVERField.DataSet := ds1;
ds1.Fields.Add(iVERField);
ds1.Open;
end;
私の問題は、フィールドがdbgridで重複して表示されることです
LE: フィールドが 2 回表示される理由:
iVERField.DataSet := ds1; //one
ds1.Fields.Add(iVERField);//two
LE1: これは、すべてのフィールドを変数としてデータセットに追加する方法ですか?