Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19

Организация склада, макрос регистрации поступления пробы

12.01.2017, 03:46. Показов 2838. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!

Создаю файл для учета поступивших проб на склад, многое уже сделал, но не дает покоя одна задача.

Есть карточка регистрации и хранения пробы (вкладка "Карточка") после заполнения необходимых полей сохраняем информацию о ней в базе (на что есть специальный макрос и кнопка сохранить).

Все вроде бы ничего, да вот есть идея следующего плана:
1. При нажатии кнопки сохранения, проба вносится в базу, где ей присваивается личный номер который из столбца "А" вкладки "База" переносится в ячейку G5 вкладки "Карточка".
2. При изменении статуса пробы, информация в базе, согласно ее номеру должна измениться.
3. Также есть макрос на очистку карточки (в примере не представлен) после выполнения которого в карточку можно вносить данные о новой пробе и сохраняя информацию она переносится в "Базу" на новую строку (ну, данный макрос уже есть).

Так вот, Дамы и Господа, учитывая ваш опыт и свежий взгляд на поставленную задачу, прошу помочь мне в написании макроса для следующего:
1. При изменении статуса пробы (при неизменном регистрационном номере) информация о ней обновляется в уже созданной строке, не создавая новую.
2. После очистки бланка и сохранении данных о новой пробе создается новый регистрационный номер, по которому можно отследить и отредактировать (пункт 1 выше) данную пробу.

Пример прилагаю. Он урезан в рамках конкретной задачи.

Заранее очень благодарен! (а то у самого уже голова пухнет)
Вложения
Тип файла: rar Sclad primer.rar (28.1 Кб, 25 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2017, 03:46
Ответы с готовыми решениями:

Организация мини склада
Крутил, мутил вроди получилось, могу добавлять и удалять количество товара, а как сделать чтобы можно было добавлять/удалять новый товар и...

Программа (макрос) вычитания товаров со склада
есть готовая программа(юзер форма): продавец выбирает товар, вводит количество покупаемого. дано задание: вычесть со склада проданый товар....

Событие поступления заказа в базу данных. Аргументы события включают в себя номер заказа и дату поступления
Реализовать событие с помощью делегата. Реализация - выдача в любом виде (консоль, MessageBox, Label и.т.д.) указанных параметров. Делегат...

31
Эксперт NIX
3305 / 933 / 201
Регистрация: 14.01.2013
Сообщений: 4,769
13.01.2017, 20:39
Цитата Сообщение от Аристафан Посмотреть сообщение
1. При изменении статуса пробы (при неизменном регистрационном номере) информация о ней обновляется в уже созданной строке, не создавая новую
Не пойму, в чём проблема. Есть же типа ID? Рег. номер не подходит? Находите свою пробу по нему и меняете поля, как надо.

Цитата Сообщение от Аристафан Посмотреть сообщение
2. После очистки бланка и сохранении данных о новой пробе создается новый регистрационный номер, по которому можно отследить и отредактировать (пункт 1 выше) данную пробу
В человеческой БД это решается автоматом, с помощью генераторов. В Вашем же случае, запоминайте где-нибудь текущий номер, потом доставайте его оттуда и индексируйте. Проверить, нет ли уже такого номера можно, собрав уже выданные номера в коллекцию и попытавшись добавить в неё новый.

З.Ы. Файл не смотрел.
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
16.01.2017, 09:09  [ТС]
Спасибо Kubuntovod, правильные идеи пишете. Да вот только с файлом этим будут работать много людей, при этом необходимо чтобы они не имели доступ во вкладку «База», чтобы не удалили по случайности сформированные данные.
Идея в том, чтобы дописать уже имеющийся макрос, для исключения человеческого фактора при регистрации пробы.
Просто зашли в карточку, занесли данные по пробе, нажали «сохранить» - она автоматом добавилась в базу и ей присвоился номер (Макросом который есть. Присваивать номер макросом или формулой пока не ясно, будет видно, как решится основная идея).
Далее если сотрудник хочет изменить статус пробы в уже созданной карточке (с уже присвоенным номером) он допустим меняет статус с «В работе» на «Отработана-на хранении» нажимает кнопку «сохранить» (запускается второй макрос, который ищет номер пробы и меняет данные в выбранной строке) и данные по этой пробе меняются.
В дальнейшем когда проба утилизируется, нажимаем кнопку «очистить» (запускается макрос очистки листа. Данный макрос потом напишу.) и данные с листа удаляются.
Регистрируя новую пробу в чистом бланке и нажимая сохранить, информация добавляется в новую строку и ей присваивается свой номер.
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
16.01.2017, 09:35
Мне кажется лучше было бы в Access это все реализовать! Вы пытаетесь сделать в Excel Access. Все что вы хотите сделать это можно сделать! Нужно время!

Добавлено через 9 минут
И тут у вас неувязочка будет в базе! Если вы будете искать ваши данные в базе по номеру пробы и удалять данные в той строке где нашли номер, то как вы потом пронумеровывать будете базу, если у вас там формула нумерации стоит с сылкой на предыдущую ячейку +1!? Или вы будете строку полностью удалять?
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
16.01.2017, 09:47  [ТС]
Виктор Михалыч, решение задачи в другом программном продукте конечно хорошая, да вот надо в Excel сделать, я почему и прошу помощи.
А насчет строк, ну я думал так, находим номер пробы (столбец А), ну допустим №3 и не меняя этого номера, меняем все значения этой строки начиная со столбца B.
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
16.01.2017, 09:58
Я попробую вам набросать немного то, как я вижу это. В базе должны удалятся данные полностью строкой! Никаких формул там не должно быть. Записываться новые данные должны в последнюю пустую строку! Поиск существующей записи по ее номеру и изменение ее реализуем. Но если с этим файлом планируется работать одновременно, не одному человеку, то я бы посоветовал сделать клиент серверную базу в Access!!! Там вы сможете отслеживать и делать выборку по любому критерию! И с данными могут работать одновременно не ограниченное число клиентов!
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
16.01.2017, 11:28  [ТС]
Виктор Михалыч, из «Базы» данные удалятся не должны, последние изменения по пробе (согласно Порядковому номеру) можно внести перед очисткой «Карточки», например, в ячейке статус (в «Базе») запись изменится на Утилизирована, все остальное остается, так сказать данные для архива.
Заполняя карточку данными о новой пробе и нажимая сохранить заносим информацию о ней в «База», да верно в последнюю пустую строку и тем самым присваиваем ей новый порядковый номер, по которому можно будет ее найти.
Сервер настроим, пользоваться файлом будут по очереди.
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
16.01.2017, 11:29
Вот что получилось. Не реализовано удаление данных! При двойном клике в ячейке с номером пробы, запускается поиск последнего номера пробы + 1( это если изменяли номер для замены статуса), эта же команда запускается при нажатии на кнопку Записать! Что бы не ввели в ячейку, все равно при новой записи, будет добавлен нужный порядковый номер! Если при поиске для замены статуса, нет номера в базе, будет сообщение.
Вложения
Тип файла: rar Sclad primer.rar (35.3 Кб, 17 просмотров)
1
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
16.01.2017, 11:36
Можно реализовать выбор данных из базы по его номеру пробы (то есть, при выборе номера пробы, в поля буду вставлены те данные которые относятся к выбранной пробе)
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
16.01.2017, 12:05  [ТС]
Виктор Михалыч, Благодарю, посмотрю Ваши решения, отпишусь.
0
Эксперт NIX
3305 / 933 / 201
Регистрация: 14.01.2013
Сообщений: 4,769
16.01.2017, 14:40
Цитата Сообщение от Аристафан Посмотреть сообщение
Сервер настроим, пользоваться файлом будут по очереди.
В этом плане Михалыч прав, лучше сделать это всё на основе человеческой БД. Только не Access. Я бы сделал на Firebird. А междумордие на PHP (чтобы с браузера работать). Было бы быстро и всем без очереди. Можно, кстати, интерфейс и в Excel сделать. Главное, что данные будут от него отделены. Хотя, это позамороченнее будет, нежели всё в одном Excel-е.
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
17.01.2017, 11:12  [ТС]
Здравствуйте, Виктор Михалыч!
Отличные идеи, прям пнули меня вперед по созданию хорошего, конечного продукта.
Поработал с Вашими макросами, немного поправил под себя, а именно:
1. Обезличил в макросах карточки, чтобы можно было создавать их неограниченное количество, без привязки к имени. Ну, например, на складе один стеллаж, на нем одна проба, но есть место для еще одной. Можно создать дубликат карточки, с тем же адресом (склад 2, место 1А), но проба другая.
2. Макрос внесения новых данных в базу, заменил на свой (с вашими доработками), т.к. в «Базе» решил вставить расширенный фильтр для поиска проб (необходимо для ответственных по складу), а Ваш макрос конфликтовал.
3. Объединил все макросы в одну кнопку.

Остались не решенные вопросы:
1. Внесение номера новой пробы в карточку.
2. Если добавляем номер в ячейку G5 (любая из карточек) и нажимаем сохранить, через диалоговое окно «Сохранить изменения?», если нажимаем «Ок» запускается макрос на внесение изменений в листе «База», однако при нажатии «Отмена», выдает сообщение «Такого номера пробы нет!» - необходимо, чтобы данное сообщение выводилось только в случае, если реально ее нет в базе при этом мы оставались на этом активном листе (какой-либо из карточек, сейчас перебрасывает в «Базу»).
3. Если добавляем номер в ячейку G5 (любая из карточек) и нажимаем сохранить, через диалоговое окно «Сохранить изменения?», если нажимаем «Ок» запускается макрос на внесение изменений в листе «База». Необходимо, чтобы мы оставались на активном листе (какой-либо из карточек, сейчас перебрасывает в «Базу»).
4. Необходимо, чтобы при внесении изменений через карточку по уже имеющемуся номеру, замене подлежали не только данные окна «Статус», но и все остальные значения, так сказать обновлялись. (просто предвосхищаю возникновение будущих задач, в которых подбиться менять и эти значения).
Вот, так. Буду рад если Вы найдете время осмыслить новые задачи и предложить свои решения!
Вложения
Тип файла: rar Sclad primer 2.rar (51.8 Кб, 13 просмотров)
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
17.01.2017, 13:20
Цитата Сообщение от Аристафан Посмотреть сообщение
однако при нажатии «Отмена», выдает сообщение «Такого номера пробы нет!
У меня нет сообщения такого все работает!
Цитата Сообщение от Аристафан Посмотреть сообщение
при этом мы оставались на этом активном листе
Вы добавили новые листы поэтому вам нужно добавлять имя листа в переменную, для возврата к нему!
Для замены всех значений, вам нужно сделать, что бы при выборе номера пробы все данные связанные с ней вносились в ячейки вашей карточки и прописать адресацию в коде. Для этого можно вставить ActiveX объект (раскрывающийся список),отключить в нем вывод на печать и при выборе в нем существующих номеров проб записывалось все в карточку!) Можно сделать все на одном листе и через поле ActiveX добавлять номер карточки, а в базе добавить столбец с номерами карточек.
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
19.01.2017, 03:47  [ТС]
Здравствуйте, Виктор Михалыч!
Сообщение выдает когда выделяем ячейку пустого поля, не G5 с номером пробы.

Добавление имени листа в переменную, убивает всю универсальность макроса, так, допустим будет 120 проб и как следствие 120 карточек, а это значит и 120 макросов, верно или я чего не понимаю.

Что касается адресации в коде на замену данных по номеру пробы, вот тут проблема, собственно с этого и родилась данная тема форума.
Если не трудно, прошу помочь.
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
19.01.2017, 13:15
Объясните зачем вам 4 Карточки(листа)?

Добавлено через 1 час 20 минут
Какой у вас Офис 2003, 2007 или 2010?
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
19.01.2017, 20:00
Вот вам пример простой базы на основе того, что вы дали. Все что вы хотите сделать в Excel, реализовано в Access ! Здесь десятая часть того, что можно сделать по тому материалу, что у вас в файле. Можно редактировать данные, как в полях формы, так и в самой таблице. Можно использовать встроенные фильтры по выбранному критерию при правом клике, в каком либо поле. Можно сделать фильтрацию данных по любому критерию и по любому полю из базы, через форму(так как это реализовано на кнопке «Выбор по статусу». Можно делать выборку за периоды дат и многое другое. Вы пытаетесь сделать в Excel – Access. Это можно, но это будет громоздко и зачем? Дело в том, что при применении макросов, восстановить замененные данные не возможно(если их не зарезервировали макросом) и много других нюансов. Для безошибочной работы вашей базы в Excel, нужна проверка на ввод данных, где гарантия, что вместо цифры в ячейке с номером пробы, вставят букву или знак какой-то прилепят случайно. По мере заполнения вашей базы, скорость выполнения макросов будет уменьшаться и в конечном итоге могут быть ошибки и потом….. В Access все сводится к тому, что бы все было через клиентский интерфейс и с «защитой от дурака». Максимально облегчить и упростить ввод и извлечение данных. Тут не реализован только отчет по выбранным данным(если вас это заинтересует, я покажу и продолжим дальше).
Вложения
Тип файла: zip Склад пример.zip (69.1 Кб, 14 просмотров)
Тип файла: zip Склад пример_edit.zip (3.40 Мб, 20 просмотров)
1
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
19.01.2017, 21:41
Цитата Сообщение от Аристафан Посмотреть сообщение
Добавление имени листа в переменную, убивает всю универсальность макроса, так, допустим будет 120 проб и как следствие 120 карточек, а это значит и 120 макросов, верно или я чего не понимаю.
При нажатии на кнопку, в переменную берется имя активного листа и при каких либо перемещениях по листам, вы указываете не имя листа а его переменную, то есть в любом случае откроется тот лист на котором вы нажали кнопку!

Зачем дубликаты листа Карточка1??????? Поясните!!!!

Вот ваш файл. Если в ячейке с номером пробы ничего нет, то будет сделана новая запись. При выборе из ComboBox1 номера пробы, данные запишутся в активный лист.
Вложения
Тип файла: 7z Склад пример 2.7z (35.0 Кб, 4 просмотров)
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
19.01.2017, 23:20
Упс. Не тот файлик скинул.
Вложения
Тип файла: 7z Склад пример 2.7z (56.8 Кб, 22 просмотров)
1
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 19
20.01.2017, 08:35  [ТС]
Виктор Михалыч, здравствуйте!
Спасибо за пример! Смотрю, разбираюсь.
Офис у меня стоит 2013.
После Ваших замечаний и предложений, уже начинаю сомневаться по поводу нескольких карточек, но а идея была в том, что в планах было немного визуализировать склад, прям нарисовать полки, на которой видно, допустим, название пробы нажимая на нее, у нас открывается относящаяся к ней карточка.
Что относительно продвижения в увлекательный и удобный мир Access, так я всеми руками за, но вот только существует большая трудность административного характера - на многих "машинах" у нас нет Access и покупать его вряд-ли будут, а еще многие "мамонты" просто не разу его не видели в глаза и негативно воспримут идею о его использовании. А файл это сделать надо. Вот такая печалька.
0
280 / 136 / 23
Регистрация: 08.01.2014
Сообщений: 635
20.01.2017, 08:45
Ясно. Access идет в стандартном наборе офиса. Удобен тем, что делается клиент-серверная база и доступ к ней может иметь одновременно несколько человек. На счет визуализации, то можно через форму визуализировать вашу базу, только я не знаю что вам и как нужно.

Добавлено через 1 минуту
Можно сделать что все будет через формы делаться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2017, 08:45
Помогаю со студенческими работами здесь

Как получить название склада по ID склада?
Добрый день. Подскажите пожалуйста как получить название склада по ID склада? Получаю ID склада (storeid) по заказу: use...

Модифицированный метод наилучшей пробы
Доброго времени суток. Вопросы по моей реализации: 1) Есть ли хоть доля правды в том, что я написал.(правильно ли я понял математику...

Нужно для пробы 5 статей по 700 знаков!
Есть много кого на МТ, но мне нужно чтоб человек был на сайте сегодня, и мог быстро написать, а не в отпуск уехал. Тема о собаках ... ...

Пробы пера: матюки и советы: что криво, на сколько и как лучше?
https://yadi.sk/d/NYakwpbihTNLX тут так сказать результаты проб жду матюков и прочего

Найти точку минимума функции методом случайного поиска с возвратом и наилучшей пробы
Здравствуйте. помогите решить задачку. надо найти точку минимума функции методом случайного поиска с возвратом и наилучшей пробы. функция...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений в EXE. Здесь описаны базовые шаги для старта программирования с помощью CMake. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru