Firemonkey StringGrid не будет отправлять данные на Snapserver под Android

Я разрабатываю приложение для Android в FM, NO BINDING (медленно и т. д.), я вручную заполняю данные в сетку строк и вручную обновляю записи. Скомпилированное 32-битное приложение работает хорошо, но под Android оно не ОБНОВЛЯЕТ записи. Его связь через сервер DataSnap все хорошо под 32-разрядной версией.

У вас есть идеи, почему не обновляются записи под Android.

ОБНОВЛЕНИЕ (но его тестируют): я не знаю, в чем была проблема вчера, но сегодня она работает, единственное, что я изменил, это ClientDataSet1.ApplyUpdates(0); в ClientDataSet1.ApplyUpdates(-1);

С уважением Тамас

Вот мой код вставки StringGrid:

var
  ir: integer;
  cr, cc: integer;
begin
  ClientDataSet1.First;
  ir := 0;

  for cc := 0 to Grid_term.RowCount do
  begin
    for cr := 0 to Grid_term.ColumnCount do
    begin
      Grid_term.Cells[cc, cr] := '';
    end;
  end;

  while not ClientDataSet1.Eof do
  begin
    Grid_term.Cells[0, ir] := IntToStr(ClientDataSet1.FieldByName('torzs_id').AsInteger);
    Grid_term.Cells[1, ir] := ClientDataSet1.FieldByName('torzs_nev').AsString;
    Grid_term.Cells[2, ir] := IntToStr(ClientDataSet1.FieldByName('muszak_id').AsInteger);
    Grid_term.Cells[3, ir] := ClientDataSet1.FieldByName('gep_nev').AsString;
    Grid_term.Cells[4, ir] := ClientDataSet1.FieldByName('alkatresz_nev').AsString;
    Grid_term.Cells[5, ir] := IntToStr(ClientDataSet1.FieldByName('db_alkatresz_jo').AsInteger);
    Grid_term.Cells[6, ir] := IntToStr(ClientDataSet1.FieldByName('db_alkatresz_as').AsInteger);
    Grid_term.Cells[7, ir] := IntToStr(ClientDataSet1.FieldByName('db_alkatresz_ms').AsInteger);
    Grid_term.Cells[8, ir] := IntToStr(ClientDataSet1.FieldByName('A_szercsere').AsInteger);
    Grid_term.Cells[9, ir] := IntToStr(ClientDataSet1.FieldByName('A_beallitas').AsInteger);
    Grid_term.Cells[10, ir] := IntToStr(ClientDataSet1.FieldByName('A_karbantartas').AsInteger);
    Grid_term.Cells[11, ir] := IntToStr(ClientDataSet1.FieldByName('A_ghiba').AsInteger);
    Grid_term.Cells[12, ir] := IntToStr(ClientDataSet1.FieldByName('A_keszjavit').AsInteger);
    Grid_term.Cells[13, ir] := IntToStr(ClientDataSet1.FieldByName('A_technpro').AsInteger);
    Grid_term.Cells[14, ir] := IntToStr(ClientDataSet1.FieldByName('A_anyaghiany').AsInteger);
    Grid_term.Cells[15, ir] := IntToStr(ClientDataSet1.FieldByName('A_Egyeb').AsInteger);
    Grid_term.Cells[16, ir] := IntToStr(ClientDataSet1.FieldByName('ID').AsInteger);
    ir := ir + 1;
    ClientDataSet1.Next;
  end;

А вот и код обновления:

var
  ir: integer;
begin
  ClientDataSet1.First;
  ir := 0;
 // ClientDataSet1.
  while not ClientDataSet1.Eof do
  begin
    ClientDataSet1.Edit;
  {  ClientDataSet1.FieldByName('torzs_id').AsInteger := StrToInt(Grid_term.Cells[0, ir]);
    ClientDataSet1.FieldByName('torzs_nev').AsString := Grid_term.Cells[1, ir];
    ClientDataSet1.FieldByName('muszak_id').AsInteger := StrToInt(Grid_term.Cells[2, ir]);
    ClientDataSet1.FieldByName('gep_nev').AsString := Grid_term.Cells[3, ir];
    ClientDataSet1.FieldByName('alkatresz_nev').AsString := Grid_term.Cells[4, ir]; }
    ClientDataSet1.FieldByName('db_alkatresz_jo').AsInteger := StrToInt(Grid_term.Cells[5, ir]);
    ClientDataSet1.FieldByName('db_alkatresz_as').AsInteger := StrToInt(Grid_term.Cells[6, ir]);
    ClientDataSet1.FieldByName('db_alkatresz_ms').AsInteger := StrToInt(Grid_term.Cells[7, ir]);
    ClientDataSet1.FieldByName('A_szercsere').AsInteger := StrToInt(Grid_term.Cells[8, ir]);
    ClientDataSet1.FieldByName('A_beallitas').AsInteger := StrToInt(Grid_term.Cells[9, ir]);
    ClientDataSet1.FieldByName('A_karbantartas').AsInteger := StrToInt(Grid_term.Cells[10, ir]);
    ClientDataSet1.FieldByName('A_ghiba').AsInteger := StrToInt(Grid_term.Cells[11, ir]);
    ClientDataSet1.FieldByName('A_keszjavit').AsInteger := StrToInt(Grid_term.Cells[12, ir]);
    ClientDataSet1.FieldByName('A_technpro').AsInteger := StrToInt(Grid_term.Cells[13, ir]);
    ClientDataSet1.FieldByName('A_anyaghiany').AsInteger := StrToInt(Grid_term.Cells[14, ir]);
    ClientDataSet1.FieldByName('A_Egyeb').AsInteger := StrToInt(Grid_term.Cells[15, ir]);
   // ClientDataSet1.FieldByName('ID').AsInteger := StrToInt(Grid_term.Cells[16, ir]);
    ir := ir + 1;

    ClientDataSet1.Post;
    ClientDataSet1.Next;
  end;
  ClientDataSet1.ApplyUpdates(0);
  ClientDataSet1.Refresh;

person Tamas Kajfis    schedule 19.12.2017    source источник


Ответы (1)


Установите OnPostError, OnReconcileError, чтобы увидеть, возникают ли какие-либо ошибки во время публикации. Также обратите внимание на документацию:

ApplyUpdates возвращает количество обнаруженных ошибок. На основе этого возвращаемого значения и параметра MaxErrors успешно примененные записи удаляются из журнала изменений клиентского набора данных. Если процесс обновления прерывается до применения всех обновлений, все непримененные обновления остаются в журнале изменений.

person Eniz K.    schedule 19.12.2017
comment
Я думаю, проблема была в том, что я поставил 0 на -1, и теперь все в порядке. - person Tamas Kajfis; 19.12.2017