Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2010, 18:40   #1
Botanik1987
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 38
По умолчанию Сохранить значение из списка в таблицу

Всем добрый вечер
Проблема такая:
Имеется форма, на которой есть два поля (ПолеСоСписком и Список)
Значение (только одно) в Списке появляется на основе запроса после ввода данных в ПолеСоСписком.
Далее необходимо записать значение из ПоляСоСписком и значение из Списка в таблицу.Использую такой код:
Dim rstTRS As DAO.Recordset
Set dbs = CurrentDb
' Записываем данные в таблицу Расход_семян'
Set rstTRS = dbs.OpenRecordset("Расход_семян")
With rstTRS
.AddNew
!Дата = Me!Поле0
!Вид_работы = Me!ПолеСоСписком2
!Культура = Me!Список8
!Расход = Me!Поле14
.Update
End With
rstTRS.Close


При сохранении база ругается, что не может вытащить значение из Списка (поле "Культура" является ключевым в таблице и не может быть пустым)
Подскажите, плз, как мне решить эту проблему.Заранее спасибо
Botanik1987 вне форума Ответить с цитированием
Старый 25.03.2010, 22:05   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Botanik1987.
В коде и тексте сообщения описаны только те свойства и методы объектов которые Вы считает важными. Уверяю не менее важны и другие для описания которых понадобиться не одна страница и не один час времени.
А без полноценного анализа, объяснение "на пальцах" не дает желаемого результата (и с анализом такое "объяснение" мало эффективно).
Выложите архив с заранее подготовленным (избавленным от избыточных данных, OLE объектов,.... и сжатый средствами MS Access) файлом БД с описанием "проблемы", и на примере Вашей БД можно будет продемонстрировать способы решения Вашей задачи.

Евгений.

P.S.
1. "..есть два поля (ПолеСоСписком и Список).." - кол-во контролов, как выяснилось по тексту четыре, скобки вводят в заблуждение .
2. размещая в сообщении код, для удобочитаемости заключайте его в тэги [соde]...[/соde] (для этого предназначена кнопка #)
Teslenko_EA вне форума Ответить с цитированием
Старый 26.03.2010, 15:26   #3
Botanik1987
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 38
По умолчанию

Евгений, добрый день.Вышенаписанную проблему я решил, но появился ещё вопрос-новую тему создавать не буду.
В форме имеются два поля со списком: вид и наименование
У поля1(вид) фиксированные 3 значения:удобрения,средства защиты и семена.
Значения поля2 выбираются из разных таблиц,одноименных со значениями поля вид(то, что они одноимённые-не имеет значения) в зависимости от выбора значения в поле наименование
Вопрос в следующем: Как при помощи VBA реализовать процедуру присвоения свойству поля наименование разного источника строк(разных запросов), в зависимости от выбора значения в поле вид.
Таблицы никак не связаны друг с другом,в каждой таблице перечислены без повторений наименования(удобрений, средств защиты и семян соответственно).
Очевидно, что это нужно делать с помощью оператора If Then Else

Код ниже
Код:
Private Sub Поле1_Click()
If Me.Поле1.Value = "удобрения" Then
??????????
Me.Поле2.Requery
Else
If Me.Поле1.Value = "средства защиты растений" Then
??????????
Me.Поле2.Requery
Else
If Me.Поле1.Value = "семена" Then
??????????
Me.Поле2.Requery
Else

End If
End If
End If
End Sub
заранее спасибо
Botanik1987 вне форума Ответить с цитированием
Старый 26.03.2010, 17:07   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Не вникая в суть "проблемы", конструкция ветвления может выглядеть так:
Код:
Dim s$: s = Me.Поле1 & ""
If s = "удобрения" Then
    '??????????
ElseIf s = "средства защиты растений" Then
    '??????????
ElseIf s = "семена" Then
    '??????????
End If
Me.Поле2.Requery
или так:
Код:
Dim s$: s = Me.Поле1 & ""
Select Case s
Case "удобрения"
    '??????????
Case "средства защиты растений"
    '??????????
Case "семена"
    '??????????
End Select
Me.Поле2.Requery
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 26.03.2010, 18:48   #5
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Не вникая в суть "проблемы"..
А если в суть вникнуть, то тут явная ошибка структуры..
Все эти "семена", "удобрения" и пр., судя по коду, являются значениями из словаря.. Похоже автору нужно над структурой потрудиться..
Abrakadabra вне форума Ответить с цитированием
Старый 27.03.2010, 11:59   #6
Botanik1987
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Abrakadabra Посмотреть сообщение
А если в суть вникнуть, то тут явная ошибка структуры..
Все эти "семена", "удобрения" и пр., судя по коду, являются значениями из словаря.. Похоже автору нужно над структурой потрудиться..
В смысле "из словаря"?
В полесосписком с свойстве "источник строк" указан "список значений", а в этом списке я и вписал три значения (семена, удобрения и средства защиты)
Есть таблица "Удобрения" с одним полем "Наименование", в которой перечислены все удобрения.Аналогично с семенами и средствами защиты.

Евгений, Вы опять меня не так понялиОператоры выбора я знаю.
Напишу по-русски:
Код:
Если поле1="удобрения"
То поле2=значения из таблицы "удобрения" (именно это и вызывает у меня трудности-то,как присвоить свойству "Источник данных" поля2 запрос именно из таблицы "удобрения")
Иначе
Если поле1="семена"
То поле2=значения из таблицы "семена" (именно это и вызывает у меня трудности-то,как присвоить свойству "Источник данных" поля2 запрос именно из таблицы "семена")
Иначе
Если поле1="средства защиты"
То поле2=значения из таблицы "средства защиты" (именно это и вызывает у меня трудности-то,как присвоить свойству "Источник данных" поля2 запрос именно из таблицы "средства защиты")
Иначе
.......
Botanik1987 вне форума Ответить с цитированием
Старый 27.03.2010, 21:50   #7
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Цитата:
Сообщение от Botanik1987 Посмотреть сообщение
В смысле "из словаря"?
ИМХО, в таких случаях лучше использовать таблицу-словарь, в которой будут ваши "семена", "удобрения" и прочее, и поле, идентифицирующее запись (числовое).
Тогда и Ваше "Поле1" можно сделать числовым, что с точки зрения построения бд более рациональное решение, а источником поля сделать запрос.. (табл. "словарь"). И процедура Ваша работать будет намного быстрее.. Я об этом говорил.

По второй части вопроса:
Поле2.RowSource = "SELECT НУЖНЫЕ ПОЛЯ from ИмяТаблицы"
Abrakadabra вне форума Ответить с цитированием
Старый 27.03.2010, 22:00   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Botanik1987,
".. Вы опять меня не так поняли..", могу подсказать Вам как с этим "бороться" - выкладывайте архив с образцом и "непонимание" будет побеждено.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 07.04.2010, 11:44   #9
Botanik1987
Пользователь
 
Регистрация: 26.09.2008
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Abrakadabra Посмотреть сообщение
Поле2.RowSource = "SELECT НУЖНЫЕ ПОЛЯ from ИмяТаблицы"
Благодарю,Вы мне очень помогли)

Есть ещё вопросик, не помню,задавал ли я его уже...:

Имеется запрос(к примеру):
SELECT Таблица1.Поле1, Таблица2.Поле1 from ИмяТаблицы1, ИмяТаблицы2...

Допустим, В таблице1 нет данных.В таком случае надо, чтобы полю (выводящему значение Таблица1.Поле1) формы(источником данных которой является этот запрос) призваивалось бы значение "0"

Можно ли это сделать?
Спасибо заранее))
Botanik1987 вне форума Ответить с цитированием
Старый 07.04.2010, 20:23   #10
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
По умолчанию

Вы уверены, что правильным путем идете? (В ваших рассуждениях нет логики: если в таблице нет записей, то значение поля не может ничему равняться, даже "0"). Сделать конечно же можно, подсчитав кол-во записей, и если их нет, то Вашему полю присвоить значение "0", но правильно ли это будет? Вы это значение в вычислениях используете? Опишите подробно, что Вы хотите, чтобы не городить тут, не зная цели, а лучше выложите пример.
Abrakadabra вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить отсортированную таблицу Kingson Microsoft Office Access 12 22.12.2009 13:23
Последнее значение в столбце списка ALev Microsoft Office Excel 2 02.07.2009 16:29
Как правильно сохранить данные в таблицу??? kAtenok87 PHP 4 07.05.2009 11:24
[Prolog] Преобразование списка в таблицу girlll Помощь студентам 1 07.04.2009 23:29
Как сохранить значение Edit после закрытия tarakan1983 Помощь студентам 14 11.09.2008 08:25