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

Вниз

Добавляю динамически поле в DataSet а при его открытии   Найти похожие ветки 

 
Вован   (2003-07-07 12:35) [0]

исключение с сообщением про неправельный тип поля:


F:=TIntegerField.Create(Table);
F.FieldKind:=fkData;
F.FieldName:="ROW";
F.DataSet:=Table;
F.Name:="ROW";

Table.FieldDefs.Add(Name,ftInteger,0,false);

Table.Open;


Что я не так делаю?


 
Anatoly Podgoretsky ©   (2003-07-07 12:43) [1]

А вообще что ты делаешь, щачем первые 5 строк или зачем следующая строка, что такое Name? В какой строчке ругается.


 
Sandman25 ©   (2003-07-07 12:47) [2]

Table.FieldDefs.Add(Name,ftInteger,0,false);
->
Table.FieldDefs.Add(Name,ftString,0,false);


 
Вован   (2003-07-07 13:16) [3]

2Sandman25 ??? почему ???


 
koks ©   (2003-07-07 13:24) [4]

Да-да, неблагодарное это дело динамически создавать статические поля. Для начала - на момент вызова Table.FieldDefs.Add(Name,ftInteger,0,false) у тебя уже есть хоть одно статическое поле для Table ?


 
Вован   (2003-07-07 14:14) [5]

Ну так-как Active=false то нету


 
Соловьев ©   (2003-07-07 14:15) [6]

MySql := TQuery.Create(FirstForm);
with MySql do
begin
DataBaseName := "cadr";
AutoCalcFields := true;
OnCalcFields := MyCalcFields;
with FieldDefs do
begin
Add("phone", ftFloat, 0, true);
FieldDefs[0].CreateField(MySql);

Add("FIO", ftString, 100, true);
FieldDefs[1].CreateField(MySql);

Add("N_D", ftString, 100, true);
FieldDefs[2].CreateField(MySql);

Add("L_of_S", ftString, 100, true);
FieldDefs[3].CreateField(MySql);

Add("NOTE", ftString, 100, true);
FieldDefs[4].CreateField(MySql);

Add("TYPE", ftString, 100, true);
FieldDefs[5].CreateField(MySql);

Add("DATA", ftDate, 0, true);
FieldDefs[6].CreateField(MySql);

Add("ID", ftString, 15, true);
FieldDefs[7].CreateField(MySql);

Add("VYDAN", ftString, 250, true);
FieldDefs[8].CreateField(MySql);

Add("PLASE_WORK", ftString, 250, true);
FieldDefs[9].CreateField(MySql);


Numer := TIntegerField.Create(MySql);
with Numer do
begin
FieldName := "Numer";
Calculated := True;
DataSet := MySql;
Name := MySql.Name + FieldName;
MySql.FieldDefs.Add(Name, ftInteger, 0, true);
end;
end;
end;


 
Sandman25 ©   (2003-07-07 15:10) [7]

Вован (07.07.03 13:16)

Потому что судя по имени поля (Name), это поле строкового типа.


 
koks ©   (2003-07-07 16:47) [8]

Насколько я вижу - ты создаешь компанент, а потом физические поля таблицы. При этом ОБЪЕКТЫ ПОЛЕЙ (что не одно и тоже) у тебя будут динамическими. (т.е. они у тебя будут создаваться автоматически при открытии Query.)

так у тубя до строчки Numer := TIntegerField.Create(MySql);

А потом ты динамически создаешь ОБЪЕКТ ПОЛЯ. (он был бы статическим если бы ты его создавал в дизайн-тайме). Затем ты его прикрепляешь к Query. получается, что Query при открытии у тебя будет одновременно иметь статические (Number) и динамические ОБЪЕКТЫ ПОЛЕЙ, что не допускается теорией. Потомки TDataSeta могут работать либо со статическими либо с динамическими ОБЪЕКТАМИ ПОЛЕЙ!

Читай в учебнике про ПОЛЯ и ОБЪЕКТЫ ПОЛЕЙ....



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
14-100978
Макс
2003-07-14 06:53
2003.07.31
KeySpy


1-100799
Checist [root]
2003-07-17 11:56
2003.07.31
Ячейки DrawGrid


1-100735
R4D][
2003-07-18 16:53
2003.07.31
горизонтальная прокрутка в ListBox e


3-100573
Zelius
2003-07-04 10:06
2003.07.31
Проблемы с запросами из-под FastReport


1-100674
Кен
2003-07-15 02:34
2003.07.31
Как узнать не текстовые координаты текстового курсора ?