Topic: Процедура выборки в combobox с помощью запроса

Добрый вечер!
Помогите разобраться в чем ошибка в скрипте процедуры следующего запроса:

procedure frmScore_ComboBox1_OnClick (Sender: TObject);
begin
    frmScore.ComboBox1.dbSQLExecute('SELECT name FROM Specification WHERE id_Dogovor='+frmScore.dogovor.sqlValue)
end

после нажатия на раскрывающийся список - пустота, хотя должно быть - спецификация 1

Re: Процедура выборки в combobox с помощью запроса

glkonst79 wrote:

    frmScore.ComboBox1.dbSQLExecute('SELECT name FROM Specification WHERE id_Dogovor='+frmScore.dogovor.sqlValue)

Должно быть так:

    frmScore.ComboBox1.dbSQLExecute('SELECT name, id FROM Specification WHERE id_Dogovor='+frmScore.dogovor.sqlValue)

Yana

Re: Процедура выборки в combobox с помощью запроса

Добрый вечер!
К сожаление введение в выбор столбца id, совершенно не решило проблему. Я честно сказать и до вопроса пробывал ставить id, но перед столбцом namе.

Re: Процедура выборки в combobox с помощью запроса

Добрый вечер.

Тогда дело в условии. Проверьте его визуально выводом на экран:

Showmessage('SELECT name, id FROM Specification WHERE id_Dogovor='+frmScore.dogovor.sqlValue)

Возможно нет такого значения id_Dogovor, который выбирается frmScore.dogovor.sqlValue

Yana

Re: Процедура выборки в combobox с помощью запроса

I think your problem might be solved by changing your quotes.



 frmScore.ComboBox1.dbSQLExecute('SELECT name, id FROM Specification WHERE id_Dogovor="'+frmScore.dogovor.sqlValue+"'');

Note the " then '+ and at the end +' then " before the final '.

The double '' are speech quotes  and the single is the apostrophe.


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


Обратите внимание на [color = red] "[/ color], затем [color = red] '[/ color] и в конце [color = red]' [/ color], затем [color = red]" [/ color] перед final [color = red] '[/ color].

Двойное «» - это речевые кавычки, а одинарное - апостроф.

On a clear disk you can seek forever

Re: Процедура выборки в combobox с помощью запроса

Добрый вечер!
Я далеко не программист, и даже далеко до делитанта.
Ни одно из предложенных решений не помогает.
Вероятно я что-то упускаю, приложил проект. Может поможет решить мою проблему.
Форма счета вызывается через словарь.
Очень прошу помочь

Post's attachments

Attachment icon Новые связи.zip 370.2 kb, 225 downloads since 2020-12-03 

Re: Процедура выборки в combobox с помощью запроса

glkonst79 wrote:

Добрый вечер!
Я далеко не программист, и даже далеко до делитанта.
Ни одно из предложенных решений не помогает.
Вероятно я что-то упускаю, приложил проект. Может поможет решить мою проблему.
Форма счета вызывается через словарь.
Очень прошу помочь

  frmScore.ComboBox1 - такого адреса нет
   как попасть в frmScore ?

Re: Процедура выборки в combobox с помощью запроса

Добрый вечер!
Вызов формы можно осуществить через кнопку словарь (нижний правый угол) и затем вкладка счет и кнопка button16.

Re: Процедура выборки в combobox с помощью запроса

glkonst79 wrote:

Добрый вечер!
Вызов формы можно осуществить через кнопку словарь (нижний правый угол) и затем вкладка счет и кнопка button16.

procedure frmScore_spec_OnDropDown (Sender: TObject);
begin
 frmScore.spec.dbSQLExecute('SELECT name FROM Specification WHERE id_Dogovor='+frmScore.dogovor.sqlValue);
end;
Post's attachments

Attachment icon test.rar 21.63 kb, 211 downloads since 2020-12-05 

Re: Процедура выборки в combobox с помощью запроса

Добрый день!
Спасибо огромное, работает. Оказывается было выбрано не правильное условие для процедуры)))
Можно попросить еще помочь с одной проблемой, как сделать чтобы по нажатию кнопки произошло заполнение номенклатуры в счете, согласно договора и спецификации.

Re: Процедура выборки в combobox с помощью запроса

glkonst79 wrote:

Добрый день!
Спасибо огромное, работает. Оказывается было выбрано не правильное условие для процедуры)))
Можно попросить еще помочь с одной проблемой, как сделать чтобы по нажатию кнопки произошло заполнение номенклатуры в счете, согласно договора и спецификации.

опешите ситуацию как можно конкретнее

Re: Процедура выборки в combobox с помощью запроса

Добрый вечер!
Ситуация следующая. Есть договор и спецификация к нему. Когда я создаю счет, то хотелось бы посредством кнопки заполнять номенклатуру в счете исходя из выбранного номера договора и спецификации.
Если сделать просто копирование данных с таблицы спецификации посредствам SQL запроса, то нет привязки данных к счету.
Как это можно осуществить?
(поля которые копируются с таблицы спецификация "Specification" в таблицу "AST": id_Nomenkl, number, price, NDS)
А вот как потом заполнить поле id_score, ума никак не приложу.
Примерно тоже я попытался сделать в форме прихода frmADmission, но после копирования я не вижу в таблице номенклатуру.

13 (edited by sibprogsistem 2020-12-09 09:57:20)

Re: Процедура выборки в combobox с помощью запроса

у меня есть пример из моего проекта с объединением  баз данных

//***********************************************************************************************
//-------------------------------------- отчеты -------------------------------------------------
//***********************************************************************************************
procedure bReportOnClick (ol,li: string);
var
    frxDBDataset1, frxDBDataset2,frxDBDataset3,frxDBDataset4,frxDBDataset5,frxDBDataset6,frxDBDataset7,frxDBDataset8,frxDBDataset9,frxDBDataset10,frxDBDataset11,frxDBDataset12: TfrxDBDataset;
    frxDBDataset13,frxDBDataset14,frxDBDataset15: TfrxDBDataset;
    ServiceWork, WorkOff, servise, listWorkOff,TypeOfEquipment,Manufacturer,Company,status,clCompanyOrApp,companyServiceWork, comDoc,TypeDoc, union : TDataSet;
    firstNameClient, twoNameClient, lastNameClient: TDataSet;
    i,c: integer;
    s:string;
begin
    //передача в дизайнер отчета
    SQLQuery('SELECT id AS "'+langIniG.ReadString('reportmess','dr1', '(id) Идентификатор клиента')+'",id_clCompanyOrApp AS "'+langIniG.ReadString('reportmess','dr2', '(id) Идентификатор типа клиента')+'",'+
             'id_company AS "'+langIniG.ReadString('reportmess','dr3', '(id) Идентификатор организации')+'",id_status AS "'+langIniG.ReadString('reportmess','dr4', '(id) Идентификатор статуса оборудования ')+'",'+
             'id_TypeOfEquipment AS "'+langIniG.ReadString('reportmess','dr5', '(id) Идентификатор типа оборудования ')+'",id_Manufacturer AS "'+langIniG.ReadString('reportmess','dr6', '(id) Идентификаторбренда оборудования ')+'",'+
             'telephonClient AS "'+langIniG.ReadString('reportmess','dr31', 'Телефон')+'",adresClient AS "'+langIniG.ReadString('reportmess','dr10', 'Адрес клиента')+'", passportNamberClient AS "'+langIniG.ReadString('reportmess','dr11', 'Серия паспорта клиента')+'", passportSeriesClient AS "'+langIniG.ReadString('reportmess','dr12', 'Номер паспорта клиента')+'",'+
             'serialNamber AS "'+langIniG.ReadString('reportmess','dr13', 'Серийный номер оборудования ')+'" ,descriptionATCsWords AS "'+langIniG.ReadString('reportmess','dr14', 'Описание неисправности')+'",externalStatus AS "'+langIniG.ReadString('reportmess','dr15', 'Внешний вид')+'",'+
             'model AS "'+langIniG.ReadString('reportmess','dr16', 'Модель оборудования ')+'",dateInServise AS "'+langIniG.ReadString('reportmess','dr17', 'Дата поступления ')+'",equipment AS "'+langIniG.ReadString('reportmess','dr18', 'Комплектация ')+'",'+
             'diagnostics AS "'+langIniG.ReadString('reportmess','dr19', 'Описание диагностики')+'",dateApplcation AS "'+langIniG.ReadString('reportmess','dr20', 'Дата ожидания мастера')+'",timeApplication AS "'+langIniG.ReadString('reportmess','dr21', 'Время ожидания мастера')+'",'+
             'warranty AS "'+langIniG.ReadString('reportmess','dr22', 'Гарантийный ДА/НЕТ')+'",onlyDiiagnostics AS "'+langIniG.ReadString('reportmess','dr23', 'Только диагностика ДА/НЕТ')+'"   FROM servise', servise);
    SQLQuery('SELECT name AS "'+langIniG.ReadString('reportmess','dr7', 'Имя клиента')+'"  FROM firstNameClient', firstNameClient);
    SQLQuery('SELECT name AS "'+langIniG.ReadString('reportmess','dr8', 'Фамилия клиента')+'"  FROM twoNameClient', twoNameClient);
    SQLQuery('SELECT name AS "'+langIniG.ReadString('reportmess','dr9', 'Отчество клиента')+'"  FROM lastNameClient', lastNameClient);
    SQLQuery('SELECT id_servise AS "'+langIniG.ReadString('reportmess','dr24', '(id) Идентификатор оборудования ')+'", priceWorkOff AS "'+langIniG.ReadString('reportmess','dr25', 'Цена')+'",klVoWorkOff AS "'+langIniG.ReadString('reportmess','dr26', 'Колличество')+'",nameWorkOff AS "'+langIniG.ReadString('reportmess','dr27', 'Наименование')+'" FROM listWorkOff', listWorkOff);
    SQLQuery('SELECT nameTypeOfEquipment "'+langIniG.ReadString('reportmess','dr28', 'Тип оборудования ')+'" FROM TypeOfEquipment', TypeOfEquipment);
    SQLQuery('SELECT nameManufacturer AS "'+langIniG.ReadString('reportmess','dr29', 'Бренд оборудования ')+'" FROM manufacturer', Manufacturer);
    SQLQuery('SELECT nameCompany AS "'+langIniG.ReadString('reportmess','dr30', 'Имя ')+'", telCompany AS "'+langIniG.ReadString('reportmess','dr31', 'Телефон')+'", streetCompany AS "'+langIniG.ReadString('reportmess','dr32', 'Улица')+'", houseCompany AS "'+langIniG.ReadString('reportmess','dr33', 'Дом')+'", fractionCompany AS "'+langIniG.ReadString('reportmess','dr34', 'Дробь')+'", officeCompany AS "'+langIniG.ReadString('reportmess','dr35', 'Офис')+'"  FROM company', Company);
    SQLQuery('SELECT statusName AS "'+langIniG.ReadString('reportmess','dr36', 'Статус оборудования ')+'" FROM status', status);
    SQLQuery('SELECT nameclCompanyOrApp AS "'+langIniG.ReadString('reportmess','dr37', 'Частный клиент,компания, заявка')+'" FROM clCompanyOrApp', clCompanyOrApp);
    SQLQuery('SELECT id_Company AS "'+langIniG.ReadString('reportmess','dr38', '(id) Идентификатор организации')+'",nameServise AS "'+langIniG.ReadString('reportmess','dr39', 'Тип работы')+'",priceServise AS "'+langIniG.ReadString('reportmess','dr40', 'Цена работы')+'",'+
             'dateServiseCompany AS"'+langIniG.ReadString('reportmess','dr41', 'Дата выполнения работы')+'",klVo "'+langIniG.ReadString('reportmess','dr42', 'Колличество')+'" FROM companyServiceWork', companyServiceWork);
    SQLQuery('SELECT id_TypeDoc AS "'+langIniG.ReadString('reportmess','dr43', '(id)Идентификатор Тип документа')+'",scanDoc AS "'+langIniG.ReadString('reportmess','dr44', 'Документ')+'",dateInDoc AS "'+langIniG.ReadString('reportmess','dr45', 'Дата')+'",nameDoc AS "'+langIniG.ReadString('reportmess','dr30', 'Имя ')+'",descriptionDoc "'+langIniG.ReadString('reportmess','dr46', 'Описание')+'" FROM comDoc', comDoc);
    SQLQuery('SELECT nameTypeDoc AS "'+langIniG.ReadString('reportmess','dr47', 'Тип документа')+'" FROM TypeDoc', TypeDoc);

    // передача в дизайнер отчета объединенных данных несколькоих таблиц
    SQLQuery('SELECT servise.id AS "'+langIniG.ReadString('reportmess','dr48', '(id)')+'",'+
             'servise.telephonClient AS "'+langIniG.ReadString('reportmess','dr85', '(частный клиент) Телефон')+'",servise.adresClient AS "'+langIniG.ReadString('reportmess','dr52', '(частный клиент) Адрес')+'", servise.passportNamberClient AS "'+langIniG.ReadString('reportmess','dr53', '(частный клиент) Серия паспорта')+'", servise.passportSeriesClient AS "'+langIniG.ReadString('reportmess','dr54', '(частный клиент) Номер паспорта')+'",'+
             'servise.serialNamber AS "'+langIniG.ReadString('reportmess','dr55', '(Оборудование) Серийный номер')+'" ,servise.descriptionATCsWords AS "'+langIniG.ReadString('reportmess','dr56', '(Оборудование) Описание неисправности')+'",servise.externalStatus AS "'+langIniG.ReadString('reportmess','dr57', '(Оборудование) Внешний вид')+'",'+
             'servise.model AS "'+langIniG.ReadString('reportmess','dr58', '(Оборудование) Модель')+'",servise.dateInServise AS "'+langIniG.ReadString('reportmess','dr59', '(Оборудование) Дата поступления ')+'",servise.equipment AS "'+langIniG.ReadString('reportmess','dr60', '(Оборудование) Комплектация ')+'",'+
             'servise.diagnostics AS "'+langIniG.ReadString('reportmess','dr61', '')+'",servise.dateApplcation AS "'+langIniG.ReadString('reportmess','dr62', '(Заявка) Дата ожидания мастера')+'",servise.timeApplication AS "'+langIniG.ReadString('reportmess','dr63', '(Заявка) Время ожидания мастера')+'",'+
             'servise.warranty AS "'+langIniG.ReadString('reportmess','dr64', '(Оборудование) Гарантийный ДА/НЕТ')+'",servise.onlyDiiagnostics AS "'+langIniG.ReadString('reportmess','dr65', '(Оборудование) Только диагностика ДА/НЕТ')+'", '+
             'firstNameClient.name AS "'+langIniG.ReadString('reportmess','dr49', '(частный клиент)  Имя ')+'",'+
             'twoNameClient.name AS "'+langIniG.ReadString('reportmess','dr50', '(частный клиент) Фамилия ')+'",'+
             'lastNameClient.name  AS "'+langIniG.ReadString('reportmess','dr51', '(частный клиент) Отчество ')+'",'+
             'listWorkOff.priceWorkOff AS "'+langIniG.ReadString('reportmess','dr66', '(Работы) Цена')+'",listWorkOff.klVoWorkOff  AS "'+langIniG.ReadString('reportmess','dr67', '(Работы) Цена')+'",listWorkOff.nameWorkOff AS "'+langIniG.ReadString('reportmess','dr68', '(Работы) Наименование')+'",'+
             'sumInPrice.inPrice AS "'+langIniG.ReadString('reportmess','dr69', '(Оплата работ) Сумма оплаты')+'",sumInPrice.dateINPrice AS "'+langIniG.ReadString('reportmess','dr70', '(Оплата работ) Дата оплаты')+'", '+
             'TypeOfEquipment.nameTypeOfEquipment AS "'+langIniG.ReadString('reportmess','dr71', '(Оборудование) Тип')+'", '+
             'manufacturer.nameManufacturer AS "'+langIniG.ReadString('reportmess','dr72', '(Оборудование) Бренд')+'", '+
             'company.nameCompany AS "'+langIniG.ReadString('reportmess','dr73', '(Компания) Имя ')+'", telCompany AS "'+langIniG.ReadString('reportmess','dr74', '(Компания) Телефон')+'", streetCompany AS "'+langIniG.ReadString('reportmess','dr75', '(Компания) Улица')+'", houseCompany AS "'+langIniG.ReadString('reportmess','dr76', '(Компания) Дом')+'", fractionCompany AS "'+langIniG.ReadString('reportmess','dr77', '(Компания) Дробь')+'", officeCompany AS "'+langIniG.ReadString('reportmess','dr78', '(Компания) Офис')+'", '+
             'status.statusName AS "'+langIniG.ReadString('reportmess','dr79', '(Оборудование) Статус')+'", '+
             'clCompanyOrApp.nameclCompanyOrApp AS "'+langIniG.ReadString('reportmess','dr80', '(Тип клиента) Частный клиент,компания, заявка')+'" '+
             'FROM servise '+
             'LEFT OUTER JOIN firstNameClient ON firstNameClient.id=servise.id_firstNameClient '+
             'LEFT OUTER JOIN twoNameClient ON twoNameClient.id=servise.id_twoNameClient '+
             'LEFT OUTER JOIN lastNameClient ON lastNameClient.id=servise.id_lastNameClient '+
             'LEFT OUTER JOIN listWorkOff ON listWorkOff.id_servise=servise.id '+
             'LEFT OUTER JOIN sumInPrice ON sumInPrice.id_servise=servise.id '+
             'LEFT OUTER JOIN TypeOfEquipment ON TypeOfEquipment.id=servise.id_TypeOfEquipment '+
             'LEFT OUTER JOIN manufacturer ON manufacturer.id=servise.id_manufacturer '+
             'LEFT OUTER JOIN company ON company.id=servise.id_Company '+
             'LEFT OUTER JOIN status ON status.id=servise.id_status '+
             'LEFT OUTER JOIN clCompanyOrApp ON clCompanyOrApp.id=servise.id_clCompanyOrApp '+
             'WHERE servise.id='+ frmServiceCen.tgList.sqlValue , WorkOff);
   if frmCompanyServiceWork.tgCompanyWork.SelectedColumn then
     begin
       c := frmCompanyServiceWork.tgCompanyWork.RowCount-1;
         for i := 0 to c do
          begin
          if frmCompanyServiceWork.tgCompanyWork.Selected[i] then s := s +IntToStr(frmCompanyServiceWork.tgCompanyWork.dbIndexToID(i)) + ' OR ';
        end;
        if s <> '' then
      begin
    SetLength(s, Length(s)-4);
    SQLQuery('SELECT companyServiceWork.id AS "'+langIniG.ReadString('reportmess','dr48', '(id)')+'", companyServiceWork.nameServise AS "'+langIniG.ReadString('reportmess','dr82', 'Имя услуги')+'", companyServiceWork.priceServise AS "'+langIniG.ReadString('reportmess','dr83', 'Цена услуги')+'", companyServiceWork.dateServiseCompany  AS "'+langIniG.ReadString('reportmess','dr84', 'Дата окозания услуги')+'" ,'+
             'companyServiceWork.klVo AS "'+langIniG.ReadString('reportmess','dr42', 'Колличество')+'",'+
             'company.nameCompany AS "'+langIniG.ReadString('reportmess','dr73', '(Компания) Имя ')+'", telCompany AS "'+langIniG.ReadString('reportmess','dr74', '(Компания) Телефон')+'", streetCompany AS "'+langIniG.ReadString('reportmess','dr75', '(Компания) Улица')+'", houseCompany AS "'+langIniG.ReadString('reportmess','dr76', '(Компания) Дом')+'", fractionCompany AS "'+langIniG.ReadString('reportmess','dr77', '(Компания) Дробь')+'", officeCompany AS "'+langIniG.ReadString('reportmess','dr78', '(Компания) Офис')+'" '+
             'FROM companyServiceWork '+
             'LEFT OUTER JOIN company ON company.id=companyServiceWork.id_Company '+
             'WHERE companyServiceWork.id='+s, ServiceWork);
    end;
   end else
     begin
     SQLQuery('SELECT companyServiceWork.id AS "'+langIniG.ReadString('reportmess','dr48', '(id)')+'", companyServiceWork.nameServise AS "'+langIniG.ReadString('reportmess','dr82', 'Имя услуги')+'", companyServiceWork.priceServise AS "'+langIniG.ReadString('reportmess','dr83', 'Цена услуги')+'", companyServiceWork.dateServiseCompany  AS "'+langIniG.ReadString('reportmess','dr84', 'Дата окозания услуги')+'" ,'+
             'companyServiceWork.klVo AS "'+langIniG.ReadString('reportmess','dr42', 'Колличество')+'",'+
             'company.nameCompany AS "'+langIniG.ReadString('reportmess','dr73', '(Компания) Имя ')+'", telCompany AS "'+langIniG.ReadString('reportmess','dr74', '(Компания) Телефон')+'", streetCompany AS "'+langIniG.ReadString('reportmess','dr75', '(Компания) Улица')+'", houseCompany AS "'+langIniG.ReadString('reportmess','dr76', '(Компания) Дом')+'", fractionCompany AS "'+langIniG.ReadString('reportmess','dr77', '(Компания) Дробь')+'", officeCompany AS "'+langIniG.ReadString('reportmess','dr78', '(Компания) Офис')+'" '+
             'FROM companyServiceWork '+
             'LEFT OUTER JOIN company ON company.id=companyServiceWork.id_company '+
             'WHERE companyServiceWork.id='+frmCompanyServiceWork.tgCompanyWork.sqlValue , ServiceWork);
    end;
    frxDBDataset1 := TfrxDBDataset.Create(frmLogin);
    frxDBDataset1.UserName        := langIniG.ReadString('reportmess','UserName1', '');
    frxDBDataset1.CloseDataSource := True;
    frxDBDataset1.OpenDataSource  := True;
    frxDBDataset1.DataSet         := servise;


    frxDBDataset2 := TfrxDBDataset.Create(listWorkOff);
    frxDBDataset2.UserName        := langIniG.ReadString('reportmess','UserName2', '');
    frxDBDataset2.CloseDataSource := True;
    frxDBDataset2.OpenDataSource  := True;
    frxDBDataset2.DataSet         := listWorkOff;


    frxDBDataset3 := TfrxDBDataset.Create(TypeOfEquipment);
    frxDBDataset3.UserName        := langIniG.ReadString('reportmess','UserName3', '');
    frxDBDataset3.CloseDataSource := True;
    frxDBDataset3.OpenDataSource  := True;
    frxDBDataset3.DataSet         := TypeOfEquipment;


    frxDBDataset4 := TfrxDBDataset.Create(Manufacturer);
    frxDBDataset4.UserName        := langIniG.ReadString('reportmess','UserName4', '');
    frxDBDataset4.CloseDataSource := True;
    frxDBDataset4.OpenDataSource  := True;
    frxDBDataset4.DataSet         := Manufacturer;


    frxDBDataset5 := TfrxDBDataset.Create(Company);
    frxDBDataset5.UserName        := langIniG.ReadString('reportmess','UserName5', '');
    frxDBDataset5.CloseDataSource := True;
    frxDBDataset5.OpenDataSource  := True;
    frxDBDataset5.DataSet         := Company;


    frxDBDataset6 := TfrxDBDataset.Create(status);
    frxDBDataset6.UserName        := langIniG.ReadString('reportmess','UserName6', '');
    frxDBDataset6.CloseDataSource := True;
    frxDBDataset6.OpenDataSource  := True;
    frxDBDataset6.DataSet         := status;


    frxDBDataset7 := TfrxDBDataset.Create(clCompanyOrApp);
    frxDBDataset7.UserName        := langIniG.ReadString('reportmess','UserName7', '');
    frxDBDataset7.CloseDataSource := True;
    frxDBDataset7.OpenDataSource  := True;
    frxDBDataset7.DataSet         := clCompanyOrApp;


    frxDBDataset8 := TfrxDBDataset.Create(companyServiceWork);
    frxDBDataset8.UserName        := langIniG.ReadString('reportmess','UserName8', '');
    frxDBDataset8.CloseDataSource := True;
    frxDBDataset8.OpenDataSource  := True;
    frxDBDataset8.DataSet         := companyServiceWork;


    frxDBDataset9 := TfrxDBDataset.Create(comDoc);
    frxDBDataset9.UserName        := langIniG.ReadString('reportmess','UserName9', '');
    frxDBDataset9.CloseDataSource := True;
    frxDBDataset9.OpenDataSource  := True;
    frxDBDataset9.DataSet         := comDoc;


    frxDBDataset10 := TfrxDBDataset.Create(TypeDoc);
    frxDBDataset10.UserName        := langIniG.ReadString('reportmess','UserName10', '');
    frxDBDataset10.CloseDataSource := True;
    frxDBDataset10.OpenDataSource  := True;
    frxDBDataset10.DataSet         := TypeDoc;

    frxDBDataset11 := TfrxDBDataset.Create(WorkOff);
    frxDBDataset11.UserName        := langIniG.ReadString('reportmess','UserName11', '');
    frxDBDataset11.CloseDataSource := True;
    frxDBDataset11.OpenDataSource  := True;
    frxDBDataset11.DataSet         := WorkOff;

    frxDBDataset12 := TfrxDBDataset.Create(ServiceWork);
    frxDBDataset12.UserName        := langIniG.ReadString('reportmess','UserName12', '');
    frxDBDataset12.CloseDataSource := True;
    frxDBDataset12.OpenDataSource  := True;
    frxDBDataset12.DataSet         := ServiceWork;

    frxDBDataset13 := TfrxDBDataset.Create(firstNameClient);
    frxDBDataset13.UserName        := langIniG.ReadString('reportmess','UserName13', '');
    frxDBDataset13.CloseDataSource := True;
    frxDBDataset13.OpenDataSource  := True;
    frxDBDataset13.DataSet         := firstNameClient;

    frxDBDataset14 := TfrxDBDataset.Create(twoNameClient);
    frxDBDataset14.UserName        := langIniG.ReadString('reportmess','UserName14', '');
    frxDBDataset14.CloseDataSource := True;
    frxDBDataset14.OpenDataSource  := True;
    frxDBDataset14.DataSet         := twoNameClient;

    frxDBDataset15 := TfrxDBDataset.Create(lastNameClient);
    frxDBDataset15.UserName        := langIniG.ReadString('reportmess','UserName15', '');
    frxDBDataset15.CloseDataSource := True;
    frxDBDataset15.OpenDataSource  := True;
    frxDBDataset15.DataSet         := lastNameClient;

    frmLogin.frxReport.Clear;
    //frmLogin.frxReport.DataSets.Clear;
    frmLogin.frxReport.DataSets.Add(frxDBDataset1);
    frmLogin.frxReport.DataSets.Add(frxDBDataset13);
    frmLogin.frxReport.DataSets.Add(frxDBDataset14);
    frmLogin.frxReport.DataSets.Add(frxDBDataset15);
    frmLogin.frxReport.DataSets.Add(frxDBDataset2);
    frmLogin.frxReport.DataSets.Add(frxDBDataset3);
    frmLogin.frxReport.DataSets.Add(frxDBDataset4);
    frmLogin.frxReport.DataSets.Add(frxDBDataset5);
    frmLogin.frxReport.DataSets.Add(frxDBDataset6);
    frmLogin.frxReport.DataSets.Add(frxDBDataset7);
    frmLogin.frxReport.DataSets.Add(frxDBDataset8);
    frmLogin.frxReport.DataSets.Add(frxDBDataset9);
    frmLogin.frxReport.DataSets.Add(frxDBDataset10);
    frmLogin.frxReport.DataSets.Add(frxDBDataset11);
    frmLogin.frxReport.DataSets.Add(frxDBDataset12);


    frxDBDataset1.DataSet.Close;
    frxDBDataset2.DataSet.Close;
    frxDBDataset3.DataSet.Close;
    frxDBDataset4.DataSet.Close;
    frxDBDataset5.DataSet.Close;
    frxDBDataset6.DataSet.Close;
    frxDBDataset7.DataSet.Close;
    frxDBDataset8.DataSet.Close;
    frxDBDataset9.DataSet.Close;
    frxDBDataset10.DataSet.Close;
    frxDBDataset11.DataSet.Close;
    frxDBDataset12.DataSet.Close;
    frxDBDataset13.DataSet.Close;
    frxDBDataset14.DataSet.Close;
    frxDBDataset15.DataSet.Close;


         if (ol='print') then begin
            frmLogin.frxReport.LoadFromFile(ExtractFilePath(Application.ExeName)+li);
            frmLogin.frxReport.ShowReport;
          end;

          if (ol='edit') then begin
           frmLogin.frxReport.LoadFromFile(ExtractFilePath(Application.ExeName)+li);
           frmLogin.mniReport.Click;
         end;

         if (ol='new') then frmLogin.mniReport.Click;

    frxDBDataset1.Free;
    frxDBDataset2.Free;
    frxDBDataset3.Free;
    frxDBDataset4.Free;
    frxDBDataset5.Free;
    frxDBDataset6.Free;
    frxDBDataset7.Free;
    frxDBDataset8.Free;
    frxDBDataset9.Free;
    frxDBDataset10.Free;
    frxDBDataset11.Free;
    frxDBDataset12.Free;

end;

скрипт собирает нужные поля разных таблиц
как это работает можете посмотреть в моем проекте http://myvisualdatabase.com/forum/viewtopic.php?id=6853