Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.16;
Скачать: CL | DM;

Вниз

Вычисляемые поля   Найти похожие ветки 

 
lety   (2002-11-25 18:00) [0]

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

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


 
oss ©   (2002-11-25 23:56) [1]

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


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

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

автокалк тру

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


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

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


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

Вот...

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

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. Но как тогда поступить иначе?


 
MsGuns ©   (2002-11-27 22:35) [5]

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


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

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;


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

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

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


 
MsGuns ©   (2002-11-28 03:25) [8]

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


 
IrenFD ©   (2002-11-28 04:08) [9]

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


 
MsGuns ©   (2002-11-28 04:16) [10]

>IrenFD © (28.11.02 04:08)

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


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

> MsGuns © (28.11.02 03:25)

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


 
ЮЮ ©   (2002-11-28 09:44) [12]

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


 
oss ©   (2002-11-28 12:11) [13]

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



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

Текущий архив: 2002.12.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
6-51867
guest_xxx
2002-10-21 12:40
2002.12.16
Disk quotas NT 4


1-51695
avsh
2002-12-05 22:03
2002.12.16
Помогите


1-51694
BALU1111
2002-12-02 14:31
2002.12.16
Модальные окна


4-52035
cardinal
2002-10-31 02:36
2002.12.16
Как узнать адреса процессов в w98?


3-51616
Анатолий
2002-11-28 00:43
2002.12.16
тип boolean в IB