Вниз
Скачать: CL | DM;

сдвиг данных в 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 вся ветка

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.013 c
2-1218898310
Павлик
2008-08-16 18:51
2008.09.28
Поиск записей


15-1218031848
alien1769
2008-08-06 18:10
2008.09.28
ЗАДАЧА ЭЙНШТЕЙНА


3-1206443287
denis24
2008-03-25 14:08
2008.09.28
Прямой доступ к ораклу без одбс


2-1218991194
Rembo
2008-08-17 20:39
2008.09.28
Проблема с указателями


1-1198608053
Черный Шаман
2007-12-25 21:40
2008.09.28
Написал универсальную функцию прозрачности окон.




   Наверх