Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизРабота с филдами в ибКвнри Найти похожие ветки
← →
Itoixxx (2006-09-03 10:56) [0]Есть несколько вопрос по созданию полей для ибКвери в ран-тайм (как при дабл клике п онему в дизайн-тайм).
я их так создаю:
F:Tfield; (используется по ходу прогроаммы много раз для создани разных полей в одном и томже квери)
proc Button1.click
begin
fld:=TIntegerField.Create(ibNumDistr);
fld.FieldName:="nom_isled";
fld.FieldKind:=fkData;
fld.DataSet:=ibNumDistr;
ibNumDistr.fields.add(fld);
//....
fld:=TStringField.Create(ibNumDistr);
fld.FieldName:="name_city";
fld.FieldKind:=fkData;
fld.DataSet:=ibNumDistr;
ibNumDistr.fields.add(fld);
//....
end;
1)как правильно их создавать и удалять?
2)как определить создано ли уже такое поле раньше и не создавать его второй раз (вылазит ошибка, что нельзя создаьб дубликат поля).
3)если я добалю так поле,а потом закрою форму, то вылазить АкцессВиолэйшн.как от этого избавить?
Спасибо
← →
vlad-mal © (2006-09-03 21:33) [1]1. Хорошо бы сперва поля определять
var
fField: TField;
fFieldDef: TFieldDef;
...
begin
...
ibNumDistr.FieldDefs.Add("field_name", ftInteger);
fFieldDef := ibNumDistr.FieldDefs.Find("field_name");
а уже потом создавать
fField := fFieldDef.CreateField(ibNumDistr);
fField.FieldName := "field_name";
fField.Name := "field_name";
fField.DisplayWidth := ...;
...
Удалять -ibNumDistr.Fields.Remove(field);
ibNumDistr.FieldDefs.Delete(index);
2.
FindField.
Не забывайте указывать Name.
3. Все будет хорошо (см. выше).
← →
Itoixxx (2006-09-04 12:09) [2]Создал массив филдов:
fField:array [0..10] of TField;
fFieldDef:array [0..10] of TFieldDef;
....
проверяю наличие такого филда, если его нет, то создаю:
...
if ibNumDistr.Fields.FindField("nom_isled") = nil then
begin
ibNumDistr.FieldDefs.Add("nom_isled", ftInteger);
fFieldDef[0] := ibNumDistr.FieldDefs.Find("nom_isled");
fField[0] := fFieldDef[0].CreateField(ibNumDistr);
fField[0].FieldName := "nom_isled";
fField[0].Name := "nom_isled";
end;
...
далее по ходу программы если этот филд существует, то его надо прибить. делаю так:
if (ibNumDistr.Fields.FindField("nom_isled")<>nil) then
begin
ibNumDistr.FieldDefs.Delete(ibNumDistr.FieldDefs.IndexOf("nom_isled"));
ibNumDistr.Fields.Remove(fField[0]);
end;
и вылазит ошибка что такое поле не найдено :(
← →
Itonixxx (2006-09-05 00:36) [3]никто не знает?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.051 c