Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вычисляемые поля


lety ©   (2002-11-25 18:00:00) 

Программно создается таблица. В ней нужны вычисляемые поля. Если я одному из добавленных полей FieldKind присваиваю fkCalculated, то при вычислении повляется сообще об ошибке "неверный тип поля".

Можно ли программно (не с помощью редактора полей) создать вычисляемые поля (или лукап) и как это сделать?


oss   (2002-11-28 12:11:00) [1]

ну блин.... напиши обычный select или create со всеми нужными соединениями и выборками, и надежнее и наверно проще будет


ЮЮ   (2002-11-28 09:44:00) [2]

Если "GroupName" - лукап поле, то зачем оно добавлено в ФИЗИЧЕСКУЮ таблицу?
Table1.FieldDefs.Add("GroupName",ftString,60,false);
Table1.CreateTable;
лукап поля существуют только в клиентском DataSete


lety   (2002-11-28 08:59:00) [3]

> MsGuns © (28.11.02 03:25)

Все поля я создаю выше Их 3 десятка, и кодоб там тоже есть. Я комментарий написала "//добавляются поля из другой (заполненной таблицы)" Потому что суть вопроса не этом!!
Я про лукап поле спрашиваю.


MsGuns   (2002-11-28 04:16:00) [4]

>IrenFD © (28.11.02 04:08)

Не знаю что Вы имеете в виду под словом "Мастер создания лукапного поля", но если DBD (Database DeskTop), то советую Вам решительно от него отказаться !. Идеология LookUp в Paradox (dBase) и клиент-серверных БД существенно отличается !. А вот в свойствах LookUpxxx "папы" всех датасетов намного больше БИЗНЕС-логики - поэтому присмотреться надо ВАМ.


IrenFD   (2002-11-28 04:08:00) [5]

Я вот сколько работаю с Делфи, так мне все кажется, что в мастере создания лукапного поля и в свойствах этого же поля свойства LookupKeyFields и LookupResultField перепутаны.
Внимательно присмотритесь, потому что мне все время после добавления лукапного поля приходится в свойствах менять поля.


MsGuns   (2002-11-28 03:25:00) [6]

Ошибка в том, что ты путаешь TTablle с ФИЗИЧЕСКОЙ таблицей (а BatchMove работает с физическими сущностями). Когда ты даешь Create физ.таблице, то ОНА и ДОЛЖНА СОЗДАВАТЬСЯ ! Приведенный тобою фрагмент говорит о том, что создается таблица из одного поля, в котором НЕТ поля "KodOb" !


lety   (2002-11-28 00:14:00) [7]

Блин, вместо последней строчки надо Table1.Open;

Вот. Что же делать с лукап полем?


lety   (2002-11-28 00:13:00) [8]

TableZK - исходная таблица
TableZKN - создаваемая программного - такая же как и исходная, но пара полей должна быть добавлена.

Но не в том суть все равно.

Черт, я перепутала немного. Table1 - это TableZKN

Все заново лучше перепишу!
______________________________________

Table1 - создается таблица, Table2 - исходная
Table3 - справочник


//добавляются поля из другой (заполненной таблицы)

Table1.FieldDefs.Add("GroupName",ftString,60,false);

Table1.CreateTable;
Table1.BatchMove(Table2,batAppend); //заполняю поля


Table1.FieldByName("GroupName").FieldKind:=fkLookup;

Table1.FieldByName("GroupName").KeyFields:="KodOb";
Table1.FieldByName("GroupName").LookupDataset:=DataMod.Table3;
Table1.FieldByName("GroupName").LookupKeyFields:="KodOb";
Table1.FieldByName("GroupName").LookupResultField:="Name";

DataMod.TableZKN.Open;


MsGuns   (2002-11-27 22:35:00) [9]

Из примера ничего не понятно, какая связь между TableZK и TableZKN ?


lety   (2002-11-27 22:23:00) [10]

Вот...

//добавляются поля из другой (заполненной таблицы)

Table1.FieldDefs.Add("GroupName",ftString,60,false);

Table1.CreateTable;
Table1.BatchMove(TableZK,batAppend); //заполняю поля


DataMod.TableZKN.FieldByName("GroupName").FieldKind:=fkLookup;

DataMod.TableZKN.FieldByName("GroupName").KeyFields:="KodOb";
DataMod.TableZKN.FieldByName("GroupName").LookupDataset:=DataMod.Table3;
DataMod.TableZKN.FieldByName("GroupName").LookupKeyFields:="KodOb";
DataMod.TableZKN.FieldByName("GroupName").LookupResultField:="Name";

DataMod.TableZKN.Open;


Все. Дальше говорится, что неверный тип поля. Все свойства заполнены верно, потому что при создании поля GroupName с помощью редактора полей все так же выходит и все работает.

Видимо, лукап поле нельзя добавлять через FieldDefs. Но как тогда поступить иначе?


Johnmen   (2002-11-26 09:30:00) [11]

Приводи код создания полей - будем разбираться...
(Вообще говоря, вопрос часто задается...)


lety   (2002-11-26 01:02:00) [12]

вычисления? (Если я даже ничего не вычисляю, то сообщение появляется все равно). У меня с лукап полем тоже самое. Кроме филдкайн:=фкЛукап, я заполняю еще 4 поля - не помню какие, они кучкой подряд стоят (у меня работа отдельно от инета).

автокалк тру

какую-такую транзакцию?


oss   (2002-11-25 23:56:00) [13]

1.а код самого вычисления дай ?
2.автокалк = тру ?
3.после сощдания ты закомител транзакцию ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо