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

Вниз

Как в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
3-1092132464
REA
2004-08-10 14:07
2004.09.05
Названия ключей


1-1092736455
FastByte
2004-08-17 13:54
2004.09.05
Унарный минус в ОПЗ


4-1089807719
BVV
2004-07-14 16:21
2004.09.05
Как разрушать чужие окна?


1-1092735170
Боян Георгиев
2004-08-17 13:32
2004.09.05
Как показать содержание TJpegImage-a


4-1090405878
sashuly
2004-07-21 14:31
2004.09.05
отлов русских букв с OnKeyDown