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

Создание автоматизированной анкеты с обновляемой базой данных

09.07.2015, 15:50. Показов 3023. Ответов 24
Метки нет (Все метки)

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

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

Подскажите, возможно ли сделать данные опции с помощью VBA? Если да, то подскажите как их реализовать.

P.S. В написании макросов честно говоря не силен.
Вложения
Тип файла: xlsx Макет_Анкета.xlsx (14.9 Кб, 10 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2015, 15:50
Ответы с готовыми решениями:

Мониторинг данных в обновляемой таблице
Всем привет! Возникла необходимость создания простенького скрипта, который будет автоматически, с определенным интервалом, мониторить...

Создание и управление базой данных
доброго времени суток, пишу приложение на winjs, подскажите как создать и управлять базой данных ответ нужен или как это сделать на js...

Создание сайта с базой данных
Нужно сделать сайт с базой данных. Где будет сделать без разницы. Главное чтобы можно было открывать на других компьютерах. Спасибо ...

24
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
09.07.2015, 23:38
Немного не так, как вы хотели: вместо выпадающего меню сделал кнопку вызова списка. Остальное в соответствии с заданием. После открытия книги нужно разрешить использование макросов.
Вложения
Тип файла: rar Макет_Анкета.rar (21.3 Кб, 24 просмотров)
1
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
10.07.2015, 00:17
Что-то похожее, с выпадающим списком
Вложения
Тип файла: zip Макет_Анкета.zip (24.7 Кб, 16 просмотров)
1
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
10.07.2015, 12:46  [ТС]
chumich, kasan, Спасибо Вам за проделанную работу! Ваши варианты очень полезны!

В ваших вариантах идея воплощена правильно. Единственное, что смущает, это то, что есть несколько недочетов.

chumich, по пунктам:
1. При нажатии кнопки "Загрузить в базу данных" макрос добавляет абсолютно всех "заказчиков", даже тех, которые уже есть в списке. Данный вариант крайне не удобен ввиду того, что "заказчик" может быть с одинаковым названием, а "адреса" у него могут быть разные. Соответственно необходимо, чтобы при нажатии кнопки "загрузка в базу данных" происходила сверка ячеек с уже существующими значениями в "базе данных". При условии совпадения всех значений, нужно, чтобы всплывало некое сообщение, что загружаемый "заказчик" с такими же данными уже существует.
2. При использовании формы в строке поиска, не используя выпадающий список, есть неудобство: При введении первой переменной, форма не позволяет вводить второй символ (букву) , а выдает сразу первичный вариант из базы данных по первой переменной (букве). Поэтому для получения окончательного результата поиска приходится несколько раз вводить по одной букве, что крайне неудобно...
3. При наличии нескольких повторяющихся символов (Пример: ИП Иванов и ИП Сидоров) хотелось бы, чтобы он фильтровал выпадающий список уже по первым переменным и давал возможность выбрать нужный вариант.
4. Возможен ли, вывод некоего сообщения об "отсутствии совпадений" по поисковику , в случае, если совпадений нет?
5. При нажатии кнопки "Загрузка в базу данных" вся информация прекрасно загружается в базу данных, но автоматически исчезает из Анкеты, что создает неудобство и приходится вводить информацию дважды или через поиск.

kasan,
1. При нажатии кнопки "Загрузить в базу данных" макрос добавляет абсолютно всех "заказчиков", даже тех, которые уже есть в списке. Данный вариант крайне не удобен ввиду того, что "заказчик" может быть с одинаковым названием, а "адреса" у него могут быть разные. Соответственно необходимо, чтобы при нажатии кнопки "загрузка в базу данных" происходила сверка ячеек с уже существующими значениями в "базе данных". При условии совпадения всех значений, нужно, чтобы всплывало некое сообщение, что загружаемый "заказчик" с такими же данными уже существует. (такое же неудобство, как и у chumich, )
2.При наличии нескольких повторяющихся символов (Пример: ИП Иванов и ИП Сидоров) хотелось бы, чтобы он фильтровал выпадающий список уже по первым переменным и давал возможность выбрать нужный вариант. (такое же неудобство, как и у chumich, )
3. Возможен ли, вывод некоего сообщения об "отсутствии совпадений" по поисковику , в случае, если совпадений нет? (такое же неудобство, как и у chumich, )
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 13:15
CheBo, по пунктам:
Цитата Сообщение от CheBo Посмотреть сообщение
нужно, чтобы всплывало некое сообщение
Это нетрудно.
Цитата Сообщение от CheBo Посмотреть сообщение
При использовании формы в строке поиска, не используя выпадающий список, есть неудобство
Так вроде список есть на форме, зачем его не использовать?
Цитата Сообщение от CheBo Посмотреть сообщение
При наличии нескольких повторяющихся символов (Пример: ИП Иванов и ИП Сидоров) хотелось бы, чтобы он фильтровал выпадающий список уже по первым переменным и давал возможность выбрать нужный вариант
При использовании списка фильтрация не нужна.
Цитата Сообщение от CheBo Посмотреть сообщение
Возможен ли, вывод некоего сообщения об "отсутствии совпадений" по поисковику , в случае, если совпадений нет
Возможен.
Цитата Сообщение от CheBo Посмотреть сообщение
но автоматически исчезает из Анкеты
Вообще-то это сделано для удобства, но если хотите очищать вручную, то убрать исчезание - пара секунд

Резюме: поясните момент с формой и списком на ней - почему же вы его не используете, и сообщите: нужен ли вам доработанный вариант. Потому как дел и без этого хватает
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
10.07.2015, 14:14  [ТС]
chumich, Спасибо за быстрый ответ!

В первую очередь меня интересует реализация загрузки данных в базу без повторов, а то есть 1ый пункт.
1.
Цитата Сообщение от chumich Посмотреть сообщение
Сообщение от CheBo
нужно, чтобы всплывало некое сообщение
Это нетрудно.
Могли бы вы подсказать как это реализовать?

2.
Цитата Сообщение от chumich Посмотреть сообщение
Так вроде список есть на форме, зачем его не использовать?
Сегодня их 10, а завтра их будет 300) и будет крайне не удобно прокручивать весь список)

3.
Цитата Сообщение от chumich Посмотреть сообщение
При наличии нескольких повторяющихся символов (Пример: ИП Иванов и ИП Сидоров) хотелось бы, чтобы он фильтровал выпадающий список ...
При использовании списка фильтрация не нужна.
В представленном вами примере так, как в базе данных мы не избавились от повторов, то во всплывающем списке эти повторы к сожалению не фильтруются...
4.
Цитата Сообщение от chumich Посмотреть сообщение
Возможен ли, вывод некоего сообщения об "отсутствии совпадений" по поисковику , в случае, если совпадений нет
Возможен.
Подскажите, пожалуйста как это возможно реализовать)

5.
Цитата Сообщение от chumich Посмотреть сообщение
но автоматически исчезает из Анкеты
Вообще-то это сделано для удобства, но если хотите очищать вручную, то убрать исчезание - пара секунд
К сожалению в данном варианте, это неудобно, поскольку Анкета будет еще выводится еще в печатном виде.

Резюме: Определенно вывод данных поиска на форме мне очень нравится, но работает немного криво. Хотелось бы пользоваться и вводом данным и выпадающим списком для поиска "заказчиков", которые как раз будут с одинаковым названием, но с разными адресами. Поэтому это важно. (а так же необходимо, чтобы происходила некая фильтрация. Пример: набираю в поиске "ИП Иванов", выпадающий список мне выдает 3 одинаковых названия (ИП Иванов), но они выпадают не из-за того, что они будут одинаковые в целом, а потому, что у них разные адреса. Перебрав всех, я найду мне нужного). К сожалению сейчас так форма не работает.
Цитата Сообщение от chumich Посмотреть сообщение
нужен ли вам доработанный вариант.
Буду очень Вам благодарен, если вы найдете время и постараетесь доработать данный вариант.

P.S. не тороплю, но хотелось бы А то у меня как-то либо опыта, либо ума не хватает
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 14:26
Цитата Сообщение от CheBo Посмотреть сообщение
выпадающий список мне выдает 3 одинаковых названия (ИП Иванов), но они выпадают не из-за того, что они будут одинаковые в целом, а потому, что у них разные адреса.
Поясните: когда вам при занесении анкеты будет выдаваться сообщение, что ИП Иванов уже есть, оно должно появляться только при совпадении всех данных? А в случае совпадения части данных, они должны заноситься без предупреждения?
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
10.07.2015, 14:39  [ТС]
chumich,
Цитата Сообщение от chumich Посмотреть сообщение
ИП Иванов уже есть, оно должно появляться только при совпадении всех данных?
Да, только при совпадении всех данных
Цитата Сообщение от chumich Посмотреть сообщение
А в случае совпадения части данных, они должны заноситься без предупреждения?
да, все верно
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
10.07.2015, 15:51  [ТС]
chumich, Во вложении "Чистовик", где я попытался реализовать выгрузку информации в базы, но так и не смог сделать это с помощью вашего макроса. Поскольку сложно понять к чему он привязан...
Sub Button1_Click()
LastRow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To 8
Sheet2.Cells(LastRow + 1, i) = Sheet1.Cells(i, 2)
Sheet2.Cells(LastRow + 1, 1) = Sheet2.Cells(LastRow, 1) + 1
Sheet1.Cells(i, 2) = ""
Next i
End Sub
Возможно вам будет проще адаптировать макрос под уже существующий чистовик, который я буду использовать в будущем..
Вложения
Тип файла: zip Чистовик.zip (26.7 Кб, 5 просмотров)
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 19:01
Хорошо, доработаю прямо в нем. Единственная сложность с автодополнением текста. В C# я бы это сделал за минуту, в VBA намного морочнее. Остальное же элементарно.

Добавлено через 3 часа 0 минут
CheBo, а что так уж принципиально необходимо было ячейки объединять? Может быть всё-таки обойтись нужной шириной столбцов и высотой строк? Чтобы одна запись была в одной ячейке?
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
10.07.2015, 19:58  [ТС]
chumich, Дело в том что на странице "вводные данные" после шапочки которую вам я выслал в Чистовике есть еще куча таблиц и подтаблиц, чтобы элегантно все вместить на одной странице... Я их убрал чтобы Вас сконцентрировать на конкретных таблицах. Так эти таблицы повязаны уже с кучей дополнительных листов... И с макросами для другого функционала... Если есть возможность с реализации данного задания с объединенными ячейками... То я вам буду очень-очень благодарен. Поскольку в противном случаи мне придется перекраивать всю страницу что повлечет за собой правки во всех остальных документах которые ссылаются на данный лист и правка всех других макросов по другим задачам
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 20:17
Давайте так: я уже сделал копию вашего чистовика, убрал в ней все объединения, сохранив внешний вид. Доделаю программу на этой копии, пришлю вам. Если функционал вас полностью устроит, то посмотрю: смогу ли сделать то же самое на вашем чистовике.

Добавлено через 5 минут
Да, и еще вопрос: если при вводе данных в форму поиска, будет вылезать список возможных вариантов, то в случае отсутствия какого либо заказчика это будет видно уже при вводе. Просто кончатся варианты и будет пустой список. Зачем тогда сообщение о том что такого заказчика в базе нет?
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
10.07.2015, 22:26
Держите. Тестируйте.
Не стал использовать при поиске комбобокс - получается "масло масляное". На мой взгляд хватает текстового поля с выпадающим списком вариантов при вводе каждой буквы, но если очень надо - могу и комбобокс приладить туда же.
Когда при вводе остаются, допустим, три "ИП Иванов", при щелчке по любому из них, появляется другой список, где выведены полные данные про всех трех Ивановых. Щелкнув по нужной строке этого списка, получаете данные в таблицу.
Не стал выводить сообщение, что данные не найдены. Как уже говорил в предыдущем посте, при вводе отсутствующих данных в текстовое поле, список останется пуст. Так что всё и так будет понятно.
Будете тестировать - добавляйте сразу те данные, которые в анкетах. Увидите как работает сообщение, и что данные не добавятся. Потом измените любую строку и попробуйте снова - данные будут занесены.
Вложения
Тип файла: rar Чистовик1.rar (33.5 Кб, 11 просмотров)
1
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
13.07.2015, 12:00  [ТС]
chumich, Огромное Вам спасибо!
Цитата Сообщение от chumich Посмотреть сообщение
Давайте так: я уже сделал копию вашего чистовика, убрал в ней все объединения, сохранив внешний вид. Доделаю программу на этой копии, пришлю вам. Если функционал вас полностью устроит, то посмотрю: смогу ли сделать то же самое на вашем чистовике.
Функционал просто отличный. Именно то, что нужно! Супер!
Единственное да, я не могу к сожалению применить из-за loop'ов макросы к себе в форму с объединенными ячейками. Если правда реально сделать это с "чистовиком" с объединенными ячейками, то было бы просто идеально!!!
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.07.2015, 12:15
Цитата Сообщение от CheBo Посмотреть сообщение
Если правда реально сделать это с "чистовиком"
Вполне реально, просто нужно внимательно проверять и изменять шаги в циклах, а это - время. Постараюсь его найти и сделать сегодня.
1
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
13.07.2015, 15:07  [ТС]
chumich, Протестировал все еще раз.
Этапы с загрузкой и выгрузкой информации в базу данных работают как часы.
Возникли трудности с этапом поиска информации. Не всегда выдает корректно информацию message box.
1. В поисковике нет возможности искать с учетом разного регистра (большие, маленькие буквы)
2. Так же прикладываю print Screen с ошибкой поиска. Поиск выдает не подходящие по запросу варианты.
3. Поиск выдает иногда только названия, а дальнейшую информацию не выводит и если нажать на название, то подгружает только название без остальных данных.
4. Так же поиск выдает историю поиска в тех случаях, когда задаешь конкретное название. (в примере во вложении это так же видно)
Миниатюры
Создание автоматизированной анкеты с обновляемой базой данных   Создание автоматизированной анкеты с обновляемой базой данных  
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.07.2015, 15:19
Цитата Сообщение от CheBo Посмотреть сообщение
В поисковике нет возможности искать с учетом разного регистра (большие, маленькие буквы)
Это поправлю наверно. Имеется ввиду, чтобы было без разницы какие?
Цитата Сообщение от CheBo Посмотреть сообщение
Не всегда выдает корректно информацию message box.
Остальное проверю. У меня ошибок не было.

Добавлено через 2 минуты
Цитата Сообщение от CheBo Посмотреть сообщение
Так же поиск выдает историю поиска в тех случаях, когда задаешь конкретное название. (в примере во вложении это так же видно)
Это когда скопируешь и вставишь готовое название?
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
13.07.2015, 15:32  [ТС]
chumich,
Цитата Сообщение от chumich Посмотреть сообщение
Это поправлю наверно. Имеется ввиду, чтобы было без разницы какие?
да
Цитата Сообщение от chumich Посмотреть сообщение
Это когда скопируешь и вставишь готовое название?
при любом вводе, даже когда вручную вбиваю название
0
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
13.07.2015, 20:09
Всё-таки, давайте отработаем сначала все косяки в пробном варианте. Вроде всё исправил, добавил независимость от регистра не только в поиске, но и при занесении данных: то есть если будет ошибка в регистре при добавлении данных, например, есть ИП Иванов, а запишут ип Иванов, то выйдет сообщение о том, что такой пользователь уже есть. Добавил сообщение, что данные занесены. Протестируйте еще раз программу, а то у меня нет ни времени, ни фантазии на это, а у вас хорошо получается . Если всё в порядке - буду переделывать.
Вложения
Тип файла: rar Пробник2.rar (36.5 Кб, 8 просмотров)
0
0 / 0 / 0
Регистрация: 09.07.2015
Сообщений: 12
14.07.2015, 11:55  [ТС]
chumich,
Протестил, все работает как часы. Спасибо огромное!
1. В поисковике (в выпадающем списке), хотелось бы добавить выбор компании не только по клику мыши, но и по нажатию "Enter". (print screen во вложении "PS1")
2. Есть одна тонкость, если это решается в два клика, то было бы здорово, если нет, то нет: в поисковой форме при вводе в строке поиска, фильтрация в выпадающем списке осуществляется корректно, как только мы выбрали нужный вариант, проверили детали (адреса) и решили поменять на другой вариант, удалив последние несколько символов, то фильтрация в выпадающем списке перестает работать до самой первой переменной. т.е. пока мы не удалим параметры поиска до самой первой буквы, варианты в выпадающем списке не появляются. (print screen во вложении "PS2")
Миниатюры
Создание автоматизированной анкеты с обновляемой базой данных   Создание автоматизированной анкеты с обновляемой базой данных  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.07.2015, 11:55
Помогаю со студенческими работами здесь

Создание многопользовательской работы с базой данных
Здравствуйте! Вопрос опытным программистам! Подскажите пожалуйста в нескольких словах, как правильнее реализовать...

Создание сетевой работы с базой данных
Всем привет!!! ))) Дана программа-библиотека. Подскажите как сделать так, чтобы бд этой программы редактировалась по сети с различных ПК,...

Создание приложения для работы с базой данных (firebird)
Есть база, подключенная к visual studio, а что с ней делать дальше не ясно. Раньше с этим не сталкивался, дайте пожалуйста ссылки, где...

Создание нового класса для работы с базой данных
Здравствуйте, необходимо создать класс в котором будут только методы для работы с базой данных. Нужно переместить содержимое кнопок в класс...

Создание автоматизированной таблицы
Нужно нацепить на сайт/приложение таблицу,суть такая,в ней календарь.Нужно чтобы в эту таблицу можно было "записываться",т.е....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru