Форум: "Базы";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
ВнизTTable в Run-Time Найти похожие ветки
← →
Lusha (2002-03-26 10:39) [5]Извините за задержку с ответом. Отдыхал знаете ли... :)
Описанное Вами сообщение возникает по причине отсутствия предопределенного перечня полей. В виду его отсутствия он определяется автоматически исходя из структуры таблицы при открытии набора данных, но также автоматически и очищается при закрытии оного. Поэтому обращение вида "AnyDataSet.FieldByName("AnyField")" при закрытом наборе данных приводит к сообщению "Field AnyField not found." (я же предупреждал "о подводных камнях")
Лечится это явным определением перечня полей в Run-Time. Только и всего... :)
Делается это приблизительно так...
AnyDataSet.Close;
// Вот так определяется перечень действительных полей
for I := 0 to AnyDataSet.FieldDefs.Count - 1 do
with AnyDataSet, FieldDefs[I] do
begin
case DataType of
ftString :
begin
Field := TStringField.Create(Self);
Field.Size := Size;
end;
ftInteger: Field := TIntegerField.Create(Self);
ftFloat : Field := TFloatField.Create(Self);
ftDateTime : Field := TDateTimeField.Create(Self);
end;
Field.Name := AnyDataSet.Name + Name;
Field.FieldName := Name;
Field.FieldKind := fkData;
Field.DataSet := AnyDataSet;
end;
// А вот так добавляется определение вычисляемого поля
Field := TIntegerField.Create(Self);
with Field do
begin
FieldName := "F1";
Name := AnyDataSet.Name + FieldName;
FieldKind := fkCalculated;
DataSet := AnyDataSet;
end;
AnyDataSet.Open;
где Field : TField;
За сим, с уважением...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c