Форум: "Начинающим";
Текущий архив: 2014.02.09;
Скачать: [xml.tar.bz2];
ВнизTDataSet.Как оптимально скопировать всего одну запись в новый. Найти похожие ветки
← →
Abcdef123 (2013-04-10 10:32) [0]Здравствуйте, Мастера!
Заранее прошу прощения за вопрос. Чувствую, что примитивный, но вот в голову ничего не приходит, как можно сделать оптимально и красиво.
В общем, в приложении есть некий датасет, показываем данные в гриде, и по правому клику мне надо текущую запись скопировать в декларированный, но не созданный пока второй датасет (Датасет2 = Nil); и потом далее другой процесс идет, в который мы передаем вот этот датасет2 (то есть интересна только текущая строка первого датасета.
Вопрос: можно ли как то это сделать, оперируя только методами и свойствами компонента TDataSet? И если можно, то как это сделать?
Примечание: Grid -Как средство отображения данных датасет1 желательно не использовать для определения текущей записи, так как предполагается в будущем использовать этот код и с другими компонентами.
Заранее благодарна.
← →
Ega23 © (2013-04-10 10:41) [1]0. DataSet2.DisableControls;
1. пробежаться по филдам первого, создать такие же во втором.
2. DatSet2.Insert
3. пробежаться по значениям полей первого, вставить во второй.
4. DatSet2.Post
5. DataSet2.EnableControls;
← →
Abcdef123 (2013-04-10 12:16) [2]To [1] Возможно, что вы не обратили внимание на то, что DataSet2 = Nil на этом этапе. Так что уже на пункте 0 выдаст ошибку о несуществовании объекта (акцес авиалейшен). Хорошо, я добавила перед пуктом 0 создание датасет DataSet2:= TDataSet.Create(Application); В этом случае удается выполнить пункты 0 и 1, но на пункте 2 снова ошибка cannot operate operate on a closed dataset. Хорошо, я добавила перед пунктом 2 DataSet2.Open. Но, теперь на пункте 2 выдает ошибку Abstract Error.
Как быть?
И еще... вы написали применить DisableControls к датасет2, может вы имели в виду датасет1?
← →
clickmaker © (2013-04-10 12:22) [3]> выдает ошибку Abstract Error
правильно. Потому что TDataSet - абстрактный класс. Нужно создавать его наследника
← →
Abcdef123 (2013-04-10 12:40) [4][3] Я написала в самом первом сообщении, что объявила DatSet2, но как объект это пока нил.То есть объявила так:
DatSet2: TDataSet;
Это значит, совет [1] неподходящий?
Я честно говоря, еще больше в непонятках оттого, что вы написали, я ж не работаю к самим классом TDataSet, я пытаюсь работать с представителем этого класса DatSet2. ПОдскажите, плиз, что вы имеете в виду, когда говорите "Нужно создавать его наследника" или поправьте, что в описанном мною мне надо исправить.
← →
O'ShinW © (2013-04-10 12:41) [5]юзать TClientDataSet
Создать, если не создан
Задефайнить ему поля исходя из DS исходного
и текущую запись туда закопировать
совместимость по TDataSet имеется.
← →
O'ShinW © (2013-04-10 12:47) [6]как-то так
CDS := TClientDataSet.Create(nil);
try
Screen.Cursor := crHourGlass;
CDS.FieldDefs.BeginUpdate;
CDS.FieldDefs := DS.FieldDefs; вот из этого dataset (DS. )берем поля
CDS.FieldDefs.Add("BASE", ftFloat); а это еще поля если надо
CDS.FieldDefs.Add("UP_ABON", ftFloat);
CDS.FieldDefs.Add("UP_CNT", ftFloat);
CDS.FieldDefs.Add("MONEY", ftFloat); //ftString, 50);
CDS.FieldDefs.Add("NOTE", ftString, 50);
CDS.FieldDefs.EndUpdate;
CDS.CreateDataSet;
CDS.DisableControls;
DS.DisableControls;
DS.First;
while not(DS.Eof) do
begin
if not(DS.FieldByName("DT_WORK").IsNull) then
begin
CDS.Insert;
for i := 0 to DS.FieldCount - 1 do а тут поля копируем
CDS.Fields[i].Value := DS.Fields[i].Value;
← →
Ega23 © (2013-04-10 12:57) [7]
> ПОдскажите, плиз, что вы имеете в виду, когда говорите "Нужно
> создавать его наследника" или поправьте, что в описанном
> мною мне надо исправить.
TDataSet - абстрактный класс. Его потомки - уже реальные, TQuery, TClientDataSet, TADODataSet и т.д. Вот одного такого потомка и надо создать.
← →
Плохиш © (2013-04-10 14:13) [8]Но лучше, всё-таки, нанять программиста.
← →
Jeer © (2013-04-10 14:57) [9]Лучше котлеты научиться жарить вкусные, тогда программист и сам придет.
← →
Anatoly Podgoretsky © (2013-04-10 21:07) [10]Решение от обратного
← →
Вова (2013-04-10 23:30) [11]Удалено модератором
← →
Anatoly Podgoretsky © (2013-04-11 01:57) [12]Удалено модератором
← →
Вовик (2013-04-11 08:50) [13]Удалено модератором
← →
Ega23 © (2013-04-11 09:16) [14]Удалено модератором
← →
Плохиш © (2013-04-11 10:43) [15]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.02.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c