FieldsEditor в TVirtualTable

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
mediv
Сообщения: 25
Зарегистрирован: Ср 05 июн 2013 10:47

FieldsEditor в TVirtualTable

Сообщение mediv » Пн 18 авг 2014 12:55

Всем привет, нужна помощь, столкнулся с такой ситуацией:

Работал с БД, загрузил данные в VirtualTable, добавил еще 3 Lookup поля, все работало, как надо, но вот встала ситуация и от базы пришлось отказаться, сгрузил все в xml файлы и начал работать с ними, возникла проблема - моих Lookup полей нет!!! что видимо логично, т.к. структура грузится из xml файла, а там только поля из FieldDefs, как я могу кодом задать FieldsEditor и, соответственно, создать свои 3 Lookup поля?

Спасибо.

mediv
Сообщения: 25
Зарегистрирован: Ср 05 июн 2013 10:47

Re: FieldsEditor в TVirtualTable

Сообщение mediv » Пн 18 авг 2014 13:52

Пробую так сделать :

Код: Выделить всё

// Загрузка пользователей
procedure TDM.LoadUserAccounts;
  var StructName : TField;
begin
  StructName                   := TField.Create(UserVirtualTable);
  StructName.FieldName         := 'STRUCT_NAME';
  StructName.SetFieldType(ftString);
  StructName.FieldKind         := fkLookup;
  StructName.LookupDataSet     := StructUnitsRefVirtualTable;
  StructName.KeyFields         := 'STRUCT_ID';
  StructName.LookupKeyFields   := 'ID';
  StructName.LookupResultField := 'NAME';
  StructName.Visible           := True;
//
  UserVirtualTable.LoadFromFile('src\xml\adm\Users.xml', true);
//
  UserVirtualTable.Fields.Add(StructName);
//
  UserVirtualTable.Open;
end;
возникает ошибка!
Вложения
Ошибка!
Ошибка!
99.png (6.49 КБ) 3935 просмотров

ViktorV
Devart Team
Сообщения: 199
Зарегистрирован: Чт 31 июл 2014 09:52

Re: FieldsEditor в TVirtualTable

Сообщение ViktorV » Вт 19 авг 2014 13:04

Здравствуйте,

Для создания Lookup поля во время выполнения приложения, Вы можете использовать следующий код:

Код: Выделить всё

// Загрузка пользователей
procedure TDM.LoadUserAccounts;
var
  StructName: TField;	
  i: integer;
begin
  UserVirtualTable.LoadFromFile('src\xml\adm\Users.xml');
  UserVirtualTable.Close;
  if UserVirtualTable.Fields.Count = 0 then
    for i := 0 to UserVirtualTable.FieldDefs.Count - 1 do
      UserVirtualTable.FieldDefs.Items[i].CreateField(UserVirtualTable);
  StructName := TStringField.Create(UserVirtualTable);
  StructName.FieldName := 'STRUCT_NAME';
  StructName.FieldKind := fkLookup;
  StructName.LookupDataSet := StructUnitsRefVirtualTable;
  StructName.KeyFields := 'STRUCT_ID';
  StructName.LookupKeyFields := 'ID';
  StructName.LookupResultField := 'NAME';
  StructName.Visible := True;
  StructName.DataSet := UserVirtualTable;
  UserVirtualTable.FieldDefs.Add(StructName.FieldName, ftString, 90, False);
  UserVirtualTable.Open;
end;

mediv
Сообщения: 25
Зарегистрирован: Ср 05 июн 2013 10:47

Re: FieldsEditor в TVirtualTable

Сообщение mediv » Вт 19 авг 2014 14:35

Спасибо.

ViktorV
Devart Team
Сообщения: 199
Зарегистрирован: Чт 31 июл 2014 09:52

Re: FieldsEditor в TVirtualTable

Сообщение ViktorV » Ср 20 авг 2014 08:11

Если возникнут новые вопросы, пожалуйста, обращайтесь.

Ответить