Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление одной записи без исходной таблицы Аксесс2010 / 10 сообщений из 10, страница 1 из 1
28.05.2019, 14:18
    #39819307
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Здравствуйте.
В Аксессе 97 добавлял одну запись запросом без исходной таблицы (см. рис), обращаяся к этому запросу из ВБА
Код: vbnet
1.
DoCmd.OpenQuery "ДобавлениеЗаписи", acNormal, acAdd



В Акс.2010 требует исходную таблицу. Единственное в чем отличие (от примера в Акс.97) - это в данном случае таблица, в которую требуется добавить запись - является источником данных активной формы .
После анализа этой таблицы, формируютя значения полей новой записи.

Ввиду того, что значения полей новой записи последовательно формируются пользователем с помощью запросов, которые запрещают ввести несовместимые данные нельзя (или трудно) открыть доступ к новой запси в форме и заполнить ее.

Подскажите, действительно ли появилось ограничение? Или что-то я забыл?
...
Рейтинг: 0 / 0
28.05.2019, 14:39
    #39819327
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Игорь С, вероятно в режиме SQL ваш запрос выглядит так:
Код: plsql
1.
INSERT INTO [ИМя таблицы] (Поле1, Поле2, Поле3, Поле4) SELECT Функ1(), Функ2(), Функ3(), Функ4() 

Если А97 это и позволял, то это было отклонение от правил (была другая версия JET).
Для этой цели существует конструкция вида:
Код: plsql
1.
INSERT INTO [ИМя таблицы] (Поле1, Поле2, Поле3, Поле4) VALUES Функ1(), Функ2(), Функ3(), Функ4() 



Но что вам мешает в форме выполнить 4 функции - получить в переменных 4 значения - добавить запись в Recordset формы?
...
Рейтинг: 0 / 0
28.05.2019, 16:06
    #39819412
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
или даже так
Код: vbnet
1.
CurrentDb.Execute "INSERT INTO tbl(ctl,ctl1,ctl2) VALUES ('" & Me.полеТекст & "'," & Me.полеЧисло & ",'" & Me.полеДата & "')"
...
Рейтинг: 0 / 0
28.05.2019, 16:27
    #39819420
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
sdku, а если Null нужно вставить вместо любого значения?
...
Рейтинг: 0 / 0
28.05.2019, 17:25
    #39819445
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Панург,
если Null-фиг сработает
или обеспечить доступ к кнопке после заполнения всех полей
или менять текст запроса в зависимости от заполнения полей
или использовать RS
короче есть варианты(лично я использовал бы рекордсет)
...
Рейтинг: 0 / 0
28.05.2019, 20:47
    #39819500
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Кривцов Анатолий

Но что вам мешает в форме выполнить 4 функции - получить в переменных 4 значения - добавить запись в Recordset формы?

Вот спасибо.

Я и сам подумал про рекордсет. Но прочему в Рекордсет формы? Может быть прямо в Рекордсет таблицы (открыть и добавить)? (Ведь Рекордсет формы построен на достаточно сложном запросе и там может случиться что-нибуть непредвиденное ...)
...
Рейтинг: 0 / 0
28.05.2019, 21:07
    #39819504
Игорь С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Братцы!

На домашнем компьютере, тот же запрос, такой же Аксесс 2010 (из того же файла) сработал. Вот SQL (почищен от проверок на Нулл).

Код: plsql
1.
2.
INSERT INTO Project_Contract ( COD_Contract, COD_Project )
SELECT f_Processed_code() AS CC, f_Int() AS CP, *;
...
Рейтинг: 0 / 0
29.05.2019, 04:46
    #39819573
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Игорь С, всё же правильно писать данный запрос так
Код: sql
1.
INSERT INTO [ИмяТаблицы] (Поле1, Поле2, ...)  VALUES (Значение1, Значение2, ...)

Оба списка (полей и значений) должны быть симметричны и заключены в скобки.
Я предпочитаю такие запросы делать с параметрами - не надо парится с разными знаками (ковычками, диезами, запятыми-точками) и можно при надобности присваивать Null.
...
Рейтинг: 0 / 0
29.05.2019, 10:45
    #39819666
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Игорь СНо прочему в Рекордсет формы? Может быть прямо в Рекордсет таблицы (открыть и добавить)? (Ведь Рекордсет формы построен на достаточно сложном запросе и там может случиться что-нибуть непредвиденное ...) Если Рекордсет формы позволяет добавлять записи, то новая запись сразу видна в форме, Requery не потребуется.
Но можно и в Рекордсет таблицы. В любом случае это проще и надежнее чем запрос типа Insert...Values.
sdku или даже так
CurrentDb.Execute "INSERT INTO tbl(ctl,ctl1,ctl2) VALUES ('" & Me.полеТекст & "'," & Me.полеЧисло & ",'" & Me.полеДата & "')" В моем примере функции вызываются в самом запросе и при правильном типе возвращаемого значения все работает. А в вашем примере значения подставляются в текст запроса и тут начинается коррида - формат даты, "." - десятичный разделитель, вероятные кавычки внутри текста и Null.
Поэтому через Рекордсет (к тому же пустой) - лучшая альтернатива.

ЗЫ. Кстати, в запрос можно вставлять и Null как слово "Null", например:
... & NZ(Me.полеТекст,"Null") & ...
...
Рейтинг: 0 / 0
29.05.2019, 11:40
    #39819717
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос на добавление одной записи без исходной таблицы Аксесс2010
Кривцов Анатолий...Поэтому через Рекордсет (к тому же пустой) - лучшая альтернатива...
sdku....короче есть варианты(лично я использовал бы рекордсет) рекордсет-наше фсё
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос на добавление одной записи без исходной таблицы Аксесс2010 / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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