Fastscript и Tfdquery

отредактировано November 2018 Раздел: FastScript
Всем привет, прошу помощи в проблеме C fs работаю впервые
1) Использую Delphi 10.2
2) Есть БД MySQL + FireDAC
3) Нужно добавить возможность создавать скрипты которые выполняли запросы к БД

В качестве коннектора использую такой код:

function TDM_SCRIPTS.Run(AScript:TstringList):boolean;
begin
  q := TFDQuery.Create(nil);
  q.Connection := DM_BASE.dbConnect;
  fsScript.Clear; // надо очищать компонент, если он используется для запуска нескольких скриптов
  fsScript.Lines := AScript;
  fsScript.Parent := fsGlobalUnit;
  fsScript.SyntaxType := 'PascalScript';
  fsScript.AddedBy := Self;
  fsScript.AddClass(TFDQuery,'TFDCustomQuery');
  fsScript.AddObject('q',q);
  if fsScript.Compile then begin
    fsScript.Execute;
    result:=fsScript.Variables['REZ'];
  end
  else begin
    ShowMessage(fsScript.ErrorMsg+' at '+fsScript.ErrorPos);
    result:=false;
  end;
  q.Free;
end;


скрипт выполняю следующий:
var REZ:boolean;
_beg,_end,clientid:String;
c:integer;
begin
    _beg:='2017-01-01 00:00:00';
    _end:='2019-01-01 00:00:00';
    clientid:='44';
    q.sql.Text:=
        //'SET @start = '''+_beg+'''; '+
        //'SET @end = '''+_end+'''; '+
        'SELECT * from s_journal '+
        'WHERE clientid='+clientid+' AND '+
        '( '+
        '    (`dtstart` >= '''+_beg+''' AND `dtstart` < '''+_end+''') '+
        '    OR '+
        '    (`dtend` <= '''+_end+''' AND `dtend` > '''+_beg+''') '+
        '    OR '+
        '    (`dtstart` < '''+_end+''' AND `dtend` > '''+_beg+''') '+
        '    OR '+
        '    (`dtstart` >= '''+_beg+''' AND `dtend` <= '''+_end+''') '+
        ');';
    //showmessage(q.SQL.Text);
    q.Open();
    if q.RecordCount>0 then
        REZ:=True
    else
        REZ:=False;}
end.

все время выходит ошибка что метод q.Open Не определен

Комментарии

  • отредактировано 09:32
    В руководстве сказано что при добавлении компанента нужно добавлять и класс
    а при добавлении класса указать его родителя, я указал
    и оказалось что в классе TFDQuery нет метода Open. Нет его и в родителе, (и даже у дедушки нету)а гораздо раньше наследуется.
    вопрос, как быть, и что я не правильно делаю?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.