Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2013, 12:46   #1
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию DataSet.Recordset.GetRows из ADO в FireDAC

Добрый день, возможно не в тот раздел пишу...
прошу помощи.

раньше для подключения использовался ADO теперь хотят переделать на FireDAC

Как можно переписать вот эту строку?

Код:
AConnection: TADOConnection;
  qry: TADOQuery;
  vArray: variant;
  cnt, idx: integer;
...

    cnt := qry.RecordCount;
    if (cnt = 0) then
      Exit;
    vArray := qry.Recordset.GetRows(cnt, 0, EmptyParam);
Есть несколько функций написаных под новое подключение

Код:
  qr: ISyncQueryResult;
...
 qr := AppData.SelectSQL('select ' + sFieldPK + ' from ' + sSource1 + 'WHERE ptn_id ={ptn_id}', [TScriptParameterHelper.Create('ptn_id', APtnID)]);
ISyncQueryResult некий интерфейс

Код:
  ISyncQueryResult = interface
    ['{B918D9A7-F49E-46A1-ACA8-4F4559C874F4}']
    function GetDataSet: TDataSet;
    property DataSet: TDataSet read GetDataSet;
  end;
Сижу ломаю голову как ?!

Код:
  qr := AppData.SelectSQL('select ' + sFieldPK + ' from ' + sSource1 + 'WHERE ptn_id ={ptn_id}', [TScriptParameterHelper.Create('ptn_id', APtnID)]);
  cnt := qr.DataSet.RecordCount;
  if (cnt = 0) then
    Exit;
  vArray := qr.DataSet.Recordset.GetRows(cnt, 0, EmptyParam); // КАК?!:)
Код:
Какой аналог в датасете у фаирдак есть похожий на то что использовалось в адо?

    for idx := 0 to cnt - 1 do begin
      IDS[idx] := vArray[0, idx];
    end;
    Result := True;

Это список адишников

Последний раз редактировалось Dozent; 13.08.2013 в 13:16.
Dozent вне форума Ответить с цитированием
Старый 13.08.2013, 15:02   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Решил вот так

Код:
  mtQuery := TMemTableEh.Create(nil);
  try
    AppData.SelectSQL(mtQuery, 'select ' + sFieldPK + ' from ' + sSource1 + 'WHERE ptn_id ={ptn_id}', [TScriptParameterHelper.Create('ptn_id', APtnID)]);
    cnt := mtQuery.RecordsView.Count;
    if (cnt = 0) then
      Exit;
    SetLength(IDS, cnt);
    for idx := 0 to cnt - 1 do begin
      IDS[idx] := mtQuery.RecordsView.Rec[idx].DataValues['ptn_id', dvvValueEh];
    end;
    Result := True;
  finally
    mtQuery.Free;
  end;
Dozent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADO Delphi и Dataset KoliyR БД в Delphi 6 28.01.2012 20:40
Строку из одного DataSet в другой DataSet Abbath1349 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 22.05.2011 19:26
ADO.NET: Команды SQL при работе с DataSet PousheeITancuushee Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 24.09.2010 22:25
ADO DataSet в Access Antoha_Gad БД в Delphi 7 28.10.2009 09:45
ADO recordset фильтр по нескольким полям zmeevolk Microsoft Office Access 0 28.04.2009 16:23