powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка значения в поле от итогового
24 сообщений из 24, страница 1 из 1
Проверка значения в поле от итогового
    #40085721
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Подскажите алгоритм или натолкните на мысль как сделать так, чтобы при вводе в поле "кол" (выделено красным) оно вычиталось из общей суммы поля другой формы (на рис. выделено синим) и когда значение меньше или =0 выдавало сообщение типа достигнут предел (проверка или поиск по номеру партии и дате). соответственно новое значение сохранялось поверх старого уже с вычетом введенного кол-ва.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40085722
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_Ang
Добрый день. Подскажите алгоритм или натолкните на мысль как сделать так, чтобы при вводе в поле "кол" (выделено красным) оно вычиталось из общей суммы поля другой формы (на рис. выделено синим) и когда значение меньше или =0 выдавало сообщение типа достигнут предел (проверка или поиск по номеру партии и дате). соответственно новое значение сохранялось поверх старого уже с вычетом введенного кол-ва.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40085734
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
соответственно новое значение сохранялось поверх старого уже с вычетом введенного кол-ва.
Если я правильно понял , то хранить вычисляемые поля в базе данных не очень хорошо , в будущем может создать проблемы .
Просто при вводе в поле количество нужно проверять остаток на складе . Это можно делать перед обновлением. .
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40085762
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как то так:
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086132
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, спасибо за пример, но я не нашел там сохранения нового значения в поле прибыло (остаток вычисляется при непосредственном вводе). ведь партию могут месяц или более продавать, а кол. партии должно уменьшаться на значение введенного количество и где-то хранится до следующей операции. может я что-то упустил в примере?
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086146
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
немножко поясню. есть таблица партий где хранится одна запись на конкретную партию и дату с постоянным кол. товара. (для нашего примера 2325 кг). есть другая таблица где эта партия выбирается из списка и потом вводится кол. для отпуска покупателю. а далее как я писал выше. нужно отнять кол отгрузки от кол. партии 2325-25 = 2300 и это значение сохранить в таблице где хранятся партии для последующей отгрузки.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086147
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
(остаток вычисляется при непосредственном вводе)

Как правило приход и расход заносят в одну таблицу с добавлением поля тип , или в две , что немного усложняет вычисления . А остаток на складе , расчитывается запросом на определенную дату. Как то так наверное.
P.S Почитайте немного о правилах нормализации.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086170
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan, Предлагаете в свойствах поля Кол. "после обновления или внесены изменения" сделать что-то по типу
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set dbs = CurrentDb()
    ' вставить выборку из запроса по № партии и дате
    strSQL = "SELECT ... FROM таблица1"  
    Set rs = dbs.OpenRecordset(strSQL, dbOpenDynaset, DB_CONSISTENT, dbPessimistic)
    rs.MoveFirst
    Do Until rs.EOF
                rs.Edit
                rs.Fields(2) = rs.Fields(2) - me.kol       ' примерно поле rs.Fields(2) кол. партии 2325  - 25 кг (me.kol)
                rs.Update
                rs.MoveNext
    Loop
    rs.Close
    dbs.Close


Так? или есть что-то попроще?
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086173
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
sdku, спасибо за пример, но я не нашел там сохранения нового значения в поле прибыло (остаток вычисляется при непосредственном вводе). ведь партию могут месяц или более продавать, а кол. партии должно уменьшаться на значение введенного количество и где-то хранится до следующей операции. может я что-то упустил в примере?

Есть документ приход (количество на дату).
Есть условный документ (расход количество на дату).
Этим документам по барабану такое понятия как остаток.
Остаток вичисляется динамически по мере ввода например расхода (чёб не залести в минуса )
Но остаток может быть и минусовым, че говорит о том что надо пополнить товар ну или резервировать)
Вариантов масса,
но остаток не храниться в явном виде (замучаетесь его перезаписывать после каждого чиха)
Ну и удобно вычислять остатки на дату
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086183
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
DarkMan, Предлагаете в свойствах поля Кол. "после обновления или внесены изменения" сделать что-то по типу
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set dbs = CurrentDb()
    ' вставить выборку из запроса по № партии и дате
    strSQL = "SELECT ... FROM таблица1"  
    Set rs = dbs.OpenRecordset(strSQL, dbOpenDynaset, DB_CONSISTENT, dbPessimistic)
    rs.MoveFirst
    Do Until rs.EOF
                rs.Edit
                rs.Fields(2) = rs.Fields(2) - me.kol       ' примерно поле rs.Fields(2) кол. партии 2325  - 25 кг (me.kol)
                rs.Update
                rs.MoveNext
    Loop
    rs.Close
    dbs.Close



Так? или есть что-то попроще?

"Партийный" учет это есчё та штука.
Он за собой сразу же потянет такие понятия как:(FIFO LIFO)
тип расчета цены и тд..........
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086186
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
немножко поясню. есть таблица партий где хранится одна(почему только одна?) запись на конкретную партию и дату с постоянным кол. товара. (для нашего примера 2325 кг). есть другая таблица(она не нужна от слова совсем,{достаточно таблицы "склад" с полем связи с "партия", занести в поле [прибыло]это количество,выбрать из списка на таблице "партия" партию{делая при выдаче такой же выбор или автоматизировать процесс,выдавая, в первую очередь, товар из самой ранней партии, когда остаток будет=0 сообщать что партия закончилась,а если меньше 0,то сообщать что можно выдать не более остатка для всех партий) где эта партия выбирается (а чё её выбирать если,по-Вашему она одна в таблице партий, вот здесь то и пригодится таблица партий,но только не с одной записью-а в таблице склад нужно будет поле партия-для связи со стороны многие с тбл."партия" При автоматизации процесса списания можно отказаться от тбл."партия",добавив соответствующие поля в тбл."склад",заполняя их при оприходовании партии) из списка и потом вводится кол. для отпуска покупателю. а далее как я писал выше. нужно отнять кол отгрузки от кол. партии 2325-25 = 2300 и это значение сохранить в таблице (хранить вычисляемые данные есть ооочень не ICE тынц ) где хранятся партии для последующей отгрузки.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086187
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang
Так? или есть что-то попроще?

Проще Вам уже говорили. Вы устанете бегать рекордсетами по таблице . Что такое остаток ? Это Приход-Расход .
Вот и напишите функцию , которая вычисляет остаток.
А перед продажей товара ее запускайте и проверяйте есть ли необходимое количество товара для продажи. Вот и вся проблема.
А хранить вычисляемые поля в таблице не рекомендуется.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086189
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI
потянет такие понятия как:(FIFO LIFO)

FIFA
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086191
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
ROI
потянет такие понятия как:(FIFO LIFO)

FIFA

А для некоторых все едино
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086194
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

Поля расход и приход в одной таблице я не приветствую
появятся Null строки не соответствия.
у вас одна запись и приход и расход и все в месте(это неоднозначность напрягает)
приход и расход разные таблицы (ИМХО).
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086207
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI
приход и расход разные таблицы (ИМХО).

А вот лично мне офигенно не понравилось в разных таблицах. :)
ROI
А для некоторых все едино

Так лучше слух ласкает.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086262
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написал примерно так
Код: plsql
1.
Me.Ost = Me.Mas - Nz(DSum("[kolP]", "tbPodSbut", "Trim([NomPart])='" & Trim(Me.NPart) & "'" And "[DataPart]=#" & Me.pDataPart & "#"), 0)

.
если написать выражения
Код: plsql
1.
Me.Ost = Me.Mas - Nz(DSum("[kolP]", "tbPodSbut", "Trim([NomPart])='" & Trim(Me.NPart) & "'"

все считает, но как только добавляю отбор по дате
Код: plsql
1.
And "[DataPart]=#" & Me.pDataPart & "#"), 0)


выдает ошибку 13 несоответствие типа.
подскажите пжл где ошибка и как ее исправить? спасибо
Me.NomPart - № партии, а Me.DataPart - дата партии из таблицы tbPodSbut
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086277
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMan
ROI
приход и расход разные таблицы (ИМХО).
А вот лично мне офигенно не понравилось в разных таблицах. :)
ROI
А для некоторых все едино
Так лучше слух ласкает.
Программирование процесс творческий и каких-либо однозначных решений нет и быть не может. Считаю главным результат\работоспособность (ну если только это не достигнуто совсем уж "дебильным" путем, с нарушениями основополагающих правил--а сейчас они ни в одном,ни в другом случае не нарушаются)
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086351
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_Ang,
Код: vbnet
1.
Me.Ost = Me.Mas - DSum("[kolP]", "tbPodSbut", "Trim([NomPart])='" & Trim(Me.NPart) & "' And [DataPart]=" & Format(Me.pDataPart,"\#mm\/dd\/yy\#"))


при партионном учете - остатков будет несколько - свой для каждой партии- может быть лучше создать дополнительную колонку для остатка в настоящий момент, если в какой то отрезок времени партий поставок с ненулевыми остатками может быть более одной.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086357
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,
так наличие в таблице [склад] полей [товар] и [дата] позволяют тривиальным запросом получить актуальный\на любую дату остаток по любому товару (а если товар-всегда только одно наименование-заменить поле [товар] на поле [партия])
sdku
..... вот здесь то и пригодится таблица партий,но только не с одной записью-а в таблице склад нужно будет поле партия-для связи со стороны многие с тбл."партия" ....
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086399
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko, Спасибо все получилось.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086413
Oleg_Ang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь. Топик можно закрывать.
...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086452
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, в партии (поставке) обычно много разного товара, так что просто заменить товар на партию не получится. учет по движению товаров хорош, если сбоев не было и ничего не может произойти с историей, а если, вдруг...? поэтому отчеты по движению, но текущее состояние стараюсь сохранять - запросы элементарные, работы немного, а живучесть базы повышается.
кстати этот Format давно уже перевел в публичную функцию - так удобнее пользоваться
Код: vbnet
1.
2.
3.
4.
Public Function AmericanDate(date1 As Date) As String
' переводим дату в американский стандарт
AmericanDate = Format$(date1, "\#mm\/dd\/yy\#")
End Function

...
Рейтинг: 0 / 0
Проверка значения в поле от итогового
    #40086510
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да это все понятно-я только о том,что в вопросе ТСа есть такое:
Oleg_Ang
...есть таблица партий где хранится одна запись...
С учетом этой фразы был и ответ-из неё делается вывод-БД предназначена для работы с ОДНОЙ партией
В таком случае она(таблица)вообще не нужна
Тщательне'е нужно,тщательне'й (М.М.Жванецкий)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проверка значения в поле от итогового
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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