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



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

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

Подскажите, действительно ли появилось ограничение? Или что-то я забыл?
...
Рейтинг: 0 / 0
Запрос на добавление одной записи без исходной таблицы Аксесс2010
    #39819327
Игорь С, вероятно в режиме 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
Запрос на добавление одной записи без исходной таблицы Аксесс2010
    #39819412
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или даже так
Код: vbnet
1.
CurrentDb.Execute "INSERT INTO tbl(ctl,ctl1,ctl2) VALUES ('" & Me.полеТекст & "'," & Me.полеЧисло & ",'" & Me.полеДата & "')"
...
Рейтинг: 0 / 0
Запрос на добавление одной записи без исходной таблицы Аксесс2010
    #39819420
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, а если Null нужно вставить вместо любого значения?
...
Рейтинг: 0 / 0
Запрос на добавление одной записи без исходной таблицы Аксесс2010
    #39819445
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
если Null-фиг сработает
или обеспечить доступ к кнопке после заполнения всех полей
или менять текст запроса в зависимости от заполнения полей
или использовать RS
короче есть варианты(лично я использовал бы рекордсет)
...
Рейтинг: 0 / 0
Запрос на добавление одной записи без исходной таблицы Аксесс2010
    #39819500
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов Анатолий

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

Вот спасибо.

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

На домашнем компьютере, тот же запрос, такой же Аксесс 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
Запрос на добавление одной записи без исходной таблицы Аксесс2010
    #39819573
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь С, всё же правильно писать данный запрос так
Код: sql
1.
INSERT INTO [ИмяТаблицы] (Поле1, Поле2, ...)  VALUES (Значение1, Значение2, ...)

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

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


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