|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Добрый день! SELECT Tempvo SUM t1_n6 TO cm2 FOR INLIST(t1_bs, 'XXXXX','YYYYY') SELECT * from proclcdt WHERE INLIST(SUBSTR(pl_lc,4,5),'XXXXX','YYYYY') ORDER BY pl_lc INTO CURSOR proclc ex.cells(16,4+j).select ex.cells(16,4+j)=0 SCAN FOR m_date1>=TTOD(pl_date2)-7 AND m_date1<=TTOD(pl_date2) ex.cells(16,4+j).select ex.cells(16,4+j)=ABS(cm2) EXIT ENDSCAN где, m_date1 - текущая дата, pl_date2 - дата окончания срока В строке ex.cells(16,4+j) EXCEl я должен вытащить сумму по 'XXXXX','YYYYY', если m_date1 входить в промежуток TTOD(pl_date2)-7 и TTOD(pl_date2) А у меня общий итог cm2 выходить. Как это сделать? Я правильно делаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 14:09 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftДобрый день! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
где, m_date1 - текущая дата, pl_date2 - дата окончания срока В строке ex.cells(16,4+j) EXCEl я должен вытащить сумму по 'XXXXX','YYYYY', если m_date1 входить в промежуток TTOD(pl_date2)-7 и TTOD(pl_date2) А у меня общий итог cm2 выходить. Как это сделать? Я правильно делаю? Ну правильно. То, что написал, то и получил. 1. Код: sql 1. 2. 3.
посчитает итоговую сумму (если я правильно понял) 2. Код: sql 1. 2.
выведет эту итоговую сумму. Зачем тогда селект и скан? Если уж минимально исправлять Вашу программу, то: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 14:30 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Станислав С...кий1. Посчитает итоговую сумму. Всё верно. Код: sql 1. 2.
2. Выведет эту итоговую сумму. Тоже верно. Код: sql 1. 2.
3. Зачем тогда селект и скан? Я ищу такие же 'XXXXX' и 'YYYYY' в подчиненной таблице proclcdt, их могут быть несколько: Код: sql 1. 2. 3.
Пока, ячейка ex.cells(16,4+j) = 0 Код: sql 1.
Вот тут, я сканирую, если m_date1>=TTOD(pl_date2)-7 AND m_date1<=TTOD(pl_date2), Код: sql 1.
Тогда Код: sql 1.
Затем Код: sql 1.
и вывожу занчения Код: sql 1. 2.
Тут у меня берет первую строку, сравнивает с m_date1, если в этот промежуток входить, тогда следующую строку не проверяет, дальше общую сумму выводить. Я должен сканировать все строки и выводить только сумму, которая входить в этот промежуток. Н-р, в табл proclcdt 2 строки по 'XXXXX' и 3 строки 'YYYYY', из 'XXXXX' в этот промежуток входить только 1 строка, ее сумма 5, а 2 строка не входить, из 'YYYYY' в промежуток входить только 2 строки, их сумма 10, а 3 строка не входить, общий результат должен быть 5+10=15. Вот это не получается. Как сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2016, 19:17 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft... Тут у меня берет первую строку, сравнивает с m_date1, если в этот промежуток входить, тогда следующую строку не проверяет, дальше общую сумму выводить. Я должен сканировать все строки и выводить только сумму, которая входить в этот промежуток. Н-р, в табл proclcdt 2 строки по 'XXXXX' и 3 строки 'YYYYY', из 'XXXXX' в этот промежуток входить только 1 строка, ее сумма 5, а 2 строка не входить, из 'YYYYY' в промежуток входить только 2 строки, их сумма 10, а 3 строка не входить, общий результат должен быть 5+10=15. Вот это не получается. Как сделать? 1. Если ничего не получается - прочитайте, наконец, инструкцию (народный юмор). Объясняю: Код: sql 1. 2. 3.
проходит только по тем строкам, для которых выполняется условие: m_date1>=TTOD(pl_date2)-7 AND m_date1<=TTOD(pl_date2) Что надо сделать когда мы идем по строкам? Правильно - посчитать ularsoft... сумму, которая входить в этот промежуток. поэтому я и написал Вам: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
2. Если хотите обойтись без цикла SCAN...ENDSCAN, то эти же значения можно посчитать в SELECT. В FoxPro хороший движок SQL, который позволяет писать сложные выражения. Должно получиться что-то вроде такого (символ ";" в FoxPro обозначает переход текста на следующую строку): Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:49 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
В конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:55 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
В конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:56 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
В конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:56 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
В конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:56 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
В конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:57 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
В конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 05:57 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Станислав С...кийВ конце концов, можно использовать ту же команду SUM, только в условие FOR ввести условие на попадание в интервал дат... будет что-то типа: Код: sql 1. 2. 3. 4.
В таблице tempvo другие данные, в т.ч. остатки по 'XXXXX' и 'YYYYY', а в другой таблице proclcdt сроки по 'XXXXX' и 'YYYYY', pl_date1-начальная дата, pl_date2-конечная дата. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 06:28 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft, Вы не заметили, что я написал SELECT proclcdt, то есть перешел в другую рабочую область? Потому SUM теперь будет работать по таблице proclcdt. И вообще, никто лучше Вас Вашу систему не знает. Потому, я только даю идеи. А уж применить их - ваша забота. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 07:58 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Станислав С...кийularsoft, И вообще, никто лучше Вас Вашу систему не знает. Потому, я только даю идеи. А уж применить их - ваша забота. Уважаемый Станислав, Хочу выразить Вам огромную благодарность за то, что Вы мне помогли собраться! Я сделал немного по другому: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Все замечательно... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 08:50 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftСтанислав С...кийularsoft, И вообще, никто лучше Вас Вашу систему не знает. Потому, я только даю идеи. А уж применить их - ваша забота. Уважаемый Станислав, Хочу выразить Вам огромную благодарность за то, что Вы мне помогли собраться! Я сделал немного по другому: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Все замечательно... Уважаемые знатоки! В продолжении данного обсуждения, хочу спросить кое-что. Было все замечательно, пока m_date1>=TTOD(pl_date2)-7 AND m_date1<=TTOD(pl_date2) и остатки закрывались во время, в данный момент имею другую проблему: m_date1 - это дата в календаре. pl_date2 - конечная дата срока. Формирую отчет за неделю, т.е. с понедельника по воскресенье. Проблема в том, что m_date1 входить в данный промежуток, н-р, до среды, а после остаток в курсоре Tempvo должен входить в расчет. Не могу соображать как это сделать правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2016, 14:56 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Тему не читал, но почему бы не вставить в цикл проверку на совпадение текущей даты с этой "средой"? Если совпало, то делаем EXIT. Возможно, проставляем флаг выхода, чтобы дальше как-то обработать этот факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2016, 11:40 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
tanglirТему не читал, но почему бы не вставить в цикл проверку на совпадение текущей даты с этой "средой"? Если совпало, то делаем EXIT. Возможно, проставляем флаг выхода, чтобы дальше как-то обработать этот факт. Уважаемый tanglir, В цикле условие m_date1>=TTOD(pl_date2)-7 AND m_date1<=TTOD(pl_date2) как раз проверяет на совпадение текущей даты диапазоне со сроком. Н-р, если m_date1 = с 20.06.2016 по 26.06.2016, конечный срок pl_date2 = 22.06.2016, то в данный момент у меня включает в расчет с 20.06.2016 по 22.06.2016, это будет правильно если остаток НОЛЬ, иначе должен включится в расчет до конца недели. А у меня не включается. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2016, 06:26 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftН-р, если m_date1 = с 20.06.2016 по 26.06.2016, конечный срок pl_date2 = 22.06.2016, то в данный момент у меня включает в расчет с 20.06.2016 по 22.06.2016, это будет правильно если остаток НОЛЬ, иначе должен включится в расчет до конца недели.ну, расчёт до конца недели делается так Код: sql 1. 2.
а как сюда проверку "остатка" включить - вам лучше знать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2016, 07:16 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
tanglirну, расчёт до конца недели делается так Код: sql 1. 2.
а как сюда проверку "остатка" включить - вам лучше знать. Отчет формируется с 20.06.16 по 26.06.16 Если SCAN FOR (m_date1>=TTOD(pl_date2)-6 AND m_date1<=TTOD(pl_date2)) or ((TTOD(pl_date2)-m_date1)<0) то получаю следующие даты: TTOD(pl_date2)-6< m_date1 < TTOD(pl_date2) * 18.06.16 < 20.06.16 < 24.06.2016 * 18.06.16 < 21.06.16 < 24.06.2016 * 18.06.16 < 22.06.16 < 24.06.2016 * 18.06.16 < 23.06.16 < 24.06.2016 * 18.06.16 < 24.06.16 < 24.06.2016 * 18.06.16 < 25.06.16 < 24.06.2016 * 18.06.16 < 26.06.16 < 24.06.2016 Беру конкретный pl_lc = XXXX, по нему срок установлен с 26.02.16 по 24.06.16. Поэтому моя программа берет ХХХХ в расчет, потому что данный pl_lc входит в расчет с 20.06.16 по 26.06.16, клиент должен был забрать остаток по ХХХХ 26.06.16, но не забрал. Срок истек, а остаток не пустой. Делаю так, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
А у меня программа включает в расчет с 20.06.16 по 24.06.16, не включает с 25.06.16 по 26.06.16, а должен. Как это сделать? У кого какие идеи! Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 06:16 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft, а можно конкретные данные в теге [ CSV ]? вот этот курсор procls, который вы получаете первым запросом и выборки из tempvo на каждом шаге и желаемый результат с объяснением, как именно он получается и на каком этапе сейчас происходит затык именно на вот этих конкретных данных потому как я не понимаю, например, как ularsoftконкретный pl_lc = XXXX, по нему срок установлен с 26.02.16 по 24.06.16соотносится с ularsoftклиент должен был забрать остаток по ХХХХ 26.06.16, но не забрал, а это, в свою очередь, с ularsoftА у меня программа включает в расчет с 20.06.16 по 24.06.16, не включает с 25.06.16 по 26.06.16, а долженВы хотите, чтобы программа включала в расчёт отсутствующие в таблицах данные, что ли?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 07:06 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
tanglirВы хотите, чтобы программа включала в расчёт отсутствующие в таблицах данные, что ли? Уважаемый tanglir, В таблице TEMPVO хранятся остатки. В таблице PROCLCDT устанавливаются сроки для любого счета. Код: sql 1. 2.
Этим запросом получаю курсор proclc с ХХХХ и проверяю m_date1 в промежутке с TTOD(proclc.pl_date2)-6 по TTOD(proclc.pl_date2). Если m_date1 с 20.06.16 по 26.06.16 входит в данный промежуток, тогда вывожу сумму из TEMPVO в Excel. На данном примере по ХХХХ установлен срок с 26.02.16 по 24.06.16, программа до 24.06.16 включает в расчет а дальше не включает, потому что истек срок. А тетки говорят, что если срок истек, но остаток не ноль, необх вкл в расчет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 07:41 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ещё раз внимательно и по пунктам tanglirконкретные данные в теге [ CSV ]: -курсор procls, который вы получаете первым запросом -и выборки из tempvo на каждом шаге и желаемый результат с объяснением, как именно он получается и на каком этапе сейчас происходит затык именно на вот этих конкретных данных потому как на данный момент даже чтоб понять, кто на ком стоялm_date - параметр, а p_date - поле в курсоре или наоборот - надо листать обратно и выискивать намёки в коде. ularsoftесли срок истек, но остаток не ноль, необх вкл в расчет.Вроде б уже предлагал - проверить пересечение сроков, и если остаётся необработанный кусок - так обработать его отдельно (если уж прямо в том цикле почему-то нельзя). А если хочется не общих советов, а детальных, тогда надо для начала внятно, на примере объяснить, что вообще происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 09:41 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
[quot tanglir]ещё раз внимательно и по пунктам tanglirконкретные данные в теге [ CSV ]: -курсор procls, который вы получаете первым запросом -и выборки из tempvo на каждом шаге и желаемый результат с объяснением, как именно он получается и на каком этапе сейчас происходит затык именно на вот этих конкретных данных потому как на данный момент даже чтоб понять, кто на ком стоялm_date - параметр, а p_date - поле в курсоре или наоборот - надо листать обратно и выискивать намёки в коде. ularsoftSELECT * from proclcdt WHERE INLIST(pl_lc,'1272031100002234') ORDER BY pl_lc INTO CURSOR proclc ex.cells(22,4+j).select ex.cells(22,4+j)=0 * Обнуляем переменную, где будем хранить сумму за период m_date2 tt1_n6 = 0 SCAN FOR (m_date1>=TTOD(pl_date2)-6 AND m_date1<=TTOD(pl_date2)) * 18.06.16 <= 20.06.16 <= 24.06.2016 * 18.06.16 <= 21.06.16 <= 24.06.2016 * 18.06.16 <= 22.06.16 <= 24.06.2016 * 18.06.16 <= 23.06.16 <= 24.06.2016 * 18.06.16 <= 24.06.16 <= 24.06.2016 * Считаем сумму за период SELECT * from Tempvo WHERE t1_lc=proclc.pl_lc INTO CURSOR tmp SELECT tmp tt1_n6 = tt1_n6 + tmp.t1_n6 *exit ENDSCAN * 18.06.16 <= 25.06.16 <= 24.06.2016 && За этот день не включает в расчет, но остаток не пустой * 18.06.16 <= 26.06.16 <= 24.06.2016 && За этот день не включает в расчет, но остаток не пустой * здесь, после окончания цикла, в tt1_n6 находится сумма за период!!! ее и выводим в Excel. ex.cells(22,4+j).select ex.cells(22,4+j)=ABS(tt1_n6) т.е. условие (m_date1>=TTOD(pl_date2)-6 AND m_date1<=TTOD(pl_date2)) проверяется до срока окончания и уходит в конец, потому что последние 2 даты не входит в промежуток. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 11:37 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
всё, я пас ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 12:24 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft Код: sql 1.
А у меня программа включает в расчет с 20.06.16 по 24.06.16, не включает с 25.06.16 по 26.06.16, а должен. 1. Какая версия FoxPro? 2. Для одной записи таблицы PROCLCDT может существовать только одна запись таблицы TEMPVO? Т.е. связь между таблицами Tempvo.t1_lc = proclc.pl_lc - это связь один-к-одному или тут возможен вариант много-ко-многим? 3. Если вместо вычитания дат использовать простое сравнение проблема останется? Код: sql 1.
4. "Не пустой остаток" - это значение поля Tempvo.t1_n6 отлично от нуля? 5. Если в командном окне выполнить такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Будет ли в открывшемся Browse-окне отображена нужная запись? Есть ли в выборке "дубли" по значению поля proclc.pl_lc? Т.е. может ли быть несколько записей с одним и тем же значением proclc.pl_lc? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2016, 15:41 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Tempvo - это таблица или тоже ранее сделанная выборка? Если это выборка, то была ли она сформирована с учетом значения переменной m_date1? Т.е. а есть ли вообще запись с суммой остатка, для Вашего проблемного значения? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2016, 15:46 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМ Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
1. У меня FoxPro 8.0 2. Да, для одной записи таблицы PROCLCDT существует только одна запись таблицы TEMPVO 3. Да, проблема остается 4. Да, значение поля Tempvo.t1_n6 не ноль ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 18:25 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМTempvo - это таблица или тоже ранее сделанная выборка? Если это выборка, то была ли она сформирована с учетом значения переменной m_date1? Т.е. а есть ли вообще запись с суммой остатка, для Вашего проблемного значения? Tempvo - это тоже ранее сделанная выборка, сформирована с учетом значения переменной m_date1 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2016, 18:30 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
У кого-нибудь есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 09:58 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftУ кого-нибудь есть идеи? Начни сначала. Попробуй в одном сообщении четко изложить весь поток сознания, который выше понаписал. Приведи структуру таблиц использованных в коде. Тут просто непонятно ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 10:17 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TularsoftУ кого-нибудь есть идеи? Начни сначала. Попробуй в одном сообщении четко изложить весь поток сознания, который выше понаписал. Приведи структуру таблиц использованных в коде. Тут просто непонятно ничего. Короче, имеются таблицы Tempvo и proclcdt. Получаю отчет в EXCEL за еженедельную. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
SCAN FOR (m_date1>=TTOD(pl_date2)-6 AND m_date1<=TTOD(pl_date2)) Тут задача такая, если ТЕКУЩАЯ_ДАТА входит в этот диапазон, то tt1_n6 = tt1_n6 + tmp.t1_n6, т.е. включается в РАСЧЕТ. Иногда бывают моменты СРОК ДОГОВОРА истекает, а клиент не закрыл счет, остаток остается. Их не включает в РАСЧЕТ. А я должен включит их. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:05 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМ5. Если в командном окне выполнить такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Будет ли в открывшемся Browse-окне отображена нужная запись? Есть ли в выборке "дубли" по значению поля proclc.pl_lc? Т.е. может ли быть несколько записей с одним и тем же значением proclc.pl_lc? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:23 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft, когда Dima T писал "четко изложить весь поток сознания", он имел в виду не "изложить в виде потока сознания", а "изложить чётко, связно, последовательно то, что до этого являлось потоком сознания". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:35 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМВладимирМ5. Если в командном окне выполнить такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Будет ли в открывшемся Browse-окне отображена нужная запись? Есть ли в выборке "дубли" по значению поля proclc.pl_lc? Т.е. может ли быть несколько записей с одним и тем же значением proclc.pl_lc? С одним и тем же значением в proclc.pl_lc не может. В Browse-окне отображается нужная запись, но только между TTOD(proclc.pl_date2)-6 и TTOD(proclc.pl_date2), у меня если срок истек остаток не равно 0, тогда должны вкл в РАСЧЕТ. Программа не включает, т.е. вкл только до срока. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:37 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft Код: sql 1.
Тут задача такая, если ТЕКУЩАЯ_ДАТА входит в этот диапазон, то tt1_n6 = tt1_n6 + tmp.t1_n6, т.е. включается в РАСЧЕТ. Иногда бывают моменты СРОК ДОГОВОРА истекает, а клиент не закрыл счет, остаток остается. Их не включает в РАСЧЕТ. А я должен включит их. Я так понимаю ты не знаешь как условие поправить, как-то так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:40 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima Tularsoft Код: sql 1.
Тут задача такая, если ТЕКУЩАЯ_ДАТА входит в этот диапазон, то tt1_n6 = tt1_n6 + tmp.t1_n6, т.е. включается в РАСЧЕТ. Иногда бывают моменты СРОК ДОГОВОРА истекает, а клиент не закрыл счет, остаток остается. Их не включает в РАСЧЕТ. А я должен включит их. Я так понимаю ты не знаешь как условие поправить, как-то так Код: sql 1.
Я так делал, но все равно в РАСЧЕТ не включает: Код: sql 1.
Я не понял следующее: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:52 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftЯ так делал, но все равно в РАСЧЕТ не включает: Код: sql 1.
Разницу между AND и OR понимаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 11:57 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftЯ не понял следующее: Код: sql 1.
недописал, надо "дата окончания договора", подставь туда соответствующее поле, от тебя я так и не увидел структуры таблиц. Вобщем это проверка что договор закончился раньше периода отчета. Условие должно быть такое: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:01 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TularsoftЯ так делал, но все равно в РАСЧЕТ не включает: Код: sql 1.
Разницу между AND и OR понимаешь? Прости, Код: sql 1.
Все равно, если m_date1 = '18.07.2016', '19.07.2016', '20.07.2016', '21.07.2016', '22.07.2016', '23.07.2016', '24.07.2016' и срок истекает '22.07.2016', то в РАСЧЕТ включаются только по '22.07.2016', а за '23.07.2016', '24.07.2016' не включает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:02 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TularsoftЯ не понял следующее: Код: sql 1.
недописал, надо "дата окончания договора", подставь туда соответствующее поле, от тебя я так и не увидел структуры таблиц. Вобщем это проверка что договор закончился раньше периода отчета. Условие должно быть такое: Код: sql 1.
pl_date2 - дата окончания договора ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:04 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Опять все запутал. Давай пример исходных данных proclcdt. Так чтобы можно было запустить твой код. И код дополни. Чтобы можно было скопировать и запустить. Типа Код: sql 1. 2. 3.
Много данных не надо, 3-5 записей и описание "эта запись не попадает, но должна попадать потому что она то-то" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:22 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
можешь пример заполненной proclc, т.е. вместо Код: sql 1. 2.
написать Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:28 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TОпять все запутал. Давай пример исходных данных proclcdt. Так чтобы можно было запустить твой код. И код дополни. Чтобы можно было скопировать и запустить. Типа Код: sql 1. 2. 3.
Много данных не надо, 3-5 записей и описание "эта запись не попадает, но должна попадать потому что она то-то" Структура таблицы proclcdt: PL_LC - лицевой счет, PL_DATE1 - дата начала, PL_DATE2 - дата окончания. Структура курсора TEMPVO t1_lc CHAR(16) - лицевой счет, t1_n6 NUMERIC(15,2) - остаток Если по счету "Х" установлен срок с 24.06.2016 по 22.07.2016, когда формирую отчет с 18.07.2016 по 24.07.2016, тогда у меня Код: sql 1.
проверяет все даты, до срока 22.07.2016 включает в РАСЧЕТ, а за 23.07.2016 и 24.07.2016 не включает в РАСЧЕТ, но договор не закрыть, а значит остаток не равно 0. Если договор не закрылся, мы должны продолжать вкл остаток в РАСЧЕТ до закрытия договора. У меня проблемы с дополнительным условием :( не получается. Уже 4 месяца мучаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:42 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Ребята помогите. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:44 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Н-р, в таблице PROCLCDT: PL_LC = Х, PL_DATE1 = 24.06.2016, PL_DATE2 = 22.07.2016. в курсоре TEMPVO t1_lc = Х - лицевой счет, t1_n6 = 5000 - остаток. Код: sql 1.
Когда формирую отчет, получаю след данные в EXCEL: 18.07.2016 = 5000 19.07.2016 = 5000 20.07.2016 = 5000 21.07.2016 = 5000 22.07.2016 = 5000 23.07.2016 = 0 24.07.2016 = 0 Срок договора истек 22.07.2016, но не закрыть, а значит мы знаем, что остаток 5000 и должны вкл в РАСЧЕТ до закрытия договора. В отчете должны быть такие цифры: 18.07.2016 = 5000 19.07.2016 = 5000 20.07.2016 = 5000 21.07.2016 = 5000 22.07.2016 = 5000 23.07.2016 = 5000 24.07.2016 = 5000 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 12:58 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Судя по теме, программирование не есть Ваша основная работа. Вы просто не понимаете о чем Вас спрашивают и что Вы делаете "не так". Тогда попробуйте совсем "тупой" вариант Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 13:17 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Млин, ну хоть таблицу то можешь тут нарисовать? Курсор PROCLCDT PL_LCPL_DATE1PL_DATE2...Х24.06.201622.07.2016............... дозаполни, добавь поля которые в коде упоминаются, и данные чтобы были те что должны попасть, те что не должны и те что должны но не попадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 13:24 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TМлин, ну хоть таблицу то можешь тут нарисовать? Курсор PROCLCDT PL_LCPL_DATE1PL_DATE2...Х24.06.201622.07.2016............... дозаполни, добавь поля которые в коде упоминаются, и данные чтобы были те что должны попасть, те что не должны и те что должны но не попадают. Курсор Tempvo: t1_lct1_n6Х5000 Курсор PROCLCDT: PL_LCPL_DATE1PL_DATE2Х19.11.201418.03.2015Х25.01.201621.06.2016Х24.06.201622.07.2016 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 13:53 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМСудя по теме, программирование не есть Ваша основная работа. Вы просто не понимаете о чем Вас спрашивают и что Вы делаете "не так". Тогда попробуйте совсем "тупой" вариант Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
"тупой" вариант увеличивает сумму в 3 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 13:56 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМСудя по теме, программирование не есть Ваша основная работа. Вы просто не понимаете о чем Вас спрашивают и что Вы делаете "не так". Тогда попробуйте совсем "тупой" вариант Заставляют :( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:00 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftЗаставляют :( Электричество пропадет, скажут лезь в трансформаторную будку, почини. Тоже полезешь? Владимир правильно написал что ты даже не понимаешь что от тебя просят. Мы тут не телепаты. Я у тебя прошу то что мне необходимо увидеть чтобы понять логику работы твоего кода. Я уже самый простейший вариант предложил, от руки набить табличку и показать данные из полей которые используются в коде. И чего ты набил? Я вижу в коде поле pl_lc, а в таблице не вижу. Если планируешь и дальше продолжать писать только "помогите", то это в форум работа, с указанием суммы вознаграждения. Помогут. Гарантирую. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:20 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TularsoftЗаставляют :( Электричество пропадет, скажут лезь в трансформаторную будку, почини. Тоже полезешь? Владимир правильно написал что ты даже не понимаешь что от тебя просят. Мы тут не телепаты. Я у тебя прошу то что мне необходимо увидеть чтобы понять логику работы твоего кода. Я уже самый простейший вариант предложил, от руки набить табличку и показать данные из полей которые используются в коде. И чего ты набил? Я вижу в коде поле pl_lc, а в таблице не вижу. Если планируешь и дальше продолжать писать только "помогите", то это в форум работа, с указанием суммы вознаграждения. Помогут. Гарантирую. Может тебе трудно понять? Я же нарисовал 2 табл. Если ты не понял из Tempvo t1_lc ищет в proclcdt по pl_lc. Если находить суммирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:26 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftDima Tпропущено... Электричество пропадет, скажут лезь в трансформаторную будку, почини. Тоже полезешь? Владимир правильно написал что ты даже не понимаешь что от тебя просят. Мы тут не телепаты. Я у тебя прошу то что мне необходимо увидеть чтобы понять логику работы твоего кода. Я уже самый простейший вариант предложил, от руки набить табличку и показать данные из полей которые используются в коде. И чего ты набил? Я вижу в коде поле pl_lc, а в таблице не вижу. Если планируешь и дальше продолжать писать только "помогите", то это в форум работа, с указанием суммы вознаграждения. Помогут. Гарантирую. Может тебе трудно понять? Я же нарисовал 2 табл. Если ты не понял из Tempvo t1_lc ищет в proclcdt по pl_lc. Если находить суммирует. Курсор Tempvo: t1_lct1_n6Х5000 Курсор PROCLCDT: PL_LCPL_DATE1PL_DATE2Х19.11.201418.03.2015Х25.01.201621.06.2016Х24.06.201622.07.2016 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:30 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Вру, вижу PL_LC. Попозже код тебе сделаю а ты покажешь что в нем не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:32 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TВру, вижу PL_LC. Попозже код тебе сделаю а ты покажешь что в нем не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:34 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoft"тупой" вариант увеличивает сумму в 3 раза. Судя по приведенной Вами картинке с содержимым таблиц, у Вас один и тот же счет может иметь несколько периодов. В данном случае, на один счет приходится 3 периода. Правильно? Но разве у Вас в этом случае не происходит увеличение сумм, если в период отчета попадают 2 периода? Ну, например, если период расчета, скажем, с 20.06.2016 по 27.06.2016. В этом случае будет выбрано 2 записи и сумма остатка будет учтена дважды. Правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:41 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftКурсор PROCLCDT: PL_LCPL_DATE1PL_DATE2Х19.11.201418.03.2015Х25.01.201621.06.2016Х24.06.201622.07.2016 Я правильно понимаю что например 22.06 договор был недействителен, но остаток по счету X был и его надо учесть? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:48 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Еще мне непонятна такая конструкция Код: sql 1.
при чем тут неделя до окончания договора? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:54 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМularsoft"тупой" вариант увеличивает сумму в 3 раза. Судя по приведенной Вами картинке с содержимым таблиц, у Вас один и тот же счет может иметь несколько периодов. В данном случае, на один счет приходится 3 периода. Правильно? Но разве у Вас в этом случае не происходит увеличение сумм, если в период отчета попадают 2 периода? Ну, например, если период расчета, скажем, с 20.06.2016 по 27.06.2016. В этом случае будет выбрано 2 записи и сумма остатка будет учтена дважды. Правильно? Да, 3 периода, но 1 из них попадает в расчет. Например, если период расчета, с 20.06.2016 по 27.06.2016, pl_date2 = 22.07.2016, то Код: sql 1.
будет PL_DATE2-6m_date1PL_DATE216.07.201620.07.201622.07.201616.07.201621.07.201622.07.201616.07.201622.07.201622.07.201616.07.201623.07.201622.07.201616.07.201624.07.201622.07.201616.07.201625.07.201622.07.201616.07.201626.07.201622.07.201616.07.201627.07.201622.07.2016 Как раз здесь видно у меня включает в расчет только до 22.07.2016, а за 23, 24, 25, 26, 27 в расчет не включает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:54 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Владимир, клиент не закрыл договор до 27.07.2016, в этом случае остаток не 0, поэтому я должен вкл в расчет. У меня не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:57 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Кажется я понял, если остаток есть, а действующего договора нет, то надо показать последний договор который закончился? Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:57 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TКажется я понял, если остаток есть, а действующего договора нет, то надо показать последний договор который закончился? Так? Теперь ребята вы поняли. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 14:58 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftDima TКажется я понял, если остаток есть, а действующего договора нет, то надо показать последний договор который закончился? Так? Теперь ребята вы поняли. про неделю до окончания договора в условии объясни, по моему это ерунда какая-то 19482321 там проверка: взять записи, у которых m_date1 попадает в последнюю неделю договора. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 15:02 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Если остаток есть, а действующего договора нет, то надо показать остаток по этому счету. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 15:02 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftЕсли остаток есть, а действующего договора нет, то надо показать остаток по этому счету. Например, если период расчета, с 20.06.2016 по 27.06.2016, pl_date2 = 22.07.2016 - дата окончания договора, то из курсора Tempvo: t1_lct1_n6Х5000 будет PL_DATE2-6m_date1PL_DATE2Значение в EXCEL16.07.201620.07.201622.07.2016 500016.07.201621.07.201622.07.2016 500016.07.201622.07.201622.07.2016 500016.07.201623.07.201622.07.2016 500016.07.201624.07.201622.07.2016 500016.07.201625.07.201622.07.2016 500016.07.201626.07.201622.07.2016 500016.07.201627.07.201622.07.2016 5000 Как раз здесь видно у меня включает в расчет только до 22.07.2016, а за 23, 24, 25, 26, 27 в расчет не включает.[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 15:08 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Вот код примера который я ожидал от тебя увидеть. Я только добавил исходные данные и заменил вывод в эксель на вывод на экран. Запусти и напиши он так же работает как и у тебя. Т.е. также неправильно, но выводит как нужно. Если все так, то дальше будем его дорабатывать. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 17:24 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftDima TКажется я понял, если остаток есть, а действующего договора нет, то надо показать последний договор который закончился? Так? Теперь ребята вы поняли. Получается пофиг есть или нет договор на конкретную дату, если нет, то главное чтобы был закончившийся более ранний договор. Если так, то можно просто свести твои данные в одну таблицу t1_lct1_n6PL_DATE0Х500019.11.2014 где PL_DATE0 это дата открытия первого договора по данному счету. И дальше всегда выдавать 5000 на любую m_date1 c 19.11.2014. Правильно? Если правильно то это бред какой-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:16 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Да нормально все. Не будут они делать отчет "задним числом" и "авансовых" договоров с не погашенным остатком у них нет. Ну, и отчет они делают, скорее всего, на текущую неделю. Т.е. все возможные "не стандартные" ситуации пропускаем, как "не существующие" в данной постановке задачи и делаем предельно просто и прямолинейно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
С точки зрения программиста, код довольно "корявый". Есть возможность его существенно улучшить (ускорить выполнение). Но для этого надо много чего знать. Причем как Вам, чтобы понять, о чем вообще речь, так и нам, чтобы понять, как именно сделать это улучшение. Не думаю, что в этом есть необходимость... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 20:45 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ВладимирМДа нормально все. Не будут они делать отчет "задним числом" и "авансовых" договоров с не погашенным остатком у них нет. Ну, и отчет они делают, скорее всего, на текущую неделю. Т.е. все возможные "не стандартные" ситуации пропускаем, как "не существующие" в данной постановке задачи и делаем предельно просто и прямолинейно Если понятно - объясни поподробнее. Боюсь ТС не сможет. Непонятно зачем размазывать по дням какой-то конкретный остаток на счете? Он же меняться может. Сегодня пополнили, завтра потратили, на то он и счет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 20:53 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TВладимирМДа нормально все. Не будут они делать отчет "задним числом" и "авансовых" договоров с не погашенным остатком у них нет. Ну, и отчет они делают, скорее всего, на текущую неделю. Т.е. все возможные "не стандартные" ситуации пропускаем, как "не существующие" в данной постановке задачи и делаем предельно просто и прямолинейно Если понятно - объясни поподробнее. Боюсь ТС не сможет. Непонятно зачем размазывать по дням какой-то конкретный остаток на счете? Он же меняться может. Сегодня пополнили, завтра потратили, на то он и счет. Он так коряво описал задачу отображения остатка по договору, срок действия которого закончился на текущей неделе :) Просто способ решения выбран, хм..., специфический Кстати, если я угадал с постановкой задачи, то можно решить ее чуть попроще в том же стиле Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Цель замены: не подогнать дату окончания счета под нужную дату, а найти диапазон, внутри которого должна оказаться дата окончания Поясню. У Вас есть дата окончания 22.07.2016. И неделя с 20.07.2016 по 27.07.2016. Что делали Вы? Вы пытались найти пересечение диапазонов. Т.е. на основании даты окончания формировали период с 16.07.2016 по 22.07.2016 и отбирали только те договора, сформированный период по которому пересекался с периодом текущей недели Что делаю я? Просто смотрю, попадает ли дата окончания в текущую неделю? Без дополнительных вычислений периодов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 20:41 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Уважаемый Владимир, Вот так Код: sql 1.
делать вообще нельзя, потому что это "срочные депозиты юр. лиц со сроком погашения до 6 дней ", т.е. вот так Код: sql 1.
Это значит, что текущая дата должна находиться в диапазон, н-р, с 18.07.16 до 24.07.16, но сроки продлеваются. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 06:20 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Представьте себе, что есть "массив счетов", в т.ч. срочные депозиты, не важно, что клиент физ. лицо или юр. лицо. LCOSTATOKX50000Y1000Z230000 У каждого счета X, Y, Z разные сроки. Наша задача вытащить информацию "со сроком погашения до 6 дней". Т.е. из массива берем счет, какой-то срочный депозит "Х", смотрим сроки из таблицы PROCLCDT, у него были сроки: PL_LCPL_DATE1PL_DATE2X19/11/201418/03/2015X25/01/201621/06/2016X24/06/201622/07/2016 Я формирую отчет с 18/07/2016 по 24/07/2016, т.е. за неделю, это m_date1 и m_date2. Будем двигаться по m_date1. Код: sql 1.
Т.е. данный SCAN проверяет даты с 18/07/2016 по 24/07/2016 в промежутке 16/07/2016<m_date1<22/07/2016. Выглядит так:pl_date2-6<=m_date1<=pl_date2В РАСЧЕТ16/07/2016<=18/07/2016<=22/07/2016включает16/07/2016<=19/07/2016<=22/07/2016включает16/07/2016<=20/07/2016<=22/07/2016включает16/07/2016<=21/07/2016<=22/07/2016включает16/07/2016<=22/07/2016<=22/07/2016включает16/07/2016<=23/07/2016<=22/07/2016не включает16/07/2016<=24/07/2016<=22/07/2016не включает 28/07/2016 клиент закрыл счет "Х" - это срочный депозит, но клиент может продлить сроки. Программа должна включить в расчет, если клиент не забрал деньги или не закрыл счет во время. В нашем случае за последние 2 дня в расчет не включает. Об этом и прошу помощи или идеи. Если я формирую отчет с 25/07/2016 по 31/07/2016, тогда реально будет след образом: pl_date2-6<=m_date1<=pl_date2В РАСЧЕТ16/07/2016<=25/07/2016<=22/07/2016включает16/07/2016<=26/07/2016<=22/07/2016включает16/07/2016<=27/07/2016<=22/07/2016включает16/07/2016<=28/07/2016<=22/07/2016включает16/07/2016<=29/07/2016<=22/07/2016не включает16/07/2016<=30/07/2016<=22/07/2016не включает16/07/2016<=31/07/2016<=22/07/2016не включает ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 07:08 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftпотому что это "срочные депозиты юр. лиц со сроком погашения до 6 дней ", т.е. вот так Код: sql 1.
" до 6 дней " и "ровно 6 дней" это разные вещи. Зачем вообще такое писать если у тебя есть дата открытия депозита? т.е. почему так нельзя? Код: sql 1.
И на это ответь 19483521 , если так решается, то вообще никаких сканов не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 07:17 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftНаша задача вытащить информацию "со сроком погашения до 6 дней". Так бы сразу и сказал. Попробуй Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 07:38 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Суть в том что ты не с той стороны задачу решал. Надо перебирать не договоры, а счета, затем проверять когда он закончится или уже закончился, и исходя из этого решать надо его учитывать или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 07:48 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TСуть в том что ты не с той стороны задачу решал. Надо перебирать не договоры, а счета, затем проверять когда он закончится или уже закончился, и исходя из этого решать надо его учитывать или нет. Короче, делаю так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
Дима, тут с моим кодом нельзя ничего подправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 08:31 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Попробуй заменить это ularsoft Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
на это Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Если я все правильно понимаю, то должно помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 08:40 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima Tна это Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Если я все правильно понимаю, то должно помочь. Дима, снова я. Тут получается по 2 счетам 'Х', 'Y' находим максимальную дату? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 10:37 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
А что если по этим счетам разные сроки? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 10:38 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftТут получается по 2 счетам 'Х', 'Y' находим максимальную дату? Находим отдельно по каждому. Посмотреть ведь можно, поставь сразу после селекта Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 10:51 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TularsoftТут получается по 2 счетам 'Х', 'Y' находим максимальную дату? Находим отдельно по каждому. Посмотреть ведь можно, поставь сразу после селекта Код: sql 1.
Спасибо, я посмотрел. Находить по каждому счету максимальную дату. С этим пока все в порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 10:58 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftDima Tпропущено... Находим отдельно по каждому. Посмотреть ведь можно, поставь сразу после селекта Код: sql 1.
Спасибо, я посмотрел. Находить по каждому счету максимальную дату. С этим пока все в порядке. Но, я делаю так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Отдельно делаю по счету '12720311********' Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
По данному счету установлены сроки: pl_date1pl_date226/02/2016 24/06/201627/06/2016 08/08/2016 По факту 08/08/2016 - 29 = 10/07/2016, программа должна была вкл. в расчет с 10/07/2016. Не могу понять, почему не включает? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 11:20 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Теперь отчет формирую за месяц. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 11:23 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Проверяй исходные данные. У меня все работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 12:27 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
И это Код: sql 1.
лучше писать так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2016, 12:28 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TПроверяй исходные данные. У меня все работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Дима, у меня тоже за 1 день все работает. Когда формирую отчет за период с 01/07/2016 по 31/07/2016 не работает. Есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 10:14 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftДима, у меня тоже за 1 день все работает. Когда формирую отчет за период с 01/07/2016 по 31/07/2016 не работает. Есть идеи? Где код? Я не вижу где у тебя расчет за период, есть только этот цикл, который дни перебирает и каждый день пишет в отдельную клетку экселя Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 10:31 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
Dima TularsoftДима, у меня тоже за 1 день все работает. Когда формирую отчет за период с 01/07/2016 по 31/07/2016 не работает. Есть идеи? Где код? Я не вижу где у тебя расчет за период, есть только этот цикл, который дни перебирает и каждый день пишет в отдельную клетку экселя Код: sql 1. 2. 3. 4. 5. 6. 7.
Дима, код слишком длинный: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 11:47 |
|
Перебор строк в таблице
|
|||
---|---|---|---|
#18+
ularsoftДима, код слишком длинный: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108.
Длинные коды прячь под спойлер. Нет тут у тебя никакого расчета за месяц, есть цикл расчетов за отдельные дни. Код: sql 1. 2. 3. 4. 5. 6. 7.
Если какой-то день неправильно посчитался, то с ним и разбирайся. Ищи в каком дне ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2016, 12:00 |
|
|
start [/forum/topic.php?all=1&fid=41&tid=1582077]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
201ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 561ms |
0 / 0 |