unit uSQLBuilder;

// Содержит SQL запросы из дерева к таблице
// Таблица должна содержать 3 обязательных поля id, idParent,name
// Экземпляр класса будет создаваться вместе с DBTreeView как его поле
// В него будут передаваться через свойства id,idParent,FieldNodeText
// Класс будет строить запросы, которые в дальнейшем будут использоваться
// Другими юнитами и потоками

interface

uses
  System.SysUtils, System.Classes,vcl.dialogs, 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.MySQLDef, FireDAC.VCLUI.Wait, FireDAC.Comp.UI,
  FireDAC.Phys.MySQL, Data.DB, FireDAC.Comp.Client;

type TSQLQueries=class(TComponent)

private

Fid:string;
FidParent:string;
FFieldNodeText:string;
FTableName:string;

//Поля SQL запросов
FInsert:string;

//Сеттеры

procedure SetInsert(FieldList:TStringList);


public

property id:string read Fid write Fid;
property idParent:string read FidParent write FidParent;
property FieldNodetext:string read FFieldNodeText write FFieldNodeText;
property TableName:string read FTableName write FTableName;


property Insert:string read FInsert write SetInsert;





end;


implementation

{ TSQLQueries }

procedure TSQLQueries.SetInsert(FieldList:TStringList);

var i:integer; s1:string; s2:string;

begin

{Формируем строку типа
'INSERT INTO `treeview_db`.`tree` (`IdParent`, `Name`, `Index`,`isChecked`,`Level`)'+
 'VALUES (:idParent, :name, :index,:isChecked,:Level);';

s1 это подстрока `IdParent`, `Name`, `Index`,`isChecked`,`Level`

s2 это подстрока :idParent, :name, :index,:isChecked,:Level

 }


for i := 0 to FieldList.Count-2  do

begin

  if FieldList[i]<>Fid then // исключаем id поле

    begin
      s1:=s1+'`'+FieldList[i]+'`'+', ';
      s1:=s1+FieldList[FieldList.Count-1]; // << Последний элемент добавляем без запятой
    end;                                  // Как в примере выше


end;





for i := 0 to FieldList.Count-2 do
s2:=s2+':'

Finsert:='Insert into '+'`'+FTableName+'`'+' ';
end;

end.
