соедините оба варианта и получите, то, что хотели..
просто не спешите, если что-то не получается, отдохните или делайте проект дальше, потом вернетесь к этому вопросу, даже крупные разработчики вынуждены отказываться от некоторых частей своих идей. Можете нарисовать то, что Вам нужно, только хорошо подумайте..

попробуйте так

забыл сохранить связи

это просто пример адновременной записи в разные таблицы, если вы хотите привязывать к записям в таблице А записи из таблицы В то это делается по другому...

1,255

(1 replies, posted in Russian)

первый, четвертый вопрос решается путем  установки суффикса и префикса
=3566756536=
так можно понять от кого ...
тоесть можно решить и 3-ю проблему - установкай таймера...

и так создать таймер на для проверки буфера обмена я могу, а вот как правельно определить =3566756536=?
и вставитьв edit именно 3566756536?

1,256

(1 replies, posted in Russian)

У кого есть рабочая программа
1. Сканер передает код только в виде цифр?
2. Передает код через буфур обмена?
3. Когда сканер получил код какой клавишей он передает сигнал?
4. Если сканер штрих кода эмулирует клавиатуру как различать получение данных от клавиатуры и от сканера?

1,257

(9 replies, posted in FAQ)

Дмитрий, не подскажете случайно, чего не хватает в проекте....
файл  0 байт ... на сервер не загружает..

1,258

(1 replies, posted in Russian)

есть (временная) таблица, мне нужно перенести часть её данных (не все поля) в другую таблицу а (временную) очистить

не могу понять как это сделать
 
есть у кого пример?

1,259

(11 replies, posted in Russian)

в Вашем проекте, который Вы давали для скачивания такой формы небыло, дайте полный проект

1,260

(11 replies, posted in Russian)

странный порядок заполнения таблиц...
вот пример попробуйте его

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
maxID:string;
begin
      // запись в таблицу B
    SQLExecute('INSERT INTO b (sn, model, status) VALUES ("'+Form1.Edit4.Text+'", "'+Form1.Edit5.Text+'","'+Form1.Edit6.Text+'")');
    // получаем id последней записи в таблице В
   maxID := SQLExecute('SELECT MAX(id) FROM b');
   // запись в таблицу A
    SQLExecute('INSERT INTO a (firstname, twoname, lastname, id_b) VALUES ("'+Form1.Edit1.Text+'", "'+Form1.Edit2.Text+'","'+Form1.Edit3.Text+'", "'+maxID+'")');
   // обновление таблицы данных главной формы
   Form1.TableGrid1.dbUpdate;
end;

готово, для понимания сделал на чистом проекте,  когда будете реализовывать на своем проекте, смотрите не перепутайте порядок!

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
maxID:string;
begin
      // запись в таблицу B
    SQLExecute('INSERT INTO b (sn, model, status) VALUES ("'+Form1.Edit4.Text+'", "'+Form1.Edit5.Text+'","'+Form1.Edit6.Text+'")');
    // получаем id последней записи в таблице В
   maxID := SQLExecute('SELECT MAX(id) FROM b');
   // запись в таблицу A
    SQLExecute('INSERT INTO a (firstname, twoname, lastname, id_b) VALUES ("'+Form1.Edit1.Text+'", "'+Form1.Edit2.Text+'","'+Form1.Edit3.Text+'", "'+maxID+'")');
   // обновление таблицы данных главной формы
   Form1.TableGrid1.dbUpdate;
end;

1,263

(9 replies, posted in General)

GetHardDiskSerial()
GetIPAddress

processor or motherboard ID - no

я так понимаю..

1. Нужно в событии OnClick создать запись - ту которая будет отрибутом
2. В событии  OnAfterClick (той же кнопки) с начало получить id последней записи в таблице с атрибутом а потом присвоить этот номер id полю связи с таблицей...
сильно занять пока пример не могу написать

1,265

(1 replies, posted in Russian)

ZBear wrote:

Вношу данные в базу запросом INSET. Если на форме присутствует таблица (любая, даже не связанная с базой) выскакивает ошибка, но данные вносятся в базу. Если таблицы нет то всё проходит штатно. В чем может быть проблема?

загрузите проект

super!  thanks for a great example, prahousefamily

vit007 wrote:

Но у меня получилось тоже самое, что с кнопкой сохранить, т.е. не получается к заказу присвоить атрибут вместо этого атрибут присваивается ко всем заказам...


отрибут должен присвоиться через комбобокс... он и создасть связь между таблицами...
загрузите Ваш проект

vit007 wrote:

т.е. надо  "...у абонента может быть несколько номеров, так и у вас, сможете создавать для клиента множество заявок, ..." и у каждой заявки должно быть множество атрибутов.

    if frmAddNote.Action = 'NewRecord' then 
    begin
        frmAddNote.ComboBox1.sqlValue := frmNew.ComboBox1.sqlValue
    
    end;

ругается "incompatible types"

извиняюсь моя ошибка
что бы определить действие которое открыло форму
нужно писать просто Action
пример в архиве

procedure w_OnShow (Sender: TObject; Action: string);
begin
   if Action = 'NewRecord' then  ShowMessage('Новая запись');
  end;
vit007 wrote:

Видать, большой объем текста плохо читается, тогда подскажите скрипт. "новой записи" с применением в нем данных из data и combobox, ,без вызова дополнительной формы. Спасибо.

 var tTypeKC : string = IntToStr(frmReceivinOgEquipment.cbTCK.DbItemID);
     tNameCompany : string = IntToStr(frmReceivinOgEquipment.cbNameCompany.DbItemID);
     tNameTypeOfEquipment : string = IntToStr(frmReceivinOgEquipment.cbNameTypeOfEquipment.DbItemID);
     tNameManufacturer : string = IntToStr(frmReceivinOgEquipment.cbNameManufacturer.DbItemID);
     tDate : string = FormatDateTime('yyyy-mm-dd',frmReceivinOgEquipment.dtDateInServise.DateTime);
     tCompanyOrApp : string = IntToStr(frmReceivinOgEquipment.cbnameclCompanyOrApp.DbItemID);
     tStatusName : string = IntToStr(frmReceivinOgEquipment.cbStatusName.DbItemID);
     tCount : string;
     sWarranty: string = frmReceivinOgEquipment.cbWarranty.sqlValue;
     sOnlyDiagnostic: string = frmReceivinOgEquipment.cbOnlyDiagnostic.sqlValue;
    begin
      tCount := frmReceivinOgEquipment.RecordCount.Text;
      //проверка на заполнение полей
      if (tTypeKC='-1') then ShowHint(frmReceivinOgEquipment.cbTCK, mess13)else
      if (tDate='-1') then ShowHint(frmReceivinOgEquipment.dtDateInServise, mess13)else
      if (tNameCompany='-1') then ShowHint(frmReceivinOgEquipment.cbNameCompany, mess13)else
      if (tNameTypeOfEquipment='-1') then ShowHint(frmReceivinOgEquipment.cbNameTypeOfEquipment, mess13)else
      if (tNameManufacturer='-1') then ShowHint(frmReceivinOgEquipment.cbNameManufacturer, mess13)else
      if (frmReceivinOgEquipment.eModel.Text='') then ShowHint(frmReceivinOgEquipment.eModel, mess13)else
      if (frmReceivinOgEquipment.eSerialNamber.Text='') then ShowHint(frmReceivinOgEquipment.eSerialNamber, mess13)else
      if (frmReceivinOgEquipment.eEquipment.Text='') then ShowHint(frmReceivinOgEquipment.eEquipment, mess13)else
      if (frmReceivinOgEquipment.mDescriptionATCsWords.Text='') then ShowHint(frmReceivinOgEquipment.mDescriptionATCsWords, mess13)else
      if (frmReceivinOgEquipment.mExternalStatus.Text='') then ShowHint(frmReceivinOgEquipment.mExternalStatus, mess13)else
    begin
      // запись в таблицы базы данных
      SQLExecute('INSERT INTO servise (dateInServise, id_status, id_Company, id_TypeOfEquipment, id_manufacturer, model, serialNamber, equipment, externalStatus, descriptionATCsWords, id_clCompanyOrApp, record_count, warranty, onlyDiiagnostics) VALUES ("'+tDate+'", "'+tStatusName+'", "'+tNameCompany+'", "'+ tNameTypeOfEquipment + '", "'+tNameManufacturer+'", "'+frmReceivinOgEquipment.eModel.Text+'", "'+frmReceivinOgEquipment.eSerialNamber.Text+ '", "'+frmReceivinOgEquipment.eEquipment.Text+ '", "'+ frmReceivinOgEquipment.mDescriptionATCsWords.Text+ '", "'+ frmReceivinOgEquipment.mExternalStatus.Text+ '", "'+tCompanyOrApp+'", "'+tCount+'", "'+sWarranty+'", "'+sOnlyDiagnostic+'")');
          // обновление таблицы данных главной формы
      frmServiceCen.tgList.dbUpdate;
      frmReceivinOgEquipment.RecordCount.Text := IntToStr(GetNewRecordCount('servise'));
      //закрытие формы
      frmReceivinOgEquipment.Close;
  end;

где

 tNameManufacturer : string = IntToStr(frmReceivinOgEquipment.cbNameManufacturer.DbItemID);


и есть combobox

vit007 wrote:

Наверно, надо из серии:

if Form2.dbAction = 'NewRecord' then // заполняем компонент только если форма была вызвана для создания новой записи
    begin
        if Form2.CheckBox1.Checked then Form2.Edit2.Text := 'ваше значение';
    end;

Form2.dbAction
поменяйте на
Form2.Action

1,271

(10 replies, posted in Russian)

oleg45112 wrote:

Спасибо.
Такой сложный запрос не осилю....
Вопрос ведь в том как вытащить связанные данные из таблиц второго и выше уровня.
Да.... буду оптимизировать структуру БД...

// передача в дизайнер отчета объединенных данных несколькоих таблиц
    SQLQuery('SELECT servise.id AS "'+langIniG.ReadString('reportmess','dr48', '')+'", servise.firstNameClient AS "'+langIniG.ReadString('reportmess','dr49', '')+'", servise.twoNameClient AS "'+langIniG.ReadString('reportmess','dr50', '')+'", servise.lastNameClient  AS "'+langIniG.ReadString('reportmess','dr51', '')+'" ,'+
             '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', '')+'", '+
             '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 "'+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 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);

AS "'+langIniG.ReadString('reportmess','dr69', '')+'" - поменяйте на свое, это имя под которым будет в дизайнере поле таблицы
 
а вот тут

'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

вытаскивает данные из таблиц

1,272

(10 replies, posted in Russian)

запрос скриптом для отчета из моего проекта

procedure bReportOnClick (ol,li: string);
var
    frxDBDataset1, frxDBDataset2,frxDBDataset3,frxDBDataset4,frxDBDataset5,frxDBDataset6,frxDBDataset7,frxDBDataset8,frxDBDataset9,frxDBDataset10,frxDBDataset11,frxDBDataset12: TfrxDBDataset;
    ServiceWork, WorkOff, servise, listWorkOff,TypeOfEquipment,Manufacturer,Company,status,clCompanyOrApp,companyServiceWork, comDoc,TypeDoc, union : TDataSet;
    i,c: integer;
    s:string;
begin
 iniG :=TIniFile.Create(ExtractFilePath (ParamStr (0))+'setting\sov.ini');
 strshowG:=iniG.ReadString('lang','directlang', '');
 langIniG:=TIniFile.Create(ExtractFilePath (ParamStr (0))+ strshowG);

    //передача в дизайнер отчета
    SQLQuery('SELECT id AS "'+langIniG.ReadString('reportmess','dr1', '')+'",id_clCompanyOrApp AS "'+langIniG.ReadString('reportmess','dr2', '')+'",'+
             'id_company AS "'+langIniG.ReadString('reportmess','dr3', '')+'",id_status AS "'+langIniG.ReadString('reportmess','dr4', '')+'",'+
             'id_TypeOfEquipment AS "'+langIniG.ReadString('reportmess','dr5', '')+'",id_Manufacturer AS "'+langIniG.ReadString('reportmess','dr6', '')+'",'+
             'firstNameClient AS "'+langIniG.ReadString('reportmess','dr7', '')+'", twoNameClient AS "'+langIniG.ReadString('reportmess','dr8', '')+'", lastNameClient  AS "'+langIniG.ReadString('reportmess','dr9', '')+'" ,'+
             '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 id_servise AS "'+langIniG.ReadString('reportmess','dr24', '')+'", 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', '')+'",nameServise AS "'+langIniG.ReadString('reportmess','dr39', '')+'",priceServise AS "'+langIniG.ReadString('reportmess','dr40', '')+'",'+
             'dateServiseCompany "'+langIniG.ReadString('reportmess','dr41', '')+'",klVo "'+langIniG.ReadString('reportmess','dr42', '')+'" FROM companyServiceWork', companyServiceWork);
    SQLQuery('SELECT id_TypeDoc AS "'+langIniG.ReadString('reportmess','dr43', '')+'",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', '')+'", servise.firstNameClient AS "'+langIniG.ReadString('reportmess','dr49', '')+'", servise.twoNameClient AS "'+langIniG.ReadString('reportmess','dr50', '')+'", servise.lastNameClient  AS "'+langIniG.ReadString('reportmess','dr51', '')+'" ,'+
             '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', '')+'", '+
             '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 "'+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 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', '')+'", 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', '')+'", 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;

    frmLogin.frxReport.Clear;
    //frmLogin.frxReport.DataSets.Clear;
    frmLogin.frxReport.DataSets.Add(frxDBDataset1);
    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;


         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;

1,273

(9 replies, posted in FAQ)

VascoMorais wrote:

Thank you, is there a option to add a File?

$mail ->addAttachment=($_REQUEST[sendFile]);  //Прикрепить файл 

поменяйте \ change

function mailerphp (Host,Username,Password,SMTPSecure,Port,mailFrom,mailTo,sendFile,Subject,mailMessage: string ): string;
var
    slParam: TStringList;
    pass:string;
begin
    pass:='1230';  // пороль страницы
    slParam := TStringList.Create;
    slParam.Add('pass='+pass);
    slParam.Add('Host='+Host);
    slParam.Add('Username='+Username);
    slParam.Add('Password='+Password);
    slParam.Add('SMTPSecure='+SMTPSecure);
    slParam.Add('Port='+Port);
    slParam.Add('setFrom='+mailFrom);
    slParam.Add('addAddress='+mailTo);
    slParam.Add('sendFile='+sendFile);
    slParam.Add('Subject='+Subject);
    slParam.Add('mmessage='+mailMessage);

    HTTPPost('http://Ваш_url/sendmail.php', slParam);
end;

попробуйте так \ try this

<?php
/**
 * PHPMailer simple file upload and send example
 */
$msg = '';
if (array_key_exists('userfile', $_FILES)) {
    // First handle the upload
    // Don't trust provided filename - same goes for MIME types
    // See http://php.net/manual/en/features.file-upload.php#114004 for more thorough upload validation
    $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name']));
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        // Upload handled successfully
        // Now create a message
        // This should be somewhere in your include_path
        require '../PHPMailerAutoload.php';
        $mail = new PHPMailer;
        $mail->setFrom('from@example.com', 'First Last');
        $mail->addAddress('whoto@example.com', 'John Doe');
        $mail->Subject = 'PHPMailer file sender';
        $mail->msgHTML("My message body");
        // Attach the uploaded file
        $mail->addAttachment($uploadfile, 'My uploaded file');
        if (!$mail->send()) {
            $msg .= "Mailer Error: " . $mail->ErrorInfo;
        } else {
            $msg .= "Message sent!";
        }
    } else {
        $msg .= 'Failed to move file to ' . $uploadfile;
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>PHPMailer Upload</title>
</head>
<body>
<?php if (empty($msg)) { ?>
    <form method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000"> Send this file: <input name="userfile" type="file">
        <input type="submit" value="Send File">
    </form>
<?php } else {
    echo $msg;
} ?>
</body>
</html>

http://myvisualdatabase.com/forum/viewtopic.php?id=1387

1,275

(10 replies, posted in Russian)

oleg45112 wrote:

подкажите, как прикрепить файл с проектом

удалите файлы dll и exe упакуйте в zip или 7zip