Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу с формы через поле со списком / 22 сообщений из 22, страница 1 из 1
12.10.2009, 07:57
    #36244765
Галочка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Добрый день!

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

Заранее спасибо.
...
Рейтинг: 0 / 0
12.10.2009, 07:59
    #36244767
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Галочка,

нет ничего невозможного. Вам как: по простому или с понтами?
...
Рейтинг: 0 / 0
12.10.2009, 08:47
    #36244801
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Событие NotInList Ф1. В хелпе исчерпывающий пример.
...
Рейтинг: 0 / 0
12.10.2009, 08:47
    #36244802
Галочка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Честно говоря, без разницы :)
Главное, чтобы пользователям было удобнее работать.
Думаю, чем проще, тем лучше.
...
Рейтинг: 0 / 0
12.10.2009, 09:09
    #36244831
Галочка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
П-ЛСобытие NotInList Ф1. В хелпе исчерпывающий пример.

Спасибо. Но не срабатывает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub zap_NotInList(NewData As String, Response As Integer)
 Dim ctl As Control
   
    Set ctl = Me!zap ' поле со списком на форме
      If MsgBox("Нет такого в списке. Добавить?", vbOKCancel) = vbOK Then
        Response = acDataErrAdded
   
        ctl.RowSource = ctl.RowSource & ";" & NewData
    Else
        Response = acDataErrContinue
        ctl.Undo
    End If
End Sub

Программа задает вопрос, на него отвечаю и в ответ "Обнаружены символы за пределами SQL"
...
Рейтинг: 0 / 0
12.10.2009, 09:21
    #36244845
alvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Галочка,
...
Рейтинг: 0 / 0
12.10.2009, 11:31
    #36245199
отакота
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
ГалочкаНо не срабатывает.
ctl.RowSource = ctl.RowSource & ";" & NewData
Программа задает вопрос, на него отвечаю и в ответ "Обнаружены символы за пределами SQL"И программу тут можно даже понять. Если у вас в источнике строк списка написан SQL-строка (вида SELECT field1 from table1), а вы ей в конец дописываете введенный вами текст (вида Вася), то вы в итоге предлагаете своему списку такой источник:
Код: plaintext
1.
SELECT field1 from table1;Вася
что является синтаксической ошибкой

Вы говорите, что взяли этот пример из справки - все указывает на то, что в том примере у списка источником был НЕ запрос/таблица, а список значений.

Если в вашем случае источником является НЕ список значений, а запрос или таблица, то в приведенном вами коде вместо строки с добавлением NewData в RowSource, вам следует записать это NewData в виде новой записи непосредственно в ту самую таблицу, где эти значения хранятся.
...
Рейтинг: 0 / 0
13.10.2009, 05:26
    #36246933
Галочка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Спасибо всем за участие! Будем разбираться дальше.
...
Рейтинг: 0 / 0
27.10.2009, 20:15
    #36275679
Добавление записи в таблицу с формы через поле со списком
Граждане! таки как добавить в поле со списком значение не из источника?
суть

есть табла. из двух полей: ключ и значение
1 значение1
2 значение2
3 значение3

Есть форма, в которой есть список: берущий значение из таблы. список отображает значение
1
2
3

а надо
*новое значение
1
2
3


КАГ??????????????

заранее благодарю
...
Рейтинг: 0 / 0
27.10.2009, 21:08
    #36275733
отакота
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Виталики ГмбхГраждане! таки как добавить в поле со списком значение не из источника?
суть

есть табла. из двух полей: ключ и значение
1 значение1
2 значение2
3 значение3

Есть форма, в которой есть список: берущий значение из таблы. список отображает значение
1
2
3

а надо
*новое значение
1
2
3


КАГ??????????????

заранее благодарюЕсли у поля со списком тип источника (свойство RowSourceType) - Таблица/Запрос, то в таком списке показывается только записи из той самой таблицы/запроса. И если вы хотите показать в таком списке какое-то новое значение (которого в данный момент нет в источнике строк списка), вы обязаны добавить новую запись в его источник. Добавить такую запись в таблицу можно через рекордсет или запросом на вставку записей.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
01.06.2011, 15:03
    #37289369
Ridddick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Может тут помогут...
Подскажите, как добавить в таблицу данные из листбокса? Есть список на форме и несколько полей. Надо добавить записи в таблицу для каждого элемента списка, данные из других полей формы будут одинаковые для всех записей. Т.е. должно получиться к примеру 10 записей, у которых отличаться будут только значения поля, взятые из листбокса. Можно сделать рекордсетом, наверное, но уверен, что можно еще проще. Спасибо.

В листбоксе данные меняются вручную (ну почти), привязки к запросу нет.
...
Рейтинг: 0 / 0
01.06.2011, 20:07
    #37290122
CoolMind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Ridddick, насколько я понял из вашего сообщения, вы имеете листбокс на форме, в котором оператор выбирает несколько значений. После выбора он нажимает кнопею "Добавить", и все данные плавно перетекают оттуда туда. Но способ с рекордсетом вас отпугивает сложностью, поэтому вы не рискуете нажимать кнопею, а хотите использовать запрос или какой-нибудь мастер. Но, если честно, создатели Аксесса не думали, что им придётся решать такую вот сложную задачу и не решились создать такой мастер. Способ с запросом хитёр, потому что вам сначала нужно вычислить, какие строки выбрал юзер, а какие не решился, добавить их во временную таблицу, а затем через SELECT INTO вставить оттуда туда.
...
Рейтинг: 0 / 0
02.06.2011, 07:50
    #37290473
Ridddick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
CoolMind,

Вообще, мне надо все значения из листбокса загнать в таблицу. В листбоксе список периодически обновляется (полностью) извне. Есть ли способ без временной таблицы? Приведу пример запроса, где значения берутся не из листбокса, а из текстового файла, откуда берутся все и сразу:
Код: plaintext
1.
2.
INSERT INTO Основная ([№ Карты])
SELECT T.F1
FROM [Карты#txt] as T IN '' [text;HDR=No;database=C:\];
...
Рейтинг: 0 / 0
02.06.2011, 09:12
    #37290535
нутакэта
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
RidddickCoolMind,

Вообще, мне надо все значения из листбокса загнать в таблицу. В листбоксе список периодически обновляется (полностью) извне. Есть ли способ без временной таблицы? Приведу пример запроса, где значения берутся не из листбокса, а из текстового файла, откуда берутся все и сразу:
Код: plaintext
1.
2.
INSERT INTO Основная ([№ Карты])
SELECT T.F1
FROM [Карты#txt] as T IN '' [text;HDR=No;database=C:\];
это потому что текстовый файл - это ИСТОЧНИК, из которого можно сделать SELECT в запросе на вставку - точно так же как как если бы в качестве такого источника использовалась таблица БД.

В вашем же случае такого источника вы представить НЕ можете, ибо, как вы сами пишете, набор элементов вашего листбокса - это фактически массив значений в памяти. И чтобы вставить такой массив в таблицу в виде отдельных записей, вам надо перебрать в цикле элементы этого массива - и для каждого делать вставку записи - либо запросом типа INSERT INTO ... VALUES, либо через Recordset.AddNew.

Если край надо одним запросом, как вариант можно написать функцию, которая по индексу возвращает значение элемента списка, а потом, используя digits , вызывать эту функцию в разделе select в запросе на вставку

Код: plaintext
1.
2.
INSERT INTO Основная ([№ Карты])
SELECT MyFunction(digits.n) FROM digits WHERE n<=MyFunction(- 1 )
тут digits - источник с натуральным рядом чисел (поиск по форуму)
MyFunction - ваша функция, которая по индексу(параметру функции) возвращает значение элемента списка (а в случае -1 возвращает число элементо списка)
...
Рейтинг: 0 / 0
02.06.2011, 15:16
    #37291566
Ridddick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
нутакэта,

Спасибо за интересное решение, правда, все равно сделал перебором значений и вставкой через рекордсет.
...
Рейтинг: 0 / 0
03.06.2011, 08:36
    #37292700
Ridddick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
нутакэта,

Еще вопрос. У листбокса же тоже есть свойство recordset, почему его нельзя использовать в качестве источника и сделать из него SELECT? Или использовать его в качестве критерия "WHERE Поле IN Listbox.Recordset"?
...
Рейтинг: 0 / 0
03.06.2011, 08:41
    #37292710
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Риддик, у вас путаница понятий. Рекордсет RecordSet это набор данных в памяти. "Делать из него SELECT" нельзя. Соединить его с другим рекордсетом тоже нельзя. Но, поскольку рекордсет был открыт на основе корректной SQL инструкции, вы можете написать другую инструкцию так, чтобы там использовались данные рекордсета.
...
Рейтинг: 0 / 0
03.06.2011, 08:58
    #37292721
Ridddick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
П-Л,

Рекордсет у листбокса... он просто есть )) А данные в листбокс заносятся вручную, они соответствуют определенному полю таблицы (и отчета). Мне надо открыть отчет с условием выборки по данным этого листбокса, т.е. показать записи, касаемые только тех значений, что находятся в листбоксе на данный момент. Неужели нет простого механизма выборки значений из него? Без экспорта во временную таблицу никак не обойтись?
...
Рейтинг: 0 / 0
03.06.2011, 09:09
    #37292736
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Если значения в листбокс заносились из поля таблицы, то должна быть логика отбора этих значений. Если вы выразите ее не на VBA на SQL вы получите возможность и дальше работать через SQL.

Сколько еще раз вы будете спрашивать одно и то же ? Новых ответов вы не получите.
...
Рейтинг: 0 / 0
03.06.2011, 09:14
    #37292741
CoolMind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Ridddick, забейте на SQL и сделайте всё через AddNew рекордсета. По-моему, уж проще некуда (в данном случае).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.12.2015, 12:51
    #39133010
NickCo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
Позвольте поднять тему, не могу разобраться с процедурой обработки события.
Access 2010 в таблице создана связь один-ко-многим с другой таблицей для данного поля используется элемент поле со списком.
Задача та же, если выбранных данных нет в списке, добавить их в список. Поле со списком берет данные из таблицы.
Нашел скрипт обработки данного события, но никак ему ума не дам .
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Sub Тип_устройства_NotInList(NewData As String, Response As Integer)

    On Error GoTo Error_Handler
    Dim intAnswer As Integer
    intAnswer = MsgBox("""" & NewData & """ is not an approved category. " & vbcrlf _
        & "Do you want to add it now?" _ vbYesNo + vbQuestion, "Invalid Category")

    Select Case intAnswer
        Case vbYes
            DoCmd.SetWarnings False
            DoCmd.RunSQL "INSERT INTO tlkpCategoryNotInList (Category) "
               & _ "Select """ & NewData & """;"
            DoCmd.SetWarnings True
            Response = acDataErrAdded
        Case vbNo
            MsgBox "Please select an item from the list.", _
                vbExclamation + vbOKOnly, "Invalid Entry"
            Response = acDataErrContinue

    End Select

    Exit_Procedure:
        DoCmd.SetWarnings True
        Exit Sub

    Error_Handler:
        MsgBox Err.Number & ", " & Error Description
        Resume Exit_Procedure
        Resume

End Sub


Не понял только строку Запроса в Case vbYes, точнее понял, что выполняется SQL запрос на добавление к таблице-источнику записей поля со списком, (tlkpCategoryNotInList (Category)) и затем выбираются вставленные данные. Не понимаю, что значит tlkpCategoryNotInList (Category)?
По факту: Если для элемента поле со списком в Данных не задано поле "Форма изменения элементов списка" то при наступлении события просто выходит сообщение что нужно выбрать категорию, Если указанное поле задать, то просто открывается форма добавления записей в таблицу-источник. Можно ли сделать, чтоб необходимое значение добавлялось автоматом, с одним единственным вопросом, Добавить элемент в список? Да/Нет. По нажатии Да поле добавляется и выбирается в поле со списком, при нажатии нет, предлагается выбрать из имеющихся данных. И Если можно, то как?
...
Рейтинг: 0 / 0
21.12.2015, 17:22
    #39133540
Шыфл
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу с формы через поле со списком
NickCo,
tlkpCategoryNotInList (Category) - это табличка, источник данных для поля со списком. В неё записи добавляются, из неё потом составляется список
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу с формы через поле со списком / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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