Форум: "Начинающим";
Текущий архив: 2008.09.28;
Скачать: [xml.tar.bz2];
Внизсдвиг данных в dbgrid e на 1 вверх Найти похожие ветки
← →
kate158 (2008-08-19 09:08) [0]Уважаемые мастера!Помогите справиться с такой задачей.На форме есть 2 dbgrida.
В одном-таблица из access"a с 8 столбцами (подключаюсь через ado).Во втором нужно изобразить ту же таблицу, что и в первом,только данные должны быть сдвинуты вверх на 1.Последняя запись = разности 2 последних ячеек из 1 таблицы.
допустим,в первой таблице числа:
1
2
5
во второй должны быть:
2
5
3
Может,у кого-нибудь есть идеи как это реализовать?
← →
Vlad Oshin © (2008-08-19 09:15) [1]first
DataSet.Delete;
DataSet.Append;
← →
oldman © (2008-08-19 09:15) [2]
> Последняя запись = разности 2 последних ячеек из 1 таблицы.
С этого места начинай думать...
Какая к черту запись?
← →
oldman © (2008-08-19 09:16) [3]
> Vlad Oshin © (19.08.08 09:15) [1]
Да вы шутник...
При "листании" первого грида, второй сойдет с ума.
← →
{RASkov} © (2008-08-19 09:19) [4]В файлах таблиц записи хранятся в произвольном порядке. При отображении в гридах, их можно сортировать, фильтровать - как угодно, по каким-либо определенным правилам. А вот сдвигать нет смысла.... Можно конечно и сдвиг съэмулировать добавочным столбцом по которому произвести сортировку и расчитать "последнюю" запись.....
Но может стоит пересмотреть задачу? И, например, при малом количестве записей в первой таблице, формировать стринггрид "по правилу сдвига"...
В общем задачу, я думаю, нужно пересмотреть...
← →
kate158 (2008-08-19 09:25) [5]в первой таблице 56000 строк.
← →
{RASkov} © (2008-08-19 09:26) [6]А если тупо, то нет проблем:
T1.First;
T1.Next;
T2.Очистить;
while not T1.EOF do begin
T2.ДобавитьДанныеИз(T1);
T1.Next;
end;
T2.ПоследняяЯчейка:=T2.ПоследняяЯчейка + T2.ПредпоследняяЯчейка;
Но это не даст ни какой гарантии, что данные будут отображаться как нужно.... В общем это фуфло)
← →
oldman © (2008-08-19 09:27) [7]
> Последняя запись = разности 2 последних ячеек из 1 таблицы.
если весь сыр-бор именно из-за этого, использовать второй грид неправильно.
Можно ведь и тремя TLabel обойтись :)
← →
{RASkov} © (2008-08-19 09:30) [8]> [5] kate158 (19.08.08 09:25)
Не мало.... Что-то тогда все это странно с последней ячейкой)
В прочем, скопировать первую таблицу один в один во вторую.
Затем во второй удалить "первую" запись, и сделать "финт ушами" с последними...
← →
Vlad Oshin © (2008-08-19 09:32) [9]1. select a from b order by с
2. insert into #temp select a from b order by с
2 отображения таблицы, кто с ума сойдет?
← →
oldman © (2008-08-19 09:34) [10]
> Vlad Oshin © (19.08.08 09:32) [9]
После прокрутки первого грида хотя бы на строку вниз, во втором надо убрать все, что туда insert )))
← →
Sergey13 © (2008-08-19 09:37) [11]> [0] kate158 (19.08.08 09:08)
> Может,у кого-нибудь есть идеи как это реализовать?
1. В первую очередь надо уйти то ексельного мЫшления. Строчки, ячейки, сдвинуть.
2. Думать больше о функционале программы, а не о дизайнерских "изысках". По крайней мере идти от функционала к дизайну, а не наоборот.
> Последняя запись = разности 2 последних ячеек из 1 таблицы.
А зачем для этого другая таблица? Вычисляемое поле в первой с разностью нужных полей.
← →
Vlad Oshin © (2008-08-19 09:38) [12]мне, кстати, очень понравились комментариии, по ctrl+alt+стрелка
фигурные скобки имеют ерундовину, а тут удобно, выделил, ctrl+alt+стрелка и все закомментилось со сдвигом, ctrl+alt+стрелка вторая и все комменты сняты, сдвиг вернулся
← →
Vlad Oshin © (2008-08-19 09:39) [13][12] не сюда, извините
← →
Vlad Oshin © (2008-08-19 09:45) [14]
> После прокрутки первого грида хотя бы на строку вниз
второй прокручивается с ним вместе :)
ладно,
> 1. В первую очередь надо уйти то ексельного мЫшления. Строчки,
> ячейки, сдвинуть.
вот это да. 100%
Но, если спрашивают как заточить карандаш именно кирпичом
← →
kate158 (2008-08-19 09:53) [15]
> Sergey13 © (19.08.08 09:37) [11]
нужно,как бы так правильно выразиться,сделать "скользящее окно".при запуске проги на форме должны быть 2 таблицы.в первой набор чисел в 8 столбцах с фиксированным количеством строк(56000).во второй данные из первой таблицы должны быть сдвинуты вверх на 1 строку.во второй таблице тоже 8 столбцов.строка с номером 56000 остается пустой,ее нужно заполнить числами,равными разности последних двух ячеек из первой таблицы.
По поводу ексельного мышления.Пытаюсь описать проблему максимально понятной,чтобы найти правильное решение..ладно,попробую
> Vlad Oshin © (19.08.08 09:15) [1]
> {RASkov} © (19.08.08 09:26) [6]
спасибо!
← →
{RASkov} © (2008-08-19 10:06) [16]T2.ДобавитьВсёИз(T1);
T2.First;
T2.Delete;
T2.Last;
N1:=T2.Ячейка; //Последняя Ячейка;
T2.Prior;
N2:=T2.Ячейка; //Предпоследняя
T2.Добавить(N1-N2); //не инсерт)
T2.Perekrestitsya;
О, боже :)
← →
{RASkov} © (2008-08-19 10:12) [17]> [15] kate158 (19.08.08 09:53)
> чтобы найти правильное решение..ладно,попробую
В первую очередь попробуй найти решение без второй таблицы... Ибо она не нужна, так как в ней новой информации - ноль.
← →
Vlad Oshin © (2008-08-19 10:19) [18]http://rsdn.ru/article/delphi/dbcontrols.xml
← →
Sergey13 © (2008-08-19 10:22) [19]> [15] kate158 (19.08.08 09:53)
> По поводу ексельного мышления.Пытаюсь описать проблему максимально
> понятной,чтобы найти правильное решение
Для этого нужно плясать от смысла того, что тебе нужно, а не от картинки на экране.
> при запуске проги на форме должны быть 2 таблицы
Учи терминологию! Таблицы в БАЗЕ. На экране наборы данных, которые опираются (или НЕ опираются) на физические таблицы, которые в БАЗЕ.
> в первой набор чисел в 8 столбцах с фиксированным количеством строк(56000)
Это вообще к делу не относится. Хоть 888 столбцов (которые отбражают ПОЛЯ ЗАПИСЕЙ в ТАБЛИЦАХ которые в БАЗЕ) и стотыщмильенов строк (которые зовутся ЗАПИСЯМИ которые в ТАБЛИЦАХ которые в БАЗЕ).
> во второй данные из первой таблицы должны быть сдвинуты вверх на 1 строку
это опять картинка, а не смысл. Данные во "второй таблице" откуда берутся? Это отдельная таблица в БД или что?
> ее нужно заполнить числами,равными разности последних двух ячеек из первой таблицы.
что такое "2 последние ячейки"? По вертикали? По горизонтали? По диагонали?
← →
kate158 (2008-08-19 10:42) [20]
> Sergey13 © (19.08.08 10:22) [19]
Хорошо,о мастер!Я буду следовать Вашим советам и выучу терминологию.
← →
Sergey13 © (2008-08-19 11:04) [21]> [20] kate158 (19.08.08 10:42)
1. Я не мастер.
2. Ты можешь сколько угодно иронизировать, но решение вопроса, так нормально и не заданного, нужно тебе, а не мне.
← →
kate158 (2008-08-19 11:28) [22]Да,решение мне действительно нужно.
> Sergey13 © (19.08.08 10:22) [19]
> это опять картинка, а не смысл.
Во втором наборе данных те же поля записей,что и в первом,только удалено первое поле записи;в поле записи с номером 65000 числа,полученные при вычитании значений полей записей первого набора данных с номерами 65000 и 64999(к примеру).Без второго набора данных можно и обойтись,с другой стороны для удобства пользователя было бы неплохо предусмотреть и его.
> что такое "2 последние ячейки"?
это поля записей первого набора данных с номерами 65000 и 64999.
← →
oldman © (2008-08-19 11:32) [23]
> Без второго набора данных можно и обойтись,с другой стороны
> для удобства пользователя было бы неплохо предусмотреть
> и его.
Что там удобного?
Первый набор данных на экране:
2
3
4
5
6
7
второй:
3
4
5
6
7
13
Так?
То есть, во втором наборе дубль первого с добавленной суммой?
Так покажи ее в первом наборе и не парься.
← →
Sergey13 © (2008-08-19 11:45) [24]> [22] kate158 (19.08.08 11:28)
> Во втором наборе данных те же поля записей,что и в первом
Второй набор данных - это фактически та-же таблица, но с одним вычисляемым полем вместо физического? Так?
Насколько оправдан вывод всех 65000 (или 56000 как было первоначально)? Никакой пользователь за целый день не пролистает даже такой объем. Можно ли ограничить вывод?
← →
MsGuns © (2008-08-19 16:44) [25]Если нужно "как в ёкселе", то вместо дбгридов возьмите стрингриды - там запросто можно "сдвигать" и строки и колонки.
Хотя в целом абсолютно солидарен с тезкой (Сергеем13)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.09.28;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.046 c