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

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

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
17.04.2018, 15:21
    #39631681
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TFDMemTable. Как добавить данные в DataSet из другого DataSet
Игорь_UUS,

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

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

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

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

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

Код: pascal
1.
CopyDataSet(db, [coAppend]);
...
Рейтинг: 0 / 0
17.04.2018, 15:51
    #39631717
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TFDMemTable. Как добавить данные в DataSet из другого DataSet
Игорь_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
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TFDMemTable. Как добавить данные в DataSet из другого DataSet / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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