Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Вниз

TTable в Run-Time   Найти похожие ветки 

 
Lord Vader   (2002-03-23 04:59) [0]

Подскажите как в Run-Time менять такие свойства у TTable как FieldKind, и прочие... А также, какое существует свойство чтобы TStrings присвоить значиние всех строк столбца таблицы.
Заранее благодарен!!!


 
Lusha   (2002-03-23 11:07) [1]

1. FieldKind является свойством TField, а не TTable
2. Изменить значение этого свойства можно при закрытом наборе данных банальным присваиванием, например:
Table1.FieldByName("AnyField").FieldKind := fkCalculated;
Правда при этом существует масса "подводных камней". И поскольку я считаю, что Вы "плывете" в неправильном направлении, у меня к Вам один вопросик, ответ на который мне бы хотелось услышать прежде чем мы продолжим беседу на эту тему. Итак:

Зачем Вам нужно менять свойство FieldKind в Run-Time?




 
Lord Vader   (2002-03-24 10:37) [2]

Дело в том, что я имею дело с таблицей в которой заранее не известно сколько будет столбцов в таблице, т.е. таблица с динамической структурой. А мне нужно выполнять для одного из столбцов этой таблицы метод OnCalc...

Так как быть? И то вы подразумеваете, под "закрытым набором данных"? Метод OnClose что ли?


 
Anatoly Podgoretsky   (2002-03-24 11:07) [3]

сли структура динамическая, то какая проблема, данное поле является частью этой структуры, динамически.
Закрытый набор - этонабор который не открыт.


 
Lord Vader   (2002-03-25 22:30) [4]

Ну так всё ж как быть то? Как код такой замутить и чтоб не выскакивала табличка с ненайденным(несуществующем) полем?


 
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.46 MB
Время: 0.004 c
1-46337
nastya_
2002-04-03 19:13
2002.04.15
www браузер


3-46220
Alban
2002-03-20 13:09
2002.04.15
Написал програму под MS SQL Server7.0 на Delhpi5


1-46391
evgen_2001
2002-04-02 10:37
2002.04.15
Коллективизация!!!


3-46276
Stranger
2002-03-25 16:01
2002.04.15
Хранение файлов различных типов в полях БД MS SQL Server


4-46549
Ruslan_
2002-02-09 14:53
2002.04.15
GetWindowText





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский