Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизКак в runtime добавить lookup поле в DataSet Найти похожие ветки
← →
AndrewS (2004-08-10 16:56) [0]Добрый день!
Не мог бы кто нибудь показать кусочек кода корректно добавляющий и убирающий lookup поле в DataSet.
Заранее благодарен!
← →
Соловьев © (2004-08-10 17:02) [1]Что сделал и что не получилось?
← →
AndrewS (2004-08-10 17:06) [2]Вот мой код :
Здесь добавляем...
MyDataSet.Close;
F:=TStringField.Create(MyDataSet);
F.FieldKind:=fkLookup;
F.LookupDataSet:=DataSet1;
F.LookUpKeyFields:=F1;
F.LookupResultField:=F2;
F.KeyFields:="DISC_TYPE";
F.FieldName:="XXX";
F.Name:="fXXX";
F.DataSet:=MyDataSet;
MyDataSet.Fields.Add(F);
MyDataSet.Open;
Поле добавляется но при закрытии проги вылетает ошибка :(
А здесь удаляем :
MyDataSet.Close;
F:=TStringField(MyDataSet.FieldByName("XXX"));
MyDataSet.Fields.Remove(F);
F.Free;
MyDataSet.Open;
После открытия датасета прога вылетает.
Вот.
Чуствую, что где-то набочил, а где не пойму
← →
jack128 © (2004-08-10 17:08) [3]текст ошибок бы не помешал..
← →
AndrewS (2004-08-10 17:09) [4]Access violation .......
← →
AndrewS (2004-08-10 17:13) [5]Точнее при добавлении и закрытии проги вылетает Invalid pointer operation, а при удалении Access violation
← →
Соловьев © (2004-08-10 17:20) [6]
> MyDataSet.Fields.Add(F);
MyDataSet.FieldDefs.Add(F, ftLookUp, 0, true);
← →
Соловьев © (2004-08-10 17:23) [7]
> А здесь удаляем :
> MyDataSet.Close;
> F:=TStringField(MyDataSet.FieldByName("XXX"));
> MyDataSet.Fields.Remove(F);
> F.Free
зачем?
← →
AndrewS (2004-08-10 17:29) [8]> зачем?
Зачем удаляем? По логике проги надо.
← →
AndrewS (2004-08-10 17:35) [9]Кстати ftLookUp не бывает.
И после MyDataSet.FieldDefs.Add(F, ftLookUp, 0, true); в таблице такого поля нет.
← →
Соловьев © (2004-08-10 17:40) [10]Вот когда-то (3 года назад) писал:
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;
Посмотри может найдешь свое решение
← →
AndrewS (2004-08-10 17:50) [11]Спасибо, ща гляну.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c