![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос об оплате услуг по датам. Строки - люди, столбцы - даты, а [D6, Paradox]
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 может не решить траблу)