Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

Как динамически создать вычисляемое или lookup поле ?   Найти похожие ветки 

 
Пастор   (2002-07-18 18:46) [0]

Как динамически создать вычисляемое или lookup поле ?


 
kaif   (2002-07-18 20:56) [1]

Банально. Через Create. Например,

sf := TStringField.Create(Form1);
Почитай Help. Там все написано.


 
Пастор   (2002-07-18 22:57) [2]

Пишу
procedure TForm1.Button1Click(Sender: TObject);
var TF: TField;
begin
TF:=TField.Create(Query1);
TF.SetFieldType(ftInteger);
TF.FieldName:="NID";
TF.FieldKind:=fkCalculated;
Database1.Open;
TF.DataSet:=Query1;
Query1.Open;
Query1.Fields.Add(TF);
end;

Не работает - пишет поле не может быть вычислимым.


 
Пастор   (2002-07-19 10:50) [3]

нашел рабочий примерчик ! мож кому пригодиться..

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, DB,
DBTables, StdCtrls;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure TaxAmountCalc(DataSet: TDataset);
private
{ Private declarations }
TaxAmount: TFloatField;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TaxAmountCalc(DataSet: TDataset);
begin
Dataset["TaxAmount"] := Dataset["ItemsTotal"] * (Dataset["TaxRate"] / 100);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
MyTable: TTable;
MyDataSource: TDataSource;
MyGrid: TDBGrid;
begin
{ Создаем компонент TTable -- связанная таблица базы данных будет создана ниже. }
MyTable := TTable.Create(Self);

with MyTable do
begin
{ Определяем основную базу данных и таблицу.
Примечание: Test.DB пока не существует. }
DatabaseName := "DBDemos";
TableName := "Test.DB";

{ Назначаем TaxAmountCalc обработчиком события,
чтобы использовать его при наступлении события
OnCalcFields в MyTable. }
OnCalcFields := TaxAmountCalc;

{ Создаем и добавляем определения полей к массиву TTable
FieldDefs, затем создаем TField с использованием
информации из определения поля. }
with FieldDefs do
begin
Add("ItemsTotal", ftCurrency, 0, false);
FieldDefs[0].CreateField(MyTable);
Add("TaxRate", ftFloat, 0, false);
FieldDefs[1].CreateField(MyTable);
TFloatField(Fields[1]).DisplayFormat := "##.0%";

{ Создаем вычисляемое TField, назначаем свойства,
и добавляем поле к массиву определений MyTable. }
TaxAmount := TFloatField.Create(MyTable);
with TaxAmount do
begin
FieldName := "TaxAmount";
Calculated := True;
Currency := True;
DataSet := MyTable;
Name := MyTable.Name + FieldName;
MyTable.FieldDefs.Add(Name, ftFloat, 0, false);
end;
end;

{ Создаем в базе данных новую таблицу,
используя в качестве основы MyTable. }
MyTable.CreateTable;
end;

{ Создаем компонент TDataSource
и назначаем его MyTable. }
MyDataSource := TDataSource.Create(Self);
MyDataSource.DataSet := MyTable;

{ Создаем табличную сетку, отображаем
на форме, и назначаем MyDataSource для
получения доступа к данным из MyTable. }
MyGrid := TDBGrid.Create(Self);
with MyGrid do
begin
Parent := Self;
Align := alClient;
DataSource := MyDataSource;
end;

{ Запускаем нашу конструкцию! }
MyTable.Active := True;
Caption := "Новая таблица " + MyTable.TableName;
end;

end.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-23971
Nox
2002-07-26 22:57
2002.08.08
<<<Помогите!>>>


6-24149
Delphi5.01
2002-05-28 07:16
2002.08.08
Считывание информации с FTP сервера.


3-23906
BAY
2002-07-18 05:23
2002.08.08
Interbase


4-24282
IIS
2002-05-31 11:35
2002.08.08
Как програмно раздавать права на реестр?


1-24059
Arhangel
2002-07-25 13:32
2002.08.08
Меню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский