Форум программистов, компьютерный форум, киберфорум
Наши страницы

MS Access

Войти
Регистрация
Восстановить пароль
 
 
ИПЛ
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 7
#1

Задать имя поля в таблице через переменную в процедуре Акцесс - MS Access

08.09.2015, 20:59. Просмотров 755. Ответов 16
Метки нет (Все метки)

Всем привет! Прошу помощи. Есть таблица поля которой отображают компоненты сырья, а строки отображают название продукции в пересечении поля со строкой вводится количество сырья для данного продукта. Например БУЛКА1- мука,сахар,соль, вода и т.д (всего позиций сырья до 49). Так вот каждое изделие состоит из отдельных компонентов. Я через форму ввожу новый продукт, тем самым добавляю новую запись, при этом в форме выбираю компоненты из которого сделан продукт. Можно конечно задать значение каждому полю таблицы на прямую
rsProd![Имя]=Булка2
rsProd![1]=20
rsProd![2]=30, и т.д. Но таких позиций 49, при этом для каждого продукта вводятся разные компоненты и в каждой продукции их в пределе 11, в остальных полях с неиспользуемым сырьем устанавливается значение 0 по умолчанию
В форме я использую поле со списком источником данных которого является таблица Справочник сырья, таких полей со списком у меня 11. При нажатии кнопки добавить запись я создаю переменную которая отображает имя поля
S1 = Me!ПсП1.Value - переменная которая отображает код сырья в таблице Справочник сырья, данный код соответствует имени поля отображающего вид сырья в таблице Справочник продукции
P1 = rsProd.Fields(S1).Name - данная переменная отображает имя поля в которое надо ввести данные по количеству сырья.
Теперь мне надо при добавлении новой записи задать значение полю с данным именем, я пишу rsProd![P1] = П03 (поле в форме П03 в которое я ввожу которое я ввожу количество сырья) И вот тут Акцесс мне говорит что "Элемент не обнаружен в данном семействе" и соответственно данные в таблицу не добавляются. Что делать? Что я делаю не так? Прошу помогите!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2015, 20:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задать имя поля в таблице через переменную в процедуре Акцесс (MS Access):

Как задать размер поля в таблице, которая создается через запрос? - MS Access
Доброго дня В БД есть запрос, который формирует таблицу из связанного файла SELECT CStr(S.Арт) AS Артикул INTO Отчет FROM Super; ...

Как программно задать поля в отчете Акцесс? Типа слева=10мм, справа 5 мм. - MS Access
А то сбиваются.

Как задать размер колонок в таблице, через VBA? - MS Access
Как задать размер колонок в таблице, через VBA? Я создаю таблицу через VBA, а после заполняю и печатаю. Единственная проблема, перед...

Суммирование количества значения поля в запросе - глюк акцесс? - MS Access
Доброго дня! Цель запроса: посчитать количество посещений учеником занятия. Запрос: SELECT Занятия., Sum(Занятия.) AS FROM...

Последовательный ввод данных в форму, основанную на одной таблице через обновляющиеся поля со списками - MS Access
Здравствуйте! Скажите пожалуйста, возможно ли создание последовательного ввода данных в форму, основанную на одной таблице через...

Как сделать новую запись в Акцесс через VBA - MS Access
Всем привет. Приложение на Акцесс. 0. По нажатию кнопки открываем книгу Ексель, считываем нужные ячейки. 1. Заносим их в таблицу...

16
ltv_1953
12022 / 5497 / 1007
Регистрация: 21.06.2012
Сообщений: 9,833
08.09.2015, 22:57 #2
Цитата Сообщение от ИПЛ Посмотреть сообщение
Что делать?
Это - стандартное одноуровневое сборочное производство. Если оставить только задание норм (забыть о ценах, приходах сырья, производстве продукции, реализации, ...) - то сгодится база во вложении.
0
Вложения
Тип файла: 7z Database139.7z (14.9 Кб, 7 просмотров)
ИПЛ
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 7
09.09.2015, 10:50  [ТС] #3
Все очень здорово. Но Вы меня не поняли. Я хочу автоматизировать процесс ввода продукции 49 наименований сырья, 27 видов наименований продукции и возможно список продукции будет расширяться. В каждом виде продукции может присутствовать одно и тоже сырье но в разных количествах. Я хочу через форму заполнять "Справочник продукции" используя 11 полей со списком (так как каждый продукт не превышает 11 компонентов сырья). При вводе новой записи в "Справочник продукции" мне надо разнести данные (наименование продукции и сырье в кг.) по полям справочника где имя поля соответствует Коду сырья в "Справочнике сырья". Как мне это сделать в программном коде? Как мне через переменную задать имя поля чтобы добавить данные в конкретное поля при добавления новой строки (продукта). Если я пишу rstProd![ИмяПрод]=П1 то он (Акцесс) без проблем добавляет запись в поле, но стоит мне ввести переменную вместо имени поля например rstProd![S1], где S1 - это Имя поля (P1 = Me!ПСп1.Value
S1 = rsProd.Fields(P1).Name) P1 соответствует номеру поля в Справочнике продукции и соответствует Коду сырья, то Акцесс отказывается вводить данные в поле указанное переменной. Как решить эту задачу?
0
mobile
21576 / 12185 / 2415
Регистрация: 28.04.2012
Сообщений: 13,397
09.09.2015, 10:55 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Переменную можно использовать, но в ином синтаксисе
Visual Basic
1
rstProd(S1)= П1
0
ltv_1953
12022 / 5497 / 1007
Регистрация: 21.06.2012
Сообщений: 9,833
09.09.2015, 11:00 #5
Вы базу смотрели. В таблицу Продукция вносится новая запись, в подчиненную ей - коды используемого сырья и норма расходования - что не так? Если, как и положено, делать ввод в формах, то в поле со списком можно будет выбирать сырье по текстовому обозначению ... .
0
ИПЛ
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 7
09.09.2015, 12:17  [ТС] #6
Цитата Сообщение от mobile Посмотреть сообщение
Переменную можно использовать, но в ином синтаксисе
Код Visual BasicВыделить код
1
rstProd(S1)= П1
К сожалению поле таблицы с именем переменной S1 не получает значение П1, в поле остается значение по умолчанию 0

Добавлено через 4 минуты
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Вы базу смотрели. В таблицу Продукция вносится новая запись, в подчиненную ей - коды используемого сырья и норма расходования - что не так? Если, как и положено, делать ввод в формах, то в поле со списком можно будет выбирать сырье по текстовому обозначению ... .
К сожалению я хочу создать простую без заморочек форму, которую я буду использовать довольно редко. Я натолкнулся на проблему и хочу ее принципиально решить. Проще было бы ручками внести данные в таблицу чем мудрить с формой
0
ltv_1953
12022 / 5497 / 1007
Регистрация: 21.06.2012
Сообщений: 9,833
09.09.2015, 12:25 #7
Угу - дерзайте. Один такой уже здесь плакался - сначала было 50 материалов, потом стало 300 (в одну таблицу уже не помещались, в таблицах не больше 255 полей), потом и в форме полей стало не хватать ... .
0
shanemac51
Модератор
6723 / 2576 / 351
Регистрация: 07.08.2010
Сообщений: 6,949
Записей в блоге: 1
09.09.2015, 12:36 #8
макет решения
0
Миниатюры
Задать имя поля в таблице через переменную в процедуре Акцесс  
Вложения
Тип файла: zip Db150909m.zip (44.9 Кб, 5 просмотров)
ИПЛ
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 7
09.09.2015, 12:40  [ТС] #9
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Угу - дерзайте. Один такой уже здесь плакался - сначала было 50 материалов, потом стало 300 (в одну таблицу уже не помещались, в таблицах не больше 255 полей), потом и в форме полей стало не хватать ... .
Не обижайтесь пожалуйста. Мне просто нужно понять в чем моя ошибка. Может синтаксис неправильный или еще что. А на счет формы я наоборот хочу ее сделать как можно проще и ручками работать как можно меньше. лучше подскажите как правильно написать программный код, чтобы в поле вставлялись нужные мне данные. Вот при таком написании rstProd(S1)= П1 Акцесс распознает данный элемент, но не задает значение полю.
0
shanemac51
Модератор
6723 / 2576 / 351
Регистрация: 07.08.2010
Сообщений: 6,949
Записей в блоге: 1
09.09.2015, 12:42 #10
К сожалению я хочу создать простую без заморочек форму, которую я буду использовать довольно редко. Я натолкнулся на проблему и хочу ее принципиально решить. Проще было бы ручками внести данные в таблицу чем мудрить с формой
в екселе --да, легче, там в столбике автоматически создается автофильтр для текстовиков

в аксессе --же полная набивка + только 255 столбцов +.....
=======
а ведь вам и отчеты какие то понадобятся, типа
--сколько муки, соли, ..... надо для обеспечения дневного/недельного/месячного плана
--чего не хватает в первую очередь(план-заказ)
...........
0
mobile
21576 / 12185 / 2415
Регистрация: 28.04.2012
Сообщений: 13,397
09.09.2015, 13:15 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ИПЛ Посмотреть сообщение
К сожалению поле таблицы с именем переменной S1 не получает значение П1, в поле остается значение по умолчанию 0
Вы где-то ошибаетесь. Выберите поле на форме, задайте значение и нажмите кнопку. Смотрите код процедуры на кнопке btn формы frm
0
Вложения
Тип файла: rar ИПЛ.rar (17.7 Кб, 5 просмотров)
ИПЛ
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 7
09.09.2015, 16:01  [ТС] #12
Цитата Сообщение от mobile Посмотреть сообщение
Вы где-то ошибаетесь. Выберите поле на форме, задайте значение и нажмите кнопку. Смотрите код процедуры на кнопке btn формы frm
Ну вроде бы все красиво, но Вы вводите данные только в одно поле одной строки, а мне надо одновременно добавлять до 11 полей. Ну может быть не в этом дело конечно. Я делаю практически тоже самое что и Вы. Но у меня данные не вносятся если я применяю переменную. Буду думать в чем причина. Спасибо! Если сможете помочь найти мою ошибку буду признателен. Я просто уже больше 10 лет не сидел в Акцессе и честно говоря все забыл, если еще учесть что я дилетант в этом деле. Так пишу для себя по мере потребности.

Добавлено через 3 минуты
Да забыл добавить. во всех полях которые я использую через переменную заложено значение по умолчанию 0, это как то может повлиять на мою ситуацию? Так как в поле которое я хочу добавить значение после обновления (Update) остается 0

Добавлено через 2 часа 4 минуты
Всем спасибо, Все работает.
Хотел бы задать один вопрос. В числовое поле в таблице не могу ввести значение 0,001. После выхода из поля в поле остается значение 0. Размер поля ставлю Длинное целое, формат поля с разделителем разряда, Число десятичных знаков 3, но после ввода 0,001 в поле остается 0,000. В чем дело?
0
PuhKMV
5626 / 3151 / 319
Регистрация: 27.03.2013
Сообщений: 11,635
09.09.2015, 17:39 #13
Цитата Сообщение от ИПЛ Посмотреть сообщение
...ставлю Длинное целое...,
Попробуйте поставить - Действительное.
0
ИПЛ
0 / 0 / 0
Регистрация: 08.09.2015
Сообщений: 7
10.09.2015, 07:10  [ТС] #14
Ничего не получается, Не могу задать значение в поле таблицы с десятичными знаками. Если пишу 0,1 то в поле только 0. В первый раз такое вижу. может это особенности Акцесс 2007? В Акцесс 97 я с такими вещами не сталкивался. Помогите решить эту проблему
Цитата Сообщение от PuhKMV Посмотреть сообщение
Попробуйте поставить - Действительное.
Это тоже не помогает.
0
PuhKMV
5626 / 3151 / 319
Регистрация: 27.03.2013
Сообщений: 11,635
10.09.2015, 07:43 #15
Цитата Сообщение от ИПЛ Посмотреть сообщение
...не помогает....
У себя я обычно делаю так и у меня помогает.
0
Миниатюры
Задать имя поля в таблице через переменную в процедуре Акцесс  
Изображения
 
10.09.2015, 07:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2015, 07:43
Привет! Вот еще темы с ответами:

Как программно через акцесс напечатать созданные снапшот-файлы? - MS Access
В принципе это еще один вариант моего вопроса http://www.cyberforum.ru/ms-access/thread23527.html Можно ли напечатать через акцесс 2000...

Поиск записей в одной таблице, где значения ключевого поля не совпадают с полем в другой таблице - MS Access
Имеется Access XP, надо создать запрос для поиска записей в таблице ТОВАРЫ,где значения ключевого поля (Артикул) не совпадают со значениями...

Ошибка при создании поля таблицы и указании расположения поля в таблице - MS Access
Пытаюсь создать поле с указанием его расположения в таблице. Пока безрезультатно ALTER TABLE AAA ADD COLUMN 12 VARCHAR(100) AFTER 11

Обновление одного поля таблицы, при заполнении поля в другой таблице - MS Access
Друзья помогите новичку! Есть две таблицы -продажа(id продажи, сумма продажи) -скидка(id скидки, id продажи, скидка 15%) Как...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru