Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите реализовать алгоритм / 25 сообщений из 41, страница 1 из 2
16.06.2004, 12:11:34
    #32563249
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Здравствуйте Люди!
Существует выполнение по договору, которое разбивается на выполнение по объектам по факту.
Существует оплата выполненных работ, которая идет одной суммой (SummaP).
Структура таблицы в которой содержаться данные:
idDog, Vipolnenie, DataV, idOb, Oplata
Задача. Распределить оплату программно по объектам, по которым есть задолженность.
Алгоритм представляю себе такой,
для всех объектов по договору считаю задолженность (Dolg)
Если SummaP >= Dolg по 1 объекту, тогда
Oplata = Dolg
SummaP1=SummaP-Oplata
Иначе
Oplata=SummaP
SummaP1=SummaP-Oplata

Все это в цикл,
SummaP1=0 конек цикла
А дальше, как в том анекдоте «нутром чувствую, что литр, а математически выразить не могу»
Т.Е. не знаю с какой стороны к этому подступиться
...
Рейтинг: 0 / 0
16.06.2004, 12:29:35
    #32563290
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Sub TraTaTa (ByVal SummaP as Double, idDog as String)
Dim db As Database: Set db = CurrentDb
Dim rs as Recordset: Set Rs = Db.OpenRecordset("SELECT idDog, Vipolnenie, DataV, Oplata WHERE ((idDog = '" & idDog & "'));", DbOpenDynaset)

With rs
Do While Not .EOF
.Edit
If SummaP >= !Dolg
!Oplata = !Dolg
Else
!Oplata = SummaP
End If
SummaP=SummaP-!Oplata
if SummaP = 0 Then
Exit Do

.Update
.MoveNext
Loop

If SummaP > 0 Then
MsgBox "Остались деньги на выпить и закусить в размере " & SummaP
...
Рейтинг: 0 / 0
16.06.2004, 12:34:16
    #32563307
neal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Может ты имела ввиду
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Set Rs = currentdb.OpenRecordset("...")
Do while not (rs.EOF) and (SummaP >  0 )
    Dolg = ....  ' -- по i-му объекту  должно быть 0 или положительное '
    IF (Dolg >  0 ) Then
         IF (SummaP >= Dolg) Then
              RS.edit
              SummaP=SummaP-Dolg
              Rs!Oplata = Rs!Oplata+Dolg
              Rs.update
         Else IF (SummaP >  0 ) Then  '-- т.е. Dolg > SummaP > 0 '
              Rs.Edit
              Rs!Oplata = Rs!Oplata+SummaP
              SummaP= 0 
              Rs.update
        End if
    End if
    Rs.moveNext   '--переход к следующему '
Loop
...
Рейтинг: 0 / 0
16.06.2004, 12:35:10
    #32563309
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Спасибо за помощь!
Буду делать...
...
Рейтинг: 0 / 0
16.06.2004, 12:36:36
    #32563312
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Ирча, а что в Уренгой уже регулярно поезда ходят? А до Пангод на поезде доехать можно? Или все так же, как и раньше вертушкой через Надым?
...
Рейтинг: 0 / 0
16.06.2004, 12:43:26
    #32563336
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
2 Ирча

стройка?

1-й ворпрос - а надо ли "распределять"

может быть - Oplata в твоей таблице - вовсе не оплата, а цена вопроса?
тогда складывай цены вопроса и смотри против них сумму оплат по договору. Разница даст тебе величину задолженности (дебиторской/кредиторской).
Размазывать по стакану есть смысл, только если оплата постаканная.
Вообще же, размазывать - примерно так, как Rivkin Dmitry нарисовал.
Если только у тебя задача без приоритетов, или каких-нибудь специальных заковык, где явная "функция распределения" потребуется.

обозначился.

Все.
В дальнейшем участвовать не смогу.
по причине боления.
побег дальше болеть.

PS
всем привет
:))
...
Рейтинг: 0 / 0
16.06.2004, 12:49:14
    #32563365
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
to Rivkin Dmitry
Поезда до Уренгоя уже ходят, а вот На счет Пангод не скажу, потому что не знаю
Victosha1-й ворпрос - а надо ли "распределять"
Распределять Надо, потому, что есть господа инвесторы, которые такой отчет придумали
...
Рейтинг: 0 / 0
16.06.2004, 13:00:29
    #32563395
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Victosha ,наверное, прав, и надо бы добавить в таблицу приоритет по idOb,
т е. еще одно поле инт, например, и в нем проставлять порядок объектов для оплаты. Тогда в запросе достаточно будет добавить сортировку по этому полю.
А что ты собираешься делать с остатком, если такой проявится?

А муксун и нельму купить в Уренгое можно? (на остаток, конечно :) )
...
Рейтинг: 0 / 0
16.06.2004, 13:39:55
    #32563502
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Rivkin DmitryА что ты собираешься делать с остатком, если такой проявится?
я заранее прослежу, чтобы SummaP была меньше или равна задолженности по договору, а остаток пойдет как аванс
Rivkin DmitryА муксун и нельму купить в Уренгое можно? (на остаток, конечно :) )
Смотря какой остаток...
Реально можно, но если интересует качество, то брать надо пока у нас холодно
...
Рейтинг: 0 / 0
16.06.2004, 14:04:57
    #32563572
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
А что, все еще холодно? Пора бы и лету наступать. Помнится, снег по оврагам числа до 20 июня лежал, но на солнышке уже жарко становилось в середине июня ... Хотя не всегда! Комарики уже есть?

А код работает то? Я там End If и End With не проставил. Справилась?
...
Рейтинг: 0 / 0
16.06.2004, 14:11:02
    #32563587
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Rivkin DmitryЯ там End If и End With не проставил. Справилась?
Код пока смотрю.
Он работает, но делает не совсем то, пытаюсь наладить.
Endы все дописала
Rivkin DmitryА что, все еще холодно? Пора бы и лету наступать
У нас уже тепло, но потеплело очень резко. 6 июля была метель и -5, а сейчас 28 вот на рынке и смотрят, кому бы подпорченную рыбку сбагрить. Холодильников то почти нет.
...
Рейтинг: 0 / 0
16.06.2004, 14:54:30
    #32563732
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Всем спасибо...
Отдельное спасибо Rivkin Dmitry
Все работает посто отлично!
...
Рейтинг: 0 / 0
16.06.2004, 15:05:52
    #32563763
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Привет Северу! Давно там не бывал, и уж, наверное, не буду! А жаль.. :(
...
Рейтинг: 0 / 0
16.06.2004, 15:06:38
    #32563767
neal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
ИрчаУ нас уже тепло, но потеплело очень резко. 6 июля была метель и -5, а сейчас 28 вот на рынке и смотрят, кому бы подпорченную рыбку сбагрить. Холодильников то почти нет.

А какая у Вас разница во времени? :)))
...
Рейтинг: 0 / 0
16.06.2004, 16:34:23
    #32564084
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
neal ИрчаУ нас уже тепло, но потеплело очень резко. 6 июля была метель и -5, а сейчас 28 вот на рынке и смотрят, кому бы подпорченную рыбку сбагрить. Холодильников то почти нет.

А какая у Вас разница во времени? :)))
Когда я там бывал - разница с Москвой была 2 часа (Израиль с Москвой впереди на 1 час), но судя по 6 июля с тех пор они значительно нас обогнали :)))
...
Рейтинг: 0 / 0
17.06.2004, 07:47:40
    #32564638
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Rivkin DmitryКогда я там бывал - разница с Москвой была 2 часа (Израиль с Москвой впереди на 1 час), но судя по 6 июля с тех пор они значительно нас обогнали :)))
Мы такие, к концу рабочего дня еще не то можем.
А вообще то я по делу.
Где-то туплю
Вот что у меня получилось
Код: plaintext
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.
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("оплата", dbOpenDynaset)
SummaP =  10000 
With rs
Do While Not .EOF
.Edit
If SummaP >= !Dolg Then
!Opl = !Dolg
Else
  If SummaP < !Dolg Then
  !Opl = SummaP
  End If
End If
SummaP = SummaP - !Opl
If SummaP =  0  Then
Exit Do
End If
.Update
.MoveNext
Loop
If SummaP >  0  Then
MsgBox "лишних денег " & SummaP
End If
End With
End Sub
не срабатывает второе условие
SummaP < !Dolg ,Т.е. Когда сумма перестает быть больше или равна долгу,
молча не добавляет остаток.
Ставлю точку останова на это место
SummaP = SummaP - !Opl
Значения все правильные
...
Рейтинг: 0 / 0
17.06.2004, 07:55:35
    #32564645
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Выход из цикла без сохранения рекордсета
If SummaP = 0 Then
.Update
Exit Do
End If
...
Рейтинг: 0 / 0
17.06.2004, 08:00:32
    #32564647
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
а пример данных пару строк + тип полей в таблице + описание переменных Variant/Float ?
...
Рейтинг: 0 / 0
17.06.2004, 08:12:28
    #32564649
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Код: plaintext
1.
2.
3.
4.
5.
Объект	КодД	Dolg	Data	                opl
 180 	 1027 	 992 , 47700 	 17 ,июн, 2004 	
 339 	 1027 	 989 , 90600 	 17 ,июн, 2004 	
 359 	 1027 	 978 , 08900 	 17 ,июн, 2004 	
 102 	 1027 	 97 , 58200 	 17 ,июн, 2004 	
 398 	 1027 	 9644 , 58500 	 17 ,июн, 2004 	 6942 
...
Рейтинг: 0 / 0
17.06.2004, 08:17:53
    #32564651
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
это была временная таблица из которой рекордсет
после внесенных изменений
If SummaP = 0 Then
.Update
Exit Do
End If
Общая сумма задолженности в таблице 12702,639,
распределяю 10000
Временная таблица
поля долг и оплата числовые, Одинарное с плавающей точкой
...
Рейтинг: 0 / 0
17.06.2004, 08:20:18
    #32564655
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
If SummaP >= !Dolg Then
!Opl = !Dolg
Else
  If SummaP < !Dolg Then
  !Opl = SummaP
  End If
End If
зачем по одному условия(If SummaP >= !Dolg Then
) 2 раза If ?
Код: plaintext
1.
2.
3.
4.
If SummaP >= !Dolg Then
!Opl = !Dolg
Else
!Opl = SummaP
...
Рейтинг: 0 / 0
17.06.2004, 08:22:49
    #32564656
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
вдогон в recordset нет Order BY
порядок следования записей не важен ?
...
Рейтинг: 0 / 0
17.06.2004, 08:32:13
    #32564662
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
у меня получилось всего
10000,0539855957
Код: plaintext
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.
Dim db As DAO.Database
Dim SummaP As Variant
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("оплата", dbOpenDynaset)
SummaP =  10000 
With rs
Do While Not .EOF
.Edit
If SummaP >= !Dolg Then
!Opl = !Dolg
Else
!Opl = SummaP
End If
SummaP = SummaP - !Opl
If SummaP =  0  Then
Exit Do
End If
.Update
.MoveNext
Loop
If SummaP >  0  Then
MsgBox "лишних денег " & SummaP
End If
End With
...
Рейтинг: 0 / 0
17.06.2004, 08:37:35
    #32564665
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
последний Update не работает - чукотка права
...
Рейтинг: 0 / 0
17.06.2004, 08:42:38
    #32564668
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите реализовать алгоритм
пересчитал - получилось
?dsum("OPL","оплата")
10000,0539855957


в последней записи opl урезалась для достижения нужной суммы
Ирча что не так сейчас
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите реализовать алгоритм / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]