Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение БД, Перенаправление просмотра 
:(
    Опции темы
lotos
  Дата 4.5.2004, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 18.1.2004

Репутация: нет
Всего: нет



Подскажите пож-ста....!!!
Как вывести в DBGrid данные из БД вида:

Поля || X1 |X2 |X3 |X4 |
----------------------------
Данные Y1 |Y2 |Y3 |Y4 |
.......................
и т.п.
и показать их в следующем виде:

X1 |Y1 |Y1 | .....
X2 |Y2 |Y2 | .......


то есть перевернуть данные ...

Бьюсь, бьюсь и ни чего не приходит в голову ....

Помогите !!!!! notify.gif notify.gif notify.gif
PM MAIL ICQ   Вверх
x77
Дата 4.5.2004, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



lotos, стандартно - никак. можно подробнее о задаче, зачем это надо (может, есть другой путь решения?) и какая субд.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
lotos
Дата 4.5.2004, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 18.1.2004

Репутация: нет
Всего: нет



М-да ....!!!
Может я и не прав!!!!!

но вот задача .....

Требуется по различным объектам каждый день заносить показания . Количество объектов фиксировано ....

Вот я и соорудил (вернее пытаюсь соорудить) структуру тыблицы ..

Описание : Х1 - это дата ввода ... , а от Х2 до Хн - это и есть объекты

Так вот а внешне желательно просмотреть так:

---------- дата | | |-----------------------
--------------------------------------------------------------------------
объект1 |
------------- | данные по датам (т.е. Y)
объект2 |


Вот такие вот дела ...
что делать?

База используется Paradox!!!!


PM MAIL ICQ   Вверх
x77
Дата 4.5.2004, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



lotos, стандартными средствами это не сделаешь. можно попробовать через DecisionCube, там есть возможность группировать данные по любым измерениям, но он жрёт много памяти и криво работает. проще всего, имхо, написать процедуру, которая будут обновлять данные в стандартном гриде


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
lotos
Дата 4.5.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 18.1.2004

Репутация: нет
Всего: нет



А может подскажите в плане нормализации структуры таблицы ...
Может она у меня совсем неверная?
PM MAIL ICQ   Вверх
x77
Дата 4.5.2004, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



если кол-во объектов действительно фиксировано - то всё верно. можно, конечно, нормализовать: выделить таблицу объектов, линковочную таблицу данных, но кроме тормозов это ничего не даст, и при отображении не поможет. да и вообще нормализация хороша только на страницах учебников, реально я нигде не видел ни одной рабочей базы, нормализованной до 5 формы.
Добавлено @ 11:34

lotos, единстенный момент: данные на объекты приходят одновременно на все? если нет, то нормализовать всё-таки стоит.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Maverick
Дата 4.5.2004, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



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

BeginStolb := 1; //столбцы i
BeginStrok := 1; //строки j

StolbCount := DaysBetween(dtpBeg.Date, dtpEnd.Date)+1 +1;
{начало и конец наблюдений, запрашиваем у пользователя}
StrokCount := n+1; {n - кол-во объектов}

ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Application.EnableEvents := false;
Workbook := ExcelApp.WorkBooks.Add;
WorkBook.WorkSheets[1].Columns.ColumnWidth := 40;
WorkBook.WorkSheets[1].Columns.RowHeight := 14;
WorkBook.WorkSheets[1].Columns.Autofit;

ArrayData := VarArrayCreate([1, StrokCount, 1, StolbCount], varVariant);

======================================================
ОСНОВНОЕ РЕШЕНИЕ ДЛЯ СОСТАВЛЕНИЯ ИСКОМОГО ОТЧЕТА
(выше и ниже форматизация для Excel)

// Заполняем массив
for i := 1 to StrokCount do
for j := 1 to StolbCount do begin
if (i = 1) and (j=1) then ArrayData[i,j] := 'ОБЪЕКТЫ/ДАТЫ'
//левый верхний угол - комментарий
else
if (j = 1) and (i>1)then ArrayData[i,j] := ИМЯ ОБЪЕКТА[i-1 -1]
//слева колонка объектов, нумерация странная из-за того что массив динамический с 0 и еще учитываем названия объектов в первой колонке....
else
if (i = 1) and (j>1)
then ArrayData[i,j] := DateToStr(dtpBeg.Date + j-1 -1)
//сверху строка дат
else
//проверка выполняемости заказа на конкретную дату...
if объект j работал в дату i (несложный SQL запрос)
then ArrayData[i, j] := результат запроса;
//иначе ячейка остается пустой
======================================================

Cell1 := WorkBook.WorkSheets[1].Cells[BeginStrok, BeginStolb];
Cell2 := WorkBook.WorkSheets[1].Cells[BeginStrok + StrokCount-1,
BeginStolb + StolbCount - 1];

fontsect := WorkBook.WorkSheets[1].Cells[BeginStrok+1, BeginStolb+1];

// Область, в которую будем выводить данные
Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
ranfont :=WorkBook.WorkSheets[1].Range[fontsect, Cell2];

Range.Value := ArrayData;
WorkBook.WorkSheets[1].Cells.Font.Bold := True;
ranfont.Font.Color := clGreen;
ExcelApp.Visible := true;


Decision Cube очень неповоротлив и глюкав....

Это сообщение отредактировал(а) Maverick - 4.5.2004, 12:22


--------------------
smile
PM ICQ GTalk   Вверх
Она
Дата 4.5.2004, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 23.4.2004
Где: Москва

Репутация: нет
Всего: 2



Самый простой способ- представить эти данные не в DBGrid a StringGrid... Понятно, что на больших выборках лучше так не развлекаться, но с другой стороны вряд ли юзер оценит такое представление данных при больших объемах информации (более 100 таких столбцов). Как писать в SringGrid, надеюсь, понятно? ( для особо понятливых - ключевые слова: Cells, RowCount, ColCount)


--------------------
С уважением. Мария.
PM MAIL   Вверх
x77
Дата 4.5.2004, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Она, ты себя чтением предыдущих постингов не утруждаешь?



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
lotos
Дата 4.5.2004, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 18.1.2004

Репутация: нет
Всего: нет




Maverick
Я так понял, что для заполнения БД не имеет смысла как она выглядит .....
А вот для выдачи отчетных данных ты предлагаешь формировать их в Exel ...

Я правильно тебя понял?
PM MAIL ICQ   Вверх
Она
Дата 4.5.2004, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 23.4.2004
Где: Москва

Репутация: нет
Всего: 2



Для "заполнения" базы ВАЖНО как она нормализована и как построены индексы. Особенно если речь о реал-тайм системе. Здесь это не так? Вот как представить данные - вопрос удобства пользователя и скорости/надежности реализации необходимых для этого алгоритмов.
Как я видела, в этих постингах о StringGrid ничего не было, а это, пожалуй самый простой способ представления/редактирования данных в твоем случае (да и во многих других). А твои "Объекты" видимо числа, строки? Или речь идет действительно о сериализации? Если имеет место быть сохранение состояния объектов на уровне свойств, естественно лучше продумать структуру базы, а возможно, отказаться от Paradox (если это реально)
И потом ексель -дорога в один конец - только вывод.... Ввод/редактирование делать - зачем тогда Делфа? Да и запаришься...


--------------------
С уважением. Мария.
PM MAIL   Вверх
Medved
Дата 4.5.2004, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Рекомендую использовать временную таблицу. По крайней мере я так решал этот вопрос.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Maverick
Дата 5.5.2004, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: 2
Всего: 10



lotos

Верно... Если пользователь такой чудак, что хочет видеть данные за 200 дней пусть видит - нечего делать скидки, пусть скрывает, если много.... Но я запрашивал у пользователя искомые начало и конец наблюдений... По опыту больше 10 дней редко, кто заказывает.... Создавать отчет динамически сложно, а Excel у пользователя всегда под рукой...

Слева распологаешь все объекты, сверху весь запрошенные период.... и начинаешь заполнять ячейки на пересечении через запросы...

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


Это сообщение отредактировал(а) Maverick - 5.5.2004, 08:59


--------------------
smile
PM ICQ GTalk   Вверх
x77
Дата 5.5.2004, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



lotos, для заполнения бд как раз имеет смысл её структура. при твоей всё будет относительно нормально, если записи ложаться по всем объектам одновременно. если же по каким-то запись проходит, а по каким-то - может и н епроходить, а пройти позже, то надо создавать отдельную таблицу объектов и линковочную таблицу с данными.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0903 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.