powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TFDMemTable. Как добавить данные в DataSet из другого DataSet
6 сообщений из 6, страница 1 из 1
TFDMemTable. Как добавить данные в DataSet из другого DataSet
    #39631676
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Что происходит, вызываю хранимую процедуру, далее заливаю данные в кэш таблицу. Запрашиваю данные с новыми параметрами из той же хранимой процедуры и пытаюсь добавить в кэш таблицу в которой уже присутствую ранее закэшированные данные:

1.Как попадают первые данные
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  var db: TFDStoredProc;
  ...
  ...

  //Получение DataSet вызывая хранимую процедуру
  db := USchedulerSQL.GetResourcesScheduleByDate(Connection, DateStart, DateFinish); 
  try
    MemTable.CloneCursor(db);
  finally
    db.Free;
  end;



2.Как пытаюсь добавлять данные в тот же кэш:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  var db: TFDStoredProc;
  ...
  ...

  db := USchedulerSQL.GetResourcesScheduleByDate(Connection, FDS, FDF);
  try
    CopyRecord(db);
  finally
    db.Free;
  end;



И тут слетает с ошибкой: "Dataset not in edit or insert mode".

Не могу понять что делаю не так, помогите...
...
Рейтинг: 0 / 0
TFDMemTable. Как добавить данные в DataSet из другого DataSet
    #39631681
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь_UUS,

Блин... понял... он копирует одну строку... тут конечно нужен Insert и Post...

тогда это не то... попробую поискать способ добавить датасет к датасету
...
Рейтинг: 0 / 0
TFDMemTable. Как добавить данные в DataSet из другого DataSet
    #39631683
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

А разве DataSet, который возвращается SP - не readonly без доп. ухищрений?
...
Рейтинг: 0 / 0
TFDMemTable. Как добавить данные в DataSet из другого DataSet
    #39631686
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterИгорь_UUS,

А разве DataSet, который возвращается SP - не readonly без доп. ухищрений?

нет, не readonly
...
Рейтинг: 0 / 0
TFDMemTable. Как добавить данные в DataSet из другого DataSet
    #39631713
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался,
кому будет полезно, добавить данные в уже существующий кэш:

Код: pascal
1.
CopyDataSet(db, [coAppend]);
...
Рейтинг: 0 / 0
TFDMemTable. Как добавить данные в DataSet из другого DataSet
    #39631717
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

а так ?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
procedure TMemTable.LoadFromDataSet(DataSet: TDataSet);
var
  i     : Integer;
  Field : TField;
begin
  Tag := 1;
  DataSet.Open;
  DataSet.First;
  try
    inherited Close;
    DisableControls;
    FieldDefs.Clear;
    for i := 0 to DataSet.FieldCount -1 do begin
      Field := DataSet.Fields[i];
      FieldDefs.Add(Field.FieldName, Field.DataType, Field.Size, FALSE);
    end; // for i := 0 to DataSet.FieldCount
    inherited Open;
    while not DataSet.Eof do begin
      inherited Append;
      for i := 0 to DataSet.FieldCount - 1 do  begin
        Field := DataSet.Fields[i];
        if not VarIsNull(Field.Value) then begin
          case Field.DataType of
            ftTime,
            ftDate,
            ftDateTime : Fields[i].AsDateTime := Field.AsDateTime;
            ftOraBlob,
            ftBlob     : Fields[i].Value      := Field.Value;
            ftMemo     : Fields[i].AsString   := Field.AsString;
            ftBoolean  : Fields[i].AsBoolean  := Field.AsBoolean;
            ftSmallInt ,
            ftInteger  ,
            ftWord     ,
            ftAutoInc  : Fields[i].AsInteger  := Field.AsInteger;
            ftFloat    : Fields[i].AsFloat    := Field.AsFloat;
            ftBCD,
            ftCurrency : Fields[i].AsCurrency := Field.AsCurrency;
            ftString   : Fields[i].AsString   := Field.AsString;
            else         Fields[i].Value      := Field.Value;
          end; // case Field.DataType
        end; // if not VarIsNull(Field.Value)
      end; // for i := 0 to DataSet.FieldCount
      inherited Post;
      DataSet.Next;
    end; // while not DataSet.Eof
    First;
  finally
    EnableControls;
    Tag := 0;
  end;
end;                                      
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TFDMemTable. Как добавить данные в DataSet из другого DataSet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]