Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 439
от 20.01.2008, 20:05

Администратор:Gh0stik
В рассылке:Подписчиков: 295, Экспертов: 31
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 118629: Здравствуйте уважаемые эксперты. Такой вопрос: База данных Access. В ней есть таблица, в которой меня интересуют 3 столбца: дата, значение и идентификатор, есть ещё ключевое поле счётчик(не знаю поможет оно нет). Возможно ли вообще сделать т...

Вопрос № 118.629
Здравствуйте уважаемые эксперты. Такой вопрос:
База данных Access. В ней есть таблица, в которой меня интересуют 3 столбца: дата, значение и идентификатор, есть ещё ключевое поле счётчик(не знаю поможет оно нет).
Возможно ли вообще сделать такое и если да то каким образом:
В DBGrid отобразить столбец дата(она одинакова для поля идентификатор), столбцы значение для каждого идентификатора т.е.
дата_____значение_______значение

или только переделовать базу чтобы запрашивать из разных таблиц?
или какие-нибудь временные таблицы?
Подскажите пожалуйста я ничего придумать не смог. Заранее спасибо
Отправлен: 15.01.2008, 19:45
Вопрос задал: Romiros (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 21)

Отвечает: Delph
Здравствуйте, Romiros!

Попробую подвести итог всему, что говорилось в минифоруме. Поскольку число объектов (определяемых по идентификатору) у Вас ограничено и, скорее всего, задано, напрашиваются два направления для решения задачи. Первый вариант – формирование сложного запроса, возвращающего из базы данных уже обработанную информацию. Этот вариант предложил sir henry. Привожу его ответ дословно:

Попробуйте 30 подзапросов организовать. Что-то типа:

SELECT DISTINCT a.дата,
(SELECT b.Значение FROM Таблица b WHERE b.Идентификатор=16 AND b.дата=a.дата) AS Идентификатор_16,
(SELECT b.Значение FROM Таблица b WHERE b.Идентификатор=30 AND b.дата=a.дата) AS Идентификатор_30,
(SELECT b.Значение FROM Таблица b WHERE b.Идентификатор=ещё_какой-то AND b.дата=a.дата) AS Идентификатор_ешё_какой-то,
...
FROM Таблица a
ORDER BY а.дата

Здесь будет столько столбцов, сколько у Вас идентификаторов, плюс первый столбец - дата, увеличивающаяся в каждой строке.
Это будет такая же тягомотина, как и со StringGrid'ом, только идеологически более правильная, в русле борьбы с данными... :D

sir henry

Второй вариант – использование компонента StringGrid. Мне представляется, что этот вариант будет более трудоёмким, но его можно сделать и более гибким (программа сможет сама настраиваться на количество как объектов, так и дней). Отчасти повторю то, что сказал в минифоруме Виктор Пырлик, но постараюсь ответить более подробно (только поэтому не цитирую его ответ). Положите StringGrid на форму и сразу же зафиксируйте верхнюю строку и левый столбец: в инспекторе объектов найдите свойства FixedCols и FixedRows, установите оба в единицу. Теперь верхняя строка и левый столбец перестанут прокручиваться и станут "заголовочными". Настройте размер и положение StringGrid’а на форме так, как посчитаете нужным. Для определённости буду полагать, что Вы сохраните для него то имя, которое выдаст ему Delphi, т.е. StringGrid1. Дальнейшая работа будет проходить уже в коде Вашей программе. Заполнение StringGrid’а удобнее всего поместить в какую либо процедуру – это даст возможность легко перечитывать данные после любого их изменения, равно как и при запуске программы. Предлагаю назвать процедуру GridLoader и поместить её в раздел public описания той формы, где лежит StringGrid. Так же положите на форму компонент ADOQuery и назовите его как TempQuery – я предпочитаю именно такое название, поскольку он не предназначен для статичного отображения данных. В приложении приведён примерный текст процедуры. Запуск процедуры можно привязать к некоторым событиям, например - активация формы (событие формы OnActivate), внесение изменений в базу, нажатие какой-либо кнопки...

Сразу предупрежу, что Вам придётся дополнительно предусмотреть механизм для внесения данных в Вашу базу, поскольку StringGrid не имеет "живой" связи с базами данных.

Приложение:

---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.

Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 18.01.2008, 09:36


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное