|
|
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
Наверное, в прошлый раз я не очень хорошо сформулировал вопрос... Проблема решена не была. А надо срочно. :-) Заранее спасибо за ответы. Итак. Есть две таблицы. [Приход]: Нефтебаза / Дата / Поставщик / Вид топлива / Плотность / Приход (л) / Приход (кг) [Расход]: Нефтебаза / Дата / Поставщик / Вид топлива / Плотность / Расход (л) / Расход (кг) / Сальдо (кг) Почти каждый день обе таблицы заполняются, но может случиться и так, что на определенную дату заполняется только одна таблица (например, если от конкретного поставщика был только приход на определенную нефтебазу определенного вида топлива, а расхода по этим параметрам не было). Мне требуется составить отчет <b>на любую указанную на форме дату</b> примерно следующего вида: Отчет за <дата> ---------------- Нефтебаза 1 -> Поставщик 1 -> Вид топлива 1 / Приход (кг) / Расход (кг) / Сальдо (кг) Вид топлива 2 / Приход (кг) / Расход (кг) / Сальдо (кг) Поставщик 2 -> Вид топлива 1 / Приход (кг) / Расход (кг) / Сальдо (кг) Вид топлива 2 / Приход (кг) / Расход (кг) / Сальдо (кг) ... Нефтебаза 2 - аналогично ... Нефтебаза N - аналогично Естественно, отчет составляется по двум таблицам, описанным выше. Данные попадают в отчет только тогда, когда они там за указанную дату есть. По сути нужно взять четыре поля (Нефтебаза / Дата / Поставщик / Вид топлива ) из одной таблицы, к ним добавить поле (Приход (кг)) из этой же таблицы и два поля (Расход (кг) / Сальдо (кг)) из второй таблицы (у нее есть эти же четыре поля). Если данные по этим четырем полям для какого-то конкретного случая совпадают, необходимо, чтобы значения остальных трех добавленных полей записывались со значениями этих четырех одной строкой. Если есть расход, но нет прихода в каком-то конкретном случаем, то значения всех полей в этом случае просто берутся из таблицы [Расход] (они там есть), а значение поля "Приход (кг)" берется равным "0". Если есть приход, но нет расхода в каком-то конкретном случае, то значения основных четырех полей и дополнительного (Приход (кг)) в этом случае берутся из таблицы [Приход], а значения (Расход (кг) и Сальдо (кг)) берутся по этим четырем основным параметрам из таблицы [Расход] (естественно, значение поля "Расход (кг)" там будет равным "0", т.к. расхода не было, а значение поля "Сальдо (кг) будет явно прописано (это делается заранее программно)). Словом, требуется за конкретную дату, указываемую на форме, объединить две таблицы, виртуально вырезав часть их полей и сохранив все строки за эту дату. Причем некоторые строки при совпадении четырех первых основных полей "накладываются" друг на друга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2004, 18:33 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
Дата расхода может и не равняться дате прихода...так ? (Значит совпадения по трем полям)...И как понять: есть расход, а прихода на этот продукт нет...? Я понял, что продали то, что не имели ? И как ты хочешь реализовать, на SQL or VBA ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2004, 18:53 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
>>> Дата расхода может и не равняться дате прихода...так ? (Значит совпадения по трем полям)... Если дата расхода не равняется дате прихода, то нас интересует только тот вид движения товара, который относится к дате построения отчета. И все равно 4 поля: если дата совпадает => одной строкой, в которой есть и приход и расход, если нет => одной строкой, но либо приход, либо расход имеет значение "0". Сальдо есть в обоих случаях. >>> И как понять: есть расход, а прихода на этот продукт нет...? Я понял, что продали то, что не имели ? Нет. Это значит, что когда-то ранее привезли этот товар, а только сегодня продали. Значит, приход попал в отчет за ту раннюю дату и нас не интересует, а расход надо в сегодняшнем отчете отразить (приход в сегодняшнем отчете будет "0"). >>> И как ты хочешь реализовать, на SQL or VBA ? Реализовать надо SQL-запросом, чтобы потом на его основе строить отчет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2004, 19:11 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
Владимир Саныч? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2004, 21:15 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
Странная ,однако структура. Почему не хранить все данные в одной таблице? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Запоминаешь запрос например под именем q. Далее пишешь Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2004, 22:51 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
авторВладимир Саныч? :-) Дадамс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 00:52 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
(c)VIG, спасибо тебе огромное, по-настоящему выручил! Организация такая потому, что в свое время я над ней не задумался. А надо было. Отчет я построил, но возникла следующая вещь: в отчете производятся вычисления. Т.е. в свойствах поля отчета я вызвал конструктор и составил след. выражение: =[Сальдо (кг)]+[Расход (кг)]-[Приход (кг)] По какой-то вполне объяснимой причине он понимает это действие как работа со стрингами и вместо того, чтоб, скажем поставить 0 (приход = 950, расход = -950), он ставит "-950950". В некоторых строках его "вычисления" даже логике не поддаются. Наверное, или в запросе, который ты рассказал, как строить, или в свойствах самого поля, или в выражении надо прописать тип данных. Где? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2004, 10:35 |
|
||
|
Need help. Опять объединение таблиц. :-)
|
|||
|---|---|---|---|
|
#18+
Up. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2004, 08:48 |
|
||
|
|

start [/forum/search_topic.php?author=lexus_gm&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
299ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 481ms |
| total: | 887ms |

| 0 / 0 |
