Topic: Отображение запроса в таблице

Добрый вечер!
Прошу помочь с отображением на форме данных без повторения.
Проблема в следующем, есть форма счетов (AllScore), в которой отображаются все счета. Но когда один счет привязан к нескольким заявкам он начинает повторяться. Как сделать так чтобы в таблице отражались счета только один раз, критерий отсеивания на моем понимании по 3 столбцам (тип оплаты - аванс, постоплата, предоплата; номер счета и контрагент) Счет с одним номером и поставщиком должен быть виден с разным типом оплаты.
Заранее благодарю!!!

Post's attachments

Attachment icon Рабочая.zip 391.31 kb, 211 downloads since 2020-09-21 

Re: Отображение запроса в таблице

Добрый вечер!
Поскольку я не получил ответа, попробывал включить запрос через скрипт. Но странная вещь запрос не работает в программе, а SQLlite studio работает, можно уточнить почему так выходит или я что-то делаю не так.
Так же почему-то не работают скрипты с примеров, причем говорит про ошибки редактор при запуске проекта с примером.

3 (edited by sibprogsistem 2020-10-03 22:24:03)

Re: Отображение запроса в таблице

на сколько я понимаю,  Вы выводите  в таблице  счета и  заявки - тогда все правильно!

в таблице отображаются записи по всем строкам..

Re: Отображение запроса в таблице

Не совсем так, я хотел бы чтобы однотипные счета с разных заявок не дублировались при открытии формы счетов.
Примерно такой запрос, но он не срабатывает почему-то.

procedure frmAllScore_TableGrid1_OnEnter (Sender: TObject);
begin
  frmAllScore.TableGrid1.dbSQL := ('SELECT Typepay.typepay, Dogovor.nomber, Dogovor.data, Counterpaty.name, Counterpaty.tel, Score.nomber, Score.data, Score.pay, Score.paynds, Score.payment, Score.note FROM Score LEFT JOIN Typepay ON typepay.id=score.id_Typepay LEFT JOIN Dogovor ON Dogovor.id=score.id_Dogovor LEFT JOIN Counterpaty ON Counterpaty.id=score.id_Counterpaty GROUP BY Typepay.typepay, Counterpaty.name, Score.nomber');
end;

И еще один вопрос: Как можно сделать так чтобы при записи нового договора выдавалось сообщение: Договор с данным поставщиком был заключен менее 60 дней. И тогда запись данного договора не происходит.

Re: Отображение запроса в таблице

glkonst79 wrote:

Не совсем так, я хотел бы чтобы однотипные счета с разных заявок не дублировались при открытии формы счетов.
Примерно такой запрос, но он не срабатывает почему-то.

procedure frmAllScore_TableGrid1_OnEnter (Sender: TObject);
begin
  frmAllScore.TableGrid1.dbSQL := ('SELECT Typepay.typepay, Dogovor.nomber, Dogovor.data, Counterpaty.name, Counterpaty.tel, Score.nomber, Score.data, Score.pay, Score.paynds, Score.payment, Score.note FROM Score LEFT JOIN Typepay ON typepay.id=score.id_Typepay LEFT JOIN Dogovor ON Dogovor.id=score.id_Dogovor LEFT JOIN Counterpaty ON Counterpaty.id=score.id_Counterpaty GROUP BY Typepay.typepay, Counterpaty.name, Score.nomber');
end;

И еще один вопрос: Как можно сделать так чтобы при записи нового договора выдавалось сообщение: Договор с данным поставщиком был заключен менее 60 дней. И тогда запись данного договора не происходит.

к сожалению не могу понять ваш код и почему он в OnEnter
скорее всего он не работает из-за ошибки группирования
 
 

if ( Now - Form1.DateTimePicker1.DateTime > 60) then Form1.Label1.Caption:='более 60-ти дней' else Form1.Label1.Caption:='менее 60-ти дней';