Форум: "Базы";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизКак в run-time добавить свои field-ы в dataset? Найти похожие ветки
← →
Bless © (2006-09-06 15:03) [0]Сабж.
Можно ли ?
Если можно, то в какой момент Dataset создает поля и в какой момент мне можно создавать свои.
Аналогично и с удалением. Должен ли я их удалять при закрытии Dataset-а или Dataset сделает это сам? И кого назначать owner-ом моих полей при создании? Dataset?
← →
Ega23 © (2006-09-06 15:06) [1]Пример создания TClientDataSet:
procedure TGUIAlarmGridFrame.CreateCDS;
begin
With cdsAlarms do
begin
With FieldDefs.AddFieldDef do
begin
DataType := ftInteger;
Name := "AlarmID";
end;
With FieldDefs.AddFieldDef do
begin
DataType := ftString;
Name := "DatInStr";
Size:=20;
end;
With FieldDefs.AddFieldDef do
begin
DataType := ftString;
Size:=255;
Name := "ZoneNam";
end;
With FieldDefs.AddFieldDef do
begin
DataType := ftString;
Size:=255;
Name := "PointNam";
end;
With FieldDefs.AddFieldDef do
begin
DataType := ftString;
Size:=255;
Name := "EventNam";
end;
CreateDataSet;
end;
dbgAlarmGrid.DataSource:=dsAlarms;
end;
//*****************************************************************************
← →
Bless © (2006-09-06 15:10) [2]
> Ega23 © (06.09.06 15:06) [1]
Спасибо. Сейчас попробую переделать на ADODataSet.
← →
Bless © (2006-09-06 15:36) [3]Это выходит, так можно оторванные от базы датасеты творить?
Здорово! Пригодится.
Но это не то, что я в данный момент хочу, я недостаточно объяснил.
У меня есть нормальный adodataset с заполненным comandText-м, который что-то там возвращает. Я хочу в run-time чтобы после открытия данного датасета в добавок к возвращенным полям добавить еще несколько полей (Lookup и Calculated).
← →
evvcom © (2006-09-06 15:42) [4]> [3] Bless © (06.09.06 15:36)
> к возвращенным полям добавить еще несколько полей (Lookup
> и Calculated).
procedure TMyDataSet.CreateFields;
begin
inherited;
if Assigned(FOnCreateFields) then
FOnCreateFields(Self);
end;
← →
Bless © (2006-09-06 15:45) [5]А без потомков?
← →
evvcom © (2006-09-06 16:20) [6]> [5] Bless © (06.09.06 15:45)
А без потомков значит сам заполняй Fields, а уж потом только Open. Имхо, с потомком лучче. :)
← →
Bless © (2006-09-06 16:38) [7]Получилось. Спасибо.
← →
Bless © (2006-09-06 17:06) [8]Не, нифига не получилось. Точнее, получилось, но не то.
Насколько я понял, надо либо ВСЕ поля создавать самому, либо ни одного. Так чтоб они создались сами в результате запроса, а потом я добавил только некоторые свои, видимо не выйдет?
← →
Ega23 © (2006-09-06 17:25) [9]
> Насколько я понял, надо либо ВСЕ поля создавать самому,
> либо ни одного. Так чтоб они создались сами в результате
> запроса, а потом я добавил только некоторые свои, видимо
> не выйдет?
Тебе непременно в ран-тайме создавать надо, или всё-таки в дизайн-тайме можно?
← →
Bless © (2006-09-07 10:05) [10]Ega23 © (06.09.06 17:25) [9]>
Именно в ран-тайм.
Хочу просто облегчить себе жизнь.
Есть датасеты, которые получают свои данные не через commandtext, а через AdoDataset.Clone. Чтобы в дизайн-тайм добавить свои поля, приходится написать им в commandText запрос (найдя его предварительно в хранимке), аналогичный по именам и типам стобцов тому, с которого он потому будет клонирован, после чего добавить свои столбцы, а затем commandText почистить.
И так каждый раз, когда изменится число возвращаемых стобцов.
А если б можно было это сделать в ран-тайм, то было бы хорошо.
← →
evvcom © (2006-09-07 10:16) [11]> [10] Bless © (07.09.06 10:05)
Сделай свою библиотеку компонент, которые унаследованы от стандартных/прочих продвинутых и добавляй туда примочки специфичные для твоего проекта. Очень удобно. В любой момент можешь в наследнике добавить любую полезную мелочь, а можешь и не мелочь. :)
Если лень либу делать, раз все равно в ран-тайм делаешь, то и создай объект в ран-тайм, но не стандартного, а наследника. Чего париться?
← →
Bless © (2006-09-07 10:36) [12]
> evvcom © (07.09.06 10:16) [11]
>
> Если лень либу делать, раз все равно в ран-тайм делаешь,
> то и создай объект в ран-тайм, но не стандартного, а наследника.
> Чего париться?
Я хочу не датасет в ран-тайм создавать, а только field-ы().
Вообще-то твоя идея мне нравится (тем более можно в свой впихнуть счетчик ссылок, над чем подумываю), но переписывать, заменяя везде стандартные на свои, лениво и стремно. Работает - не трогай.
← →
evvcom © (2006-09-07 10:48) [13]> [12] Bless © (07.09.06 10:36)
> заменяя везде стандартные на свои, лениво и стремно.
Во-первых, везде не обязательно, можно только там, где хочешь в ран-тайм дописывать поля после автомата.
Во-вторых, везде поменять можно и автоматом, а не руками.
← →
Bless © (2006-09-07 11:33) [14]
> Во-вторых, везде поменять можно и автоматом, а не руками.
Как?
← →
evvcom © (2006-09-07 12:18) [15]> [14] Bless © (07.09.06 11:33)
Найти соответствующий инструмент (не Дельфи). Мне было лень искать в свое время, но у меня и относительно немного файлов было. Нашел фаром все файлы с TAnyDataSet среди *.pas и *.dfm, ну штук 10-20 набралось, вошел в каждый из них и сделал замену искомого на TMyDataSet по всему тексту. Это полуавтомат. Есть желание, поищи полный автомат.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c