Ошибка запуска приложения для нескольких устройств на платформе Android с использованием TFDLocal SQL из Delphi версии сообщества - PullRequest
0 голосов
/ 27 апреля 2020

Я настраиваю TLocal SQL для моего приложения для нескольких устройств. Я понимаю, что этот компонент использует SQLite в качестве бэкенда, когда моя база данных MySQL находится на сервере удаленно.

В моем модуле данных я настроил следующее:

  1. TFDGUIxWaitCursor

  1. TFDConnection - для MySQL подключения к серверу
  2. TFDPhysMySQLDriverLink - MySQL драйвер
  3. TFDQuery - MySQL запрос таблицы

  1. TFDConnection - для моего Local SQL (SQLite backend)
  2. TFDPhysMySQLDriverLink - драйвер SQLite
  3. TFDLocal SQL - мой Local SQL для обработки встроенных база данных моего приложения с набором данных TFDQuery выше
  4. TFDQuery - мой локальный SQL запрос

мой модуль данных RME:

unit Unit10;

interface

uses
  System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
  FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MySQL,
  FireDAC.Phys.MySQLDef, FireDAC.FMXUI.Wait, FireDAC.Stan.Param, FireDAC.DatS,
  FireDAC.DApt.Intf, FireDAC.DApt, Data.DB, FireDAC.Stan.ExprFuncs,
  FireDAC.Phys.SQLiteDef, FireDAC.Phys.SQLite, Datasnap.DBClient,
  Datasnap.Provider, FireDAC.Comp.Client, FireDAC.Phys.SQLiteVDataSet,
  FireDAC.Comp.DataSet, FireDAC.Comp.UI;

type
  TDataModule10 = class(TDataModule)
    con1: TFDConnection;
    dvr1: TFDPhysMySQLDriverLink;
    cur1: TFDGUIxWaitCursor;
    qry1: TFDQuery;
    loc1: TFDLocalSQL;
    dvr2: TFDPhysSQLiteDriverLink;
    con2: TFDConnection;
    qry2: TFDQuery;
    dsp1: TDataSetProvider;
    cds1: TClientDataSet;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DataModule10: TDataModule10;

implementation

{%CLASSGROUP 'FMX.Controls.TControl'}

{$R *.dfm}

end.

Теперь на моей главной Форма (ниже RME), где находится мой TListView, соединяет TFDQuery с моим TFDLocal SQL.

unit Unit9;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.ListView.Types, FMX.ListView.Appearances, FMX.ListView.Adapters.Base,
  System.Rtti, System.Bindings.Outputs, Fmx.Bind.Editors, Data.Bind.EngExt,
  Fmx.Bind.DBEngExt, Data.Bind.Components, Data.Bind.DBScope, FMX.ListView;

type
  TForm9 = class(TForm)
    lsv1: TListView;
    bdr1: TBindSourceDB;
    bdl1: TBindingsList;
    lcf1: TLinkListControlToField;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form9: TForm9;

implementation

uses
  Unit10;

{$R *.fmx}

end.

Я запустил его на Windows 64-битной платформе без каких-либо проблем.

Но когда я попробовал это на своей платформе устройства Android, я получаю следующая ошибка:

[DCC Fatal Error] dm_u.pas(10): F2613 Unit 'FireDAC.Phys.MySQL' not found.

Я немного запутался, потому что это цель TFDLocal SQL. Он должен обрабатывать разные источники данных, будь то с разных серверов, xml, et c и встраивать их в ваше приложение с использованием базы данных SQLite.

Надеюсь, мой уровень понимания все понял правильно.

Теперь я застрял на том, как обойти ошибку. Я не могу изменить драйвер, потому что мои исходные данные на самом деле MySQL.

Может кто-нибудь рассказать мне больше о TFDLocal SQL. Я впервые использую его, и он хорошо подходит для моей цели. Я что-то упустил?

...