Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос об оплате услуг по датам. Строки - люди, столбцы - даты, а [D6, Paradox]


Страницы:   1 2

Piton X ©   (2003-10-14 13:44:00) 

Запрос об оплате услуг по датам. Строки - люди, столбцы - даты, а в таблице - деньги либо 0, либо количество.

Уважаемые мастера! Необходимо создать запрос результатом, которого будет таблица в которой
Перечисленны люди и сколько они заплатили за услуги по датам:
Январь Февраль Март
Иванов 10руб 0 10руб
Петров 0 10руб 0
Сидоров 10руб 10руб 10руб

Есть две таблицы, в одной люди, в другой факты оплаты этих людей с датой оплаты и суммой. Уже бьюсь над проблемой несколько дней, голова кругом идет. Работаю с Парадоксом. Есть FreeReport и PReport под Delphi 6, может кто знает как это сделать? Буду очень признателен за любую помощь.


Piton X   (2003-10-16 10:27:00) [1]

Можете писать мне по ICQ - 341166984
или на petr_malahov@mail.ru

Даже если я найду обходной маневр, то мне интересно как это решить именно с помощью SQL, т.е. кросс-запроса. В любом случае буду рад любой помощи.


Piton X   (2003-10-16 10:18:00) [2]

В общем-то теперь вопроса два.
1. Как сделать кросс-запрос в моем случае?
или
2. Как сделать кроссовый PReport, в моем случае?

Думаю, что любое из этих решений подойдет. Какое будет лучше, скорее дело вкуса.


Piton X   (2003-10-16 10:08:00) [3]

Sandman25
>В PReport включен демо-проект, в котором делается именно то, что Вам нужно.
Что-то немогу с ним разобраться, поэтому и попросил помощи. Если сможете помочь, то спасибо.
Я не знаю как сделать лучше. Либо сформировать кросс-запрос и засунуть его в простой отчет, либо создать пару простых запросов и на их основе сформировать кросс-отчет в PReport. Буду рад за помощь по любому способу. Тем более, что думаю эта тема многих волнует. Особое спасибо MsGuns, пока от него больше дельных мыслей, и всем остальным тоже спасибо. Тема открыта.


Sandman25   (2003-10-15 17:24:00) [4]

Piton X (14.10.03 13:44)

В PReport включен демо-проект, в котором делается именно то, что Вам нужно.


MsGuns   (2003-10-15 16:42:00) [5]

>Zhouck © (15.10.03 14:47) [24]
>А такое, что IB имеет полноценный SQL. А не обрезанный Local

Это фраза - вера или голый понт ? Если первое, объясни мне, да и форуму заодно, что есть полноценный SQL ?SQL в Оракле и MSSQL, к примеру, отличаются и между собой и от интербэйзовского. Какой из них полноценный а какой ущербный ?

>Ваш запрос не будет работать в Local SQL если в него добавить условия having

Запрос успешно работает и с Having, потому что в Local SQL есть такая буква ! Может, сначала прочитаем о Local SQL, в частности о том, что и его создатель, и разработчик IB (точнее тот, кто его сейчас поддерживает) - одни и те же люди ?


bushmen   (2003-10-15 14:53:00) [6]

> Danilka ©:
Всё, пора мне очки покупать. Тогда, извиняюсь.


Zhouck   (2003-10-15 14:47:00) [7]

>>Но какое это (переход на IB) имеет отношение к кросс-запросу ?
А такое, что IB имеет полноценный SQL. А не обрезанный Local. Почему вы не отвечаете по сути? Ваш запрос не будет работать в Local SQL если в него добавить условия having. Потому нужно переходить на SQL-сервер


Danilka   (2003-10-15 14:43:00) [8]

[22] bushmen © (15.10.03 14:31)
дык, в теме - запрос на выборку, а данные хранятся как надо, см: [15] Piton X (15.10.03 08:16)


bushmen   (2003-10-15 14:31:00) [9]

2 Piton X:
Результат будет в таком виде, как ты его запрограммируешь, а способ хранения данных - это совсем другое. А если в будущем надо будет еще какой-нибудь отчет сваять, то ты ещё одну таьлицу создашь и будешь сразу в две одни и те же данные загонять?! :)


Piton X   (2003-10-15 14:16:00) [10]

Даты в качестве столбцов - обязательное условие. В строках люди, в столбцах месяцы, в таблице сумма денег. Таким должен быть результат.


bushmen   (2003-10-15 13:45:00) [11]

> MsGuns ©:
А чем "стандартная" схема не подходит?


MsGuns   (2003-10-15 13:29:00) [12]

>bushmen © (15.10.03 13:10) [18]
Обычно используются "временные" шахматки 2 видов: помесячные в пределах года, полугодия, квартала или подневные (календарные или фактические) в пределах месяца или указанных граничных дат.
Судя по сабжу (оплата абонентами услуг), может понадобиться и то, и другое. Первое - для бухгалтерии, второе - для дирекции.


bushmen   (2003-10-15 13:10:00) [13]

Мне кажется, что не совсем удобно в качестве столбцов использовать даты - даты растут, значит, кол-во столбцов постоянно надо менять. Если я в чем-то не прав - поправьте, пожалуйста


MsGuns   (2003-10-15 12:55:00) [14]

>Zhouck © (15.10.03 10:43) [16]
>Очень даже зря. Лучше переходи на FireBird. Потом меньше трабл будет. Да и дистр. у него меньше парадоксовского будет

Согласен полностью с учетом того, что в условиях автора сабжа это возможно. Но какое это (переход на IB) имеет отношение к кросс-запросу ?


Zhouck   (2003-10-15 10:43:00) [15]

>> Изучаем Local SQL, а если он не нужен, то не критикуем тех, кто его знает лучше ;))
Да ладно, смысла изучения Local SQL большого нет. Просто ппробуйте данный запрос с having и увидите ошибку. Ну умеет так Local SQL. Не надо считать себя очень умным. Kexit изучать полноценный SQL сразу
>>Только не хочу уходить от Paradox
Очень даже зря. Лучше переходи на FireBird. Потом меньше трабл будет. Да и дистр. у него меньше парадоксовского будет


Piton X   (2003-10-15 08:16:00) [16]

Программа еще в разработке. Аернее в творческом тупике. :-) Поэтому я могу даже переделать схему данных. Только не хочу уходить от Paradox. Пока есть две таблицы. В Т1 - люди. В Т2 - факты их оплаты за услуги. Если вы найдете, что можно сделать удобнее, для кросс-запроса, то поменяю даже схему данных.


MsGuns   (2003-10-14 20:17:00) [17]

>Zhouck © (14.10.03 18:53) [13]
>А если нужно будет вставить к-л ограничения? Попробуйте в такой запрос поставить еще having. Это точно не пойдет.

Изучаем Local SQL, а если он не нужен, то не критикуем тех, кто его знает лучше ;))

>Piton X (14.10.03 17:47) [12]
>А как сделать такой кросс-запрос?

Смысл в том, что используются вложенные запросы по одному на каждый месяц. За тебя написать ?


Zhouck   (2003-10-14 18:53:00) [18]

>>Запрос написан на Local SQL, т.е. Borland, а что там используется в качестве БД - вопрос десятый
А если нужно будет вставить к-л ограничения? Попробуйте в такой запрос поставить еще having. Это точно не пойдет. А ведь ограничения нужно ставить часто


Piton X   (2003-10-14 17:47:00) [19]

MsGuns,
>Если не хочешь CDS (хотя зря - штука супер !), то для создания
> кросс-таблицы совсем не обязательно использовать DesicionCube -
> можно опять же запросом. Но дело вкуса, конечно..

А как сделать такой кросс-запрос?


MsGuns   (2003-10-14 17:30:00) [20]

>Piton X (14.10.03 17:16) [10]

Если не хочешь CDS (хотя зря - штука супер !), то для создания кросс-таблицы совсем не обязательно использовать DesicionCube - можно опять же запросом. Но дело вкуса, конечно..

ЗЫ. Кстати, если когда-нибудь понадобиться чтобы узер вносил перед печатью в таблицу какие-нибудь свои данные, то без CDS не обойдешься (RxMem может не решить траблу)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо