powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу с формы через поле со списком
22 сообщений из 22, страница 1 из 1
Добавление записи в таблицу с формы через поле со списком
    #36244765
Галочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

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

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

нет ничего невозможного. Вам как: по простому или с понтами?
...
Рейтинг: 0 / 0
Добавление записи в таблицу с формы через поле со списком
    #36244801
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Событие NotInList Ф1. В хелпе исчерпывающий пример.
...
Рейтинг: 0 / 0
Добавление записи в таблицу с формы через поле со списком
    #36244802
Галочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Честно говоря, без разницы :)
Главное, чтобы пользователям было удобнее работать.
Думаю, чем проще, тем лучше.
...
Рейтинг: 0 / 0
Добавление записи в таблицу с формы через поле со списком
    #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
Добавление записи в таблицу с формы через поле со списком
    #36244845
alvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Галочка,
...
Рейтинг: 0 / 0
Добавление записи в таблицу с формы через поле со списком
    #36245199
отакота
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГалочкаНо не срабатывает.
ctl.RowSource = ctl.RowSource & ";" & NewData
Программа задает вопрос, на него отвечаю и в ответ "Обнаружены символы за пределами SQL"И программу тут можно даже понять. Если у вас в источнике строк списка написан SQL-строка (вида SELECT field1 from table1), а вы ей в конец дописываете введенный вами текст (вида Вася), то вы в итоге предлагаете своему списку такой источник:
Код: plaintext
1.
SELECT field1 from table1;Вася
что является синтаксической ошибкой

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

Сколько еще раз вы будете спрашивать одно и то же ? Новых ответов вы не получите.
...
Рейтинг: 0 / 0
Добавление записи в таблицу с формы через поле со списком
    #37292741
Фотография CoolMind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ridddick, забейте на SQL и сделайте всё через AddNew рекордсета. По-моему, уж проще некуда (в данном случае).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Добавление записи в таблицу с формы через поле со списком
    #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
Добавление записи в таблицу с формы через поле со списком
    #39133540
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickCo,
tlkpCategoryNotInList (Category) - это табличка, источник данных для поля со списком. В неё записи добавляются, из неё потом составляется список
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу с формы через поле со списком
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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