Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 добавление строк в dbgrid  [new]
TsYekaterina
Member

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

К сообщению приложен файл. Размер - 16Kb
4 мар 19, 10:33    [21824104]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 627
TsYekaterina,

считывай отсортированные по дате данные ручками в in-memory датасет (в TClientDataSet), при смене дат добавляй нужные строки.
4 мар 19, 10:42    [21824116]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
DimaBr
Member

Откуда:
Сообщений: 10994
Построить запрос так, как написано в хотелке
4 мар 19, 11:25    [21824152]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

гриде данных НЕТ! (с)

Posted via ActualForum NNTP Server 1.5

4 мар 19, 12:20    [21824202]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
Мимопроходящий
гриде данных НЕТ! (с)
Ну правильно, так и речь не о данных - надо строку вставить, а не данные)
4 мар 19, 12:40    [21824227]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
YuRock,

как это сделать в гриде?
4 мар 19, 12:42    [21824229]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

04.03.2019 12:40, YuRock пишет:
> Ну правильно, так и речь не о данных - надо строку вставить, а не данные)

строки в TStrings!

Posted via ActualForum NNTP Server 1.5

4 мар 19, 12:42    [21824230]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Vlad F
Member

Откуда:
Сообщений: 781
TsYekaterina
YuRock,

как это сделать в гриде?

Возможно, и технологически проще и идеологически выдержаннее будет сделать это не в гриде, а в отчете,
который будет вызываться по кнопке рядом с гридом. Предлагаю подумать именно в эту сторону.
4 мар 19, 12:52    [21824245]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4465
TsYekaterina
YuRock,

как это сделать в гриде?

Вам уже ответили: 21824152
4 мар 19, 12:53    [21824249]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Vlad F,

есть необходимость в том, чтобы это было осуществлено именно в гриде.
4 мар 19, 12:54    [21824253]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Gerasimenko,

select name_klient, doc_klient_mrz.*
from TestFSO.dbo.doc_klient_mrz, TestFSO.dbo.klient where doc_klient_mrz.id_klient=klient.id_klient and kod_oper=0 and 
data_doc between '2017-01-01' and '2019-01-01' and Name_klient='nnnnnnn' order by data_doc

не знаю,как дальше сделать - вставить строку перед 2018 г. и после 2019 г. с надписью "сальдо на"
4 мар 19, 13:00    [21824259]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

04.03.2019 12:54, TsYekaterina пишет:
> есть необходимость в том, чтобы это было осуществлено именно в гриде.

иди боршчть вари! (С)

Posted via ActualForum NNTP Server 1.5

4 мар 19, 13:00    [21824261]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205


К сообщению приложен файл. Размер - 7Kb
4 мар 19, 13:00    [21824262]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4465
TsYekaterina
Gerasimenko,

select name_klient, doc_klient_mrz.*
from TestFSO.dbo.doc_klient_mrz, TestFSO.dbo.klient where doc_klient_mrz.id_klient=klient.id_klient and kod_oper=0 and 
data_doc between '2017-01-01' and '2019-01-01' and Name_klient='nnnnnnn' order by data_doc

не знаю,как дальше сделать - вставить строку перед 2018 г. и после 2019 г. с надписью "сальдо на"

Можно через хранимку
CREATE TABLE #NameTempTable(...)
INSERT INTO  #NameTempTable(...)

select * from #NameTempTabl(
4 мар 19, 13:03    [21824267]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

04.03.2019 13:03, Gerasimenko пишет:
> Можно через хранимку

некошерно.
UNION ALL тут нужен.
но без программиста, имхо, не обойтись.

Posted via ActualForum NNTP Server 1.5

4 мар 19, 13:10    [21824274]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4465
Мимопроходящий
04.03.2019 13:03, Gerasimenko пишет:
> Можно через хранимку

некошерно.
UNION ALL тут нужен.
но без программиста, имхо, не обойтись.

По вопросу, ему так проще будет.
4 мар 19, 13:12    [21824278]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Gerasimenko,

спасибо! попробую.
4 мар 19, 13:14    [21824284]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
TsYekaterina
есть необходимость в том, чтобы это было осуществлено именно в гриде.

Если уж дело принципа, то замени TDBGrid на TStringGrid, и заполняй его в цикле while not Eof вручную, при необходимости - вставляя такие "фейковые" строки.
4 мар 19, 13:42    [21824326]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Василий 2
Member

Откуда:
Сообщений: 532
Хранимка либо execute block с FOR SELECT ... INTO ... DO ...
4 мар 19, 14:08    [21824373]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47384

YuRock
замени TDBGrid на TStringGrid, и заполняй его в цикле while not Eof вручную, при
необходимости - вставляя такие "фейковые" строки.

Судя по предыдущим топикам, эти десять строк кода - совершенно непосильная задача для
аффтарши.

Posted via ActualForum NNTP Server 1.5

4 мар 19, 14:10    [21824377]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Gator
Member

Откуда: Москва
Сообщений: 14212
TsYekaterina
Vlad F,

есть необходимость в том, чтобы это было осуществлено именно в гриде.
Тебе уже ответили
- Данные сидят в Dataset, который получается из твоего ЗАПРОСА
- Грид (сетка) это просто витринка на экаране.
Т.е работать надо именно с ДАННЫМИ (датасетом), а не картинкой.

Надо или пустую строку обеспечить (хоть и юнионом) при этом не забыть обеспечить PK (primary)
или сначала вставить новый PK и обновить датасет

Компонентов - как грязи.


Мимопроходящий, Боржч варить ему не доверю. Он компонент (ингредиент добавить не сможет... :)
4 мар 19, 14:21    [21824399]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

04.03.2019 14:21, Gator пишет:
> Боржч варить ему не доверю. Он компонент (ингредиент добавить не сможет... :)

а разве он не ОНА?

Posted via ActualForum NNTP Server 1.5

4 мар 19, 14:24    [21824403]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Gator
Member

Откуда: Москва
Сообщений: 14212
Мимопроходящий,

ну, фотки нету, иник пола не имеет ;)
4 мар 19, 15:04    [21824473]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

8 пальцев! (С)

Posted via ActualForum NNTP Server 1.5

4 мар 19, 15:07    [21824484]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
Gator
Мимопроходящий,

ну, фотки нету, иник пола не имеет ;)
Маловероятно, что ОН назвал бы себя Екатерина. Хотя..
4 мар 19, 15:08    [21824489]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Ребят, по-моему, вас не в ту степь понесло!!!
4 мар 19, 15:45    [21824560]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Уважаемый автор
Member

Откуда: Питер
Сообщений: 309
TsYekaterina
Ребят, по-моему, вас не в ту степь понесло!!!

Весна! Жениться хотят!
4 мар 19, 20:52    [21824826]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Vlad F
Member

Откуда:
Сообщений: 781
TsYekaterina
Ребят, по-моему, вас не в ту степь понесло!!!

Екатерина! - нас, таки да, - вне всякого мнения, понесло.))
Но хоть что-нибудь, в результате, получилось или нет?
4 мар 19, 20:58    [21824828]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Vlad F
Member

Откуда:
Сообщений: 781
На всякий случай, - я про дело, а не про борщ.))
4 мар 19, 21:09    [21824830]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 627
Vlad F
Но хоть что-нибудь, в результате, получилось или нет?

Неужели правда интересно?
А если бы подпись была не "Екатерина", а, скажем, "Укладчик шпал" - все равно бы интересовался?
4 мар 19, 21:26    [21824836]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Vlad F
Member

Откуда:
Сообщений: 781
TsYekaterina,

Хотя, если кто-нибудь из присутствующих сударынь-разработчиков поставит на вид, что борщ нам всем
не менее важен, чем алгоритмы, я покорно сниму шляпу.))
4 мар 19, 21:40    [21824844]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Vlad F
Member

Откуда:
Сообщений: 781
Фэйтл Эра,

Я как раз не на имя смотрю, а на неофита, на которого вы по привычке (не все), не взирая на пол,
вдруг набросились. Освежи, к слову, на вики по слову "снобизм".
4 мар 19, 21:45    [21824849]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Vlad F,

да, все получилось. использовала union all.
5 мар 19, 09:17    [21825047]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

05.03.2019 9:17, TsYekaterina пишет:
> использовала union all.

не верю! (С)

Posted via ActualForum NNTP Server 1.5

5 мар 19, 12:15    [21825213]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Мимопроходящий,

не удивлена. Ваше право!
5 мар 19, 12:46    [21825271]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Док
Member

Откуда: Казань
Сообщений: 6131
Мимопроходящий
05.03.2019 9:17, TsYekaterina пишет:
> использовала union all.

не верю! (С)

брось, это не тот случай :)
5 мар 19, 13:31    [21825330]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10852
Мимопроходящий
некошерно.
UNION ALL тут нужен.
но без программиста, имхо, не обойтись.
Научи как написать UNION ALL для произвольного интервала дат с итогом после окончания каждого календарного месяца
5 мар 19, 18:58    [21825687]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Arioch
Member

Откуда:
Сообщений: 10807
В общем, задача - полуавтоматические промежуточные totals в dbgrid
Довольно любопытно.

YuRock
Если уж дело принципа, то замени TDBGrid на TStringGrid,


Я ожидал, что Virtual Tree View предложат, но так даже брутальнее

Ну - либо DevExpress, там наверняка уже всё есть
https://www.sql.ru/forum/1242854/cxgrid-kak-sdelat-promezhutochnye-itogi

и заполняй его в цикле while not Eof


....и попадаем на табличку размером гигабайт десять.
Полчаса программа тупо висит, потом падает из-за нехватки памяти.
5 мар 19, 20:13    [21825741]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Arioch
Member

Откуда:
Сообщений: 10807
альзо http://www.delphimaster.net/view/3-1116581962

но CDS тут будет почти как ручной цикл, только сложнее
5 мар 19, 20:15    [21825742]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Gator
Member

Откуда: Москва
Сообщений: 14212
_Vasilisk_
Научи как написать UNION ALL для произвольного интервала дат с итогом после окончания каждого календарного месяца
Кен Хендриксон поможет.
http://mirknig.su/knigi/programming/52523-professionalnoe-rukovodstvo-po-transact-sql.html
5 мар 19, 20:30    [21825745]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3898
Arioch
....и попадаем на табличку размером гигабайт десять.
Полчаса программа тупо висит, потом
Ой, ну не мелочись:)
5 мар 19, 21:31    [21825762]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
Vlad F
Member

Откуда:
Сообщений: 781
TsYekaterina
да, все получилось. использовала union all.

Катерина, а покажи, действительно результирующий запрос, хотя бы схематично.
(видишь, парни все еще хвосты пушат)))
5 мар 19, 21:45    [21825764]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51308
_Vasilisk_
Мимопроходящий
некошерно.
UNION ALL тут нужен.
но без программиста, имхо, не обойтись.
Научи как написать UNION ALL для произвольного интервала дат с итогом после окончания каждого календарного месяца
with data as
(
select 1 s,  {d '2017-01-01'} d union all
select 2 s,  {d '2017-01-15'} d union all
select 2 s,  {d '2017-01-21'} d union all
select -3 s, {d '2017-02-01'} d union all
select 1 s,  {d '2017-03-15'} d
)
select N'док' txt, data.*
 from data
union all
select N'сальдо на '+cast(eoMONTH(d) as varchar(20)) txt,
       sum(sum(s)) over(order by eoMONTH(d)),
       eoMONTH(d)
 from data
 group by eoMONTH(d)
 order by d, txt
txtsd
док12017-01-01 00:00:00.000
док22017-01-15 00:00:00.000
док22017-01-21 00:00:00.000
сальдо на 2017-01-3152017-01-31 00:00:00.000
док-32017-02-01 00:00:00.000
сальдо на 2017-02-2822017-02-28 00:00:00.000
док12017-03-15 00:00:00.000
сальдо на 2017-03-3132017-03-31 00:00:00.000
6 мар 19, 23:28    [21826833]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
istrebitel
Member

Откуда:
Сообщений: 4
Смотрите в сторону EhLib. В TDbGridEh есть режим работы с группами (DataGrouping).
29 мар 19, 06:44    [21846725]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51308
istrebitel
Смотрите в сторону EhLib. В TDbGridEh есть режим работы с группами (DataGrouping).
а там есть итоги с нарастанием?
29 мар 19, 09:28    [21846785]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
istrebitel
Member

Откуда:
Сообщений: 4
Применение нестандартных алгоритмов для подсчета агрегированных значений.
В режиме группировки данных грид позволяет рассчитывать значение элементов footer’а через события. Это позволяет реализовывать функции агрегации любого уровня сложности. Для каждой записи DataSet’а вызывается событие OnDataGroupFooterAggregateValue, в котором необходимо рассчитать текущее значение агрегированного значения с учетом вызова события для каждой записи DataSet’а. Например, для функции суммирования необходимо прибавить текущее значение поля к счетчику суммы:

procedure TfrMailBox.DBGridEh1Columns5DataGroupFooterAggregateValue(
  Grid: TCustomDBGridEh; Column: TColumnEh;
  GroupFooter: TGridDataGroupFooterEh;
  FooterColumnItem: TGridDataGroupFooterColumnItemEh; var AValue: Variant;
  Node: TGroupDataTreeNodeEh; var Processed: Boolean);
begin
  if VarIsEmpty(AValue) then
  begin
    AValue := VarArrayCreate([0,1], varInteger);
    AValue[0] := 0;
    AValue[1] := 0;
  end;
  if MemTableEh1post_read.AsInteger = 1
    then AValue[0] := AValue[0] + 1
    else AValue[1] := AValue[1] + 1;
  Processed := True;
end;

После всех вызовов события OnDataGroupFooterAggregateValue для каждой записи DataSet’а, процесс вызывает событие окончательного расчета агрегированного значения - ColumnEh.OnDataGroupFooterFinalizeValue. Если реализуемая функция требует заключительного шага для расчета значения, то это можно сделать в этом событии.

Например, для функции расчета среднего значения на шаге заключительного расчета необходимо разделить сумму значений на количество записей - SumValue / RecordsCount.
Для реализации этой функциональности необходимо в переменной расчета хранить два значения: Сумму и Количество записей. Для этого в переменной AValue: Variant можно завести массив из двух значений, а в функции окончательного расчета, делить первый элемент массива (Сумму) на второй элемент (Количество).

При выводе значения ячейки footer’а на экран вызывается событие преобразования значения в текстовое представление OnDataGroupFooterToDisplayText.
3 апр 19, 06:50    [21850811]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
WFcorp
Member

Откуда:
Сообщений: 7
istrebitel
Смотрите в сторону EhLib. В TDbGridEh есть режим работы с группами (DataGrouping).

Поддержу данное направление. Можно сделать там связку SQL-DataProvider-MemTable-Grid и настроить группировку. Работает достаточно быстро. (и красиво)
3 апр 19, 13:12    [21851230]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
figli
Member

Откуда:
Сообщений: 74
cxGrid - поле с годом - группировка и итоги по этому полю
3 апр 19, 16:55    [21851504]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51308
селектом намного проще
и его отладить легче - все данные в однем месте - девелопепром выполнил, увидел результат

конечно, там, где его написание допустимо
3 апр 19, 17:52    [21851576]     Ответить | Цитировать Сообщить модератору
 Re: добавление строк в dbgrid  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51308
andreymx
селектом намного проще
и его отладить легче - все данные в однем месте - девелопепром выполнил, увидел результат

конечно, там, где его написание допустимо
напишите код, который реализует функционал моего селекта
21826833
3 апр 19, 17:54    [21851577]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить