Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#121: 2014-05-02 11:42:57 ЛС | профиль | цитата
Леонид, по-моему, user_asm только задаёт вопросы - ответы ему до лампочки. Уже час прошёл, а с Вашим ответом ознакомился только я.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8926
Рейтинг: 823
#122: 2014-05-02 12:00:10 ЛС | профиль | цитата
Tad, сейчас же праздник (у нас), тот самый не рабочий день, который считать не надо
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#123: 2014-05-02 12:09:35 ЛС | профиль | цитата
Кстати, о птичках...
У DatePicker есть нижняя точка DateInt без часов, минут, секунд и прочей унд-мелочи. Именно для "количества дней".
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#124: 2014-05-02 17:32:16 ЛС | профиль | цитата
Ответы читаю в обязательном порядке.
Пришлось сегодня немного ремонтом позаниматься, посему только вернулся.
Благодарю за схемку.
карма: 0

0
Ответов: 952
Рейтинг: 4
#125: 2017-10-13 22:56:48 ЛС | профиль | цитата
Что здесь поменять, что бы к рассчитанному результату можно было добавить +1 или -1 рабочий день.
В некоторых случаях срок выполнения работ рассчитывается с даты оплаты, а в некоторых с о следующего дня.
Спасибо за помощь заранее.


Add(MainForm,774137,532,280)
{
Width=499
}
Add(DatePicker,7838388,616,336)
{
Left=10
Top=30
Width=175
Height=21
Point(DateTime)
link(onChange,16143379:doEvent1,[(653,342)(653,332)(526,332)(526,377)])
}
Add(DatePicker,16119908,672,434)
{
Left=270
Top=30
Width=165
Height=21
}
Add(Edit,2040005,805,329)
{
Left=210
Top=30
Width=35
Text="20"
}
Add(DateConvertor,5070445,665,378)
{
Point(DayOfWeek)
link(onResult,616815:doCompare,[])
}
Add(Math,13110913,616,378)
{
link(onResult,5070445:doConvert,[])
link(Op1,7838388:DateTime,[])
}
Add(Hub,16143379,539,371)
{
link(onEvent1,1997971:doReset,[(747,377)(747,398)])
link(onEvent2,9720267:doFor,[])
}
Add(For,9720267,567,378)
{
End=9999999
link(onEvent,13110913:doOperation,[])
}
Add(Counter,1997971,756,378)
{
Max=365
link(onNext,13291819:doCompare,[])
}
Add(If_else,616815,707,378)
{
Type=1
Op2=Integer(6)
link(onTrue,1997971:doNext,[])
link(Op1,5070445:DayOfWeek,[(713,366)(703,366)(703,417)(671,417)])
}
Add(If_else,13291819,798,378)
{
Type=3
link(onFalse,14201585:doEvent1,[(834,391)(834,425)(522,425)(522,440)])
link(Op2,2040005:Text,[])
}
Add(Hub,14201585,532,434)
{
link(onEvent1,8456372:doData,[])
link(onEvent2,9720267:doStop,[(556,447)(556,391)])
}
Add(DoData,8456372,616,434)
{
link(onEventData,16119908:doSetDate,[])
link(Data,13110913:Result,[])
}
Add(Label,16705012,616,266)
{
Left=190
Top=30
Width=16
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="+"
}
Add(Label,1374842,672,259)
{
Left=250
Top=30
Width=16
Height=28
Font=[MS Sans Serif,14,1,0,1]
Caption="="
}

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#126: 2017-10-14 12:10:36 ЛС | профиль | цитата
user_asm писал(а):
Что здесь поменять
Всё.
Работаешь с БД, ну используй возможности SQL по-полной.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1Add_days_to_date.rar [817B] [591]
Ответов: 952
Рейтинг: 4
#127: 2017-10-14 15:42:13 ЛС | профиль | цитата
Хммм, что-то не так. Конечная дата не формируется... Запрос конечно сложный, надо читать книжку по командам. Ошибку выбивает - near "WITH": syntax error
Собственно задача расчета дней стоит не только в БД, планирую её как самостоятельную утилитку для облегчения контроля сроков выполнения работы.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#128: 2017-10-14 15:58:50 ЛС | профиль | цитата
user_asm писал(а):
near "WITH": syntax error
Рядом положи последнюю sqlite3.dll.
Взять здесь http://www.sqlite.org/download.html
А контроль сроков - это
SELECT * FROM <таблица> WHERE (<дата окончания> < date("now")) AND (<отметка сдачи>=0);

Редактировалось 1 раз(а), последний 2017-10-14 16:32:29
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#129: 2017-10-15 08:18:46 ЛС | профиль | цитата
У меня расчет даты организован вот так:

Add(MultiElementEx,10584540,1099,98)
{
}
BEGIN_SDK
Add(EditMultiEx,5768207,21,21)
{
WorkCount=#8:doEvent1|
EventCount=#11:onEventData|
DataCount=#3:Op1|3:Op2|
Width=475
Height=235
link(doEvent1,4223241:doEvent1,[(67,27)(67,97)])
}
Add(DateConvertor,13776850,238,119)
{
Point(DayOfWeek)
link(onResult,14873870:doCompare,[])
}
Add(Math,2486581,189,119)
{
link(onResult,13776850:doConvert,[])
link(Op1,5768207:Op1,[(195,70)(27,70)])
}
Add(Hub,4223241,84,91)
{
OutCount=3
link(onEvent1,6891409:doRead,[(122,97)(122,55)])
link(onEvent2,11910350:doReset,[(214,104)(214,139)])
link(onEvent3,3269790:doFor,[(119,111)(119,125)])
}
Add(For,3269790,140,119)
{
End=9999999
link(onEvent,2486581:doOperation,[])
}
Add(Counter,11910350,329,119)
{
Max=365
link(onNext,940786:doCompare,[])
}
Add(If_else,14873870,280,119)
{
Type=1
Op2=Integer(6)
link(onTrue,11910350:doNext,[])
link(Op1,13776850:DayOfWeek,[(286,107)(276,107)(276,158)(244,158)])
}
Add(If_else,940786,371,119)
{
Type=3
link(onFalse,16410523:doEvent1,[(407,132)(407,166)(95,166)(95,181)])
link(Op2,3439411:GetData,[])
}
Add(Hub,16410523,105,175)
{
link(onEvent1,7127787:doData,[])
link(onEvent2,3269790:doStop,[(129,188)(129,132)])
}
Add(DoData,7127787,189,175)
{
link(onEventData,5768207:onEventData,[(397,181)(397,27)])
link(Data,2486581:Result,[])
}
Add(Ini,6891409,322,49)
{
FileName="setings.ini"
Section="vibor"
Key="days"
Type=1
link(onResult,3439411:doData,[])
}
Add(EventFromData,3439411,378,49)
{
}
END_SDK


Правильно или есть ошибки?
Раз уж дело дошло до БД, все же меня интересуют две версии решения вопроса - просто программа без БД, и расчет в БД.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#130: 2017-10-15 15:52:34 ЛС | профиль | цитата
Или так :

Add(MainForm,2953706,266,203)
{
Height=108
}
Add(DatePicker,1825606,266,245)
{
Left=15
Top=15
Width=130
Height=21
Point(DateInt)
link(onChange,8046800:doAdd,[])
}
Add(Edit,12926443,322,203)
{
Left=150
Top=15
Width=30
Text="20"
}
Add(InlineCode,8046800,315,245)
{
WorkPoints=#5:doAdd|
EventPoints=#5:onRes|
DataPoints=#7:DateInt|7:DaysAdd|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: FDT:integer;|9: public|38: DateInt, DaysAdd, onRes :THI_Event;|48: procedure doAdd(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|29:procedure THiAsmClass.doAdd;|24: var i,Da,Dow,c:integer;|5:begin|10: C:=0;|36: FDT := toIntegerEvent(DateInt);|35: Da := toIntegerEvent(DaysAdd);|38: If (FDT = 0) OR (Da=0) Then Exit;|19: While (c<=Da) do |8: begin|13: inc(FDT);|38: If (DayOfWeek(FDT)<6) then inc(C);|7: end;|27: _hi_onEvent(onRes,FDT);|4:End;|4:end.|
link(onRes,14103650:doSetDate,[])
link(DateInt,1825606:DateInt,[(321,233)(309,233)(309,288)(272,288)])
link(DaysAdd,12926443:Text,[])
}
Add(DatePicker,14103650,364,245)
{
Left=185
Top=15
Width=145
Height=21
}

А по-хорошему надо строить табличку исходя из : http://calendar.yoip.ru/2017-calendar.html

Редактировалось 2 раз(а), последний 2017-10-15 19:24:45
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#131: 2017-10-21 09:31:38 ЛС | профиль | цитата
Tad писал(а):
Или так :

Странно, не работает у меня эта схема... Конечная дата не меняется.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#132: 2017-10-21 12:26:22 ЛС | профиль | цитата
user_asm писал(а):
Странно, не работает у меня эта схема... Конечная дата не меняется.

user_asm_10.png
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 2059
Рейтинг: 132
#133: 2017-10-21 16:10:55 ЛС | профиль | цитата
А так?

Add(MainForm,12708640,182,98)
{
Height=108
}
Add(DatePicker,1825606,154,154)
{
Left=15
Top=15
Width=130
Height=21
Point(DateInt)
link(onChange,1117363:doWork2,[])
}
Add(Edit,12926443,238,98)
{
Left=150
Top=15
Width=30
Text="20"
link(onChange,1117363:doWork1,[(282,104)(282,130)(207,130)])
}
Add(DatePicker,14103650,287,154)
{
Left=185
Top=15
Width=145
Height=21
}
Add(InlineCode,13591971,231,154)
{
WorkPoints=#5:doAdd|
EventPoints=#5:onRes|
DataPoints=#7:DateInt|7:DaysAdd|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: FDT:integer;|9: public|38: DateInt, DaysAdd, onRes :THI_Event;|48: procedure doAdd(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|29:procedure THiAsmClass.doAdd;|24: var i,Da,Dow,c:integer;|5:begin|10: C:=0;|36: FDT := toIntegerEvent(DateInt);|35: Da := toIntegerEvent(DaysAdd);|38: If (FDT = 0) OR (Da=0) Then Exit;|19: While (c<=Da) do |8: begin|13: inc(FDT);|38: If (DayOfWeek(FDT)<6) then inc(C);|7: end;|27: _hi_onEvent(onRes,FDT);|4:End;|4:end.|
link(onRes,14103650:doSetDate,[])
link(DateInt,1825606:DateInt,[(237,142)(199,142)(199,198)(160,198)])
link(DaysAdd,12926443:Text,[])
}
Add(HubEx,1117363,203,154)
{
link(onEvent,13591971:doAdd,[])
}


Редактировалось 6 раз(а), последний 2017-10-21 17:35:04
карма: 6

0
Ответов: 5227
Рейтинг: 587
#134: 2017-10-23 16:25:32 ЛС | профиль | цитата
Раз уж тут IC то могу предложить vbs. Для работы с датами функций предостаточно. http://scriptcoding.ru/2013/06/20/funktcii-vbs/ советую заказать книжку, скинет на почту, вполне хорошая для изучения.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 16884
Рейтинг: 1239
#135: 2017-10-23 20:16:05 ЛС | профиль | цитата
Не нужен тут ни IC ни VBS.
Берёшь
прк.png
выбираешь в табличку всё красное.И работаешь с чистой совестью.

Редактировалось 1 раз(а), последний 2017-10-23 20:17:05
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)