Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записей в главную и подчиненную таблицу / 14 сообщений из 14, страница 1 из 1
22.05.2016, 09:54
    #39240846
j_onion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Стандартная ситуация - есть основная таблица и подчиненная ей по ключевому полю. Как можно из sql запроса добавить запись вглавную и под соответствующий значением связанного поля добавить данные в подчиненную таблицу?
...
Рейтинг: 0 / 0
22.05.2016, 10:27
    #39240849
Добавление записей в главную и подчиненную таблицу
j_onionСтандартная ситуация - есть основная таблица и подчиненная ей по ключевому полю. Как можно из sql запроса добавить запись вглавную и под соответствующий значением связанного поля добавить данные в подчиненную таблицу?

* Стандартная ситуация
- увы, стандартная.

Не надо лукавить.

добавить запись вглавную

и

добавить данные в подчиненную

Что есть данные ?
Запись?
Нескольо записей?
Запорнить пустые до этого поля в существующих записях?
.
...
Рейтинг: 0 / 0
22.05.2016, 12:20
    #39240865
j_onion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
капча-пироги-я-не-робот,

Данные - есть несколько записей.
Я знаю про методы с извращениями типа:
INSERT INTO users (fio) VALUES ('Иванов И.И.');
SELECT id FROM users WHERE fio = 'Иванов И.И.';

Но это два разных запроса+небезопасный метод и всё такое.

Вопрос в том, существуют ли в аксесс методы для вставки записи в главную таблицу и соответствующих записей в подчиненную в ОДНОМ запросе с получением ID внутри запроса?
...
Рейтинг: 0 / 0
22.05.2016, 18:53
    #39240956
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Может под столь витиеватым вопросом подразумевалось - Добавить какоеени то значение в справочник, если его там нет, типачто та на подобии:

Private Sub КодВидаДокумента_NotInList(NewData As String, Response As Integer)
Dim s
s = "ВидДокумента '" & NewData & "' нет в списке. " & vbCrLf _
& " Внести - ОК; Вернуться для выбора - Отмена"
If MsgBox(s, vbOKCancel) = vbOK Then
CurrentDb.Execute "insert into ВидыДокументов(ВидДокумента) values('" & NewData & "')"
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
...
Рейтинг: 0 / 0
23.05.2016, 09:33
    #39241143
Volunteer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Я так понимаю, проблема в следующем: в подчиненную таблицу с автонумерацией в ключевом поле нужно добавить запись, а затем код новой записи вставить в основную таблицу. Если так, то делается многими способами, вот пара самых простых:
1. связать основную и подчиненную на форме через свойства Link Master Fields и Link Child Fields, акцесс сделает все сам без какого-либо вмешательства
2. добавлять запись в подчиненную таблицу не через инсерт, а через рекордсет, тогда новое значение ключевого поля будет известно рекордсету сразу после добавления новой записи через .AddNew
...
Рейтинг: 0 / 0
23.05.2016, 10:50
    #39241226
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Volunteer, чукча, однако, не читатель? ©
...
Рейтинг: 0 / 0
23.05.2016, 11:15
    #39241252
Volunteer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
\\\\Volunteer, чукча, однако, не читатель? ©
Ок, я пропустил кое-что.
1. Нет, в одном SQL запросе без применения data macro вставить данные в 2 таблицы нельзя.
2. Пропустил вопрос: зачем это нужно делать именно в SQL и именно в одном? Обычно SQL выполняют все-же используя VBA, поэтому предположил, что можно использовать более эффективные методы там же.

Data macro - медленная вещь, источник потенциальных проблем, лучше избегать. Если делать через последовательные SQL, то в многопользовательсткой среде могут быть проблемы с поиском вставленной записи, даже при использовании транзакций
...
Рейтинг: 0 / 0
23.05.2016, 11:20
    #39241256
Volunteer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Впрочем, если открыть транзакцию, то можно будет искать по максимальному номеру в ключевом поле, должно работать.

Также можно перейти на ручную нумерацию ключевого поля - брать следующее значение из таблицы и вставлять уже готовые строки в обе таблицы двумя командами, зная новое ключевое поле.
...
Рейтинг: 0 / 0
23.05.2016, 11:49
    #39241284
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Volunteerто в многопользовательсткой среде могут быть проблемы с поиском вставленной записи, даже при использовании транзакций

да никаких там проблем не будет, и транзакции не нужны...

- пишешь запрос на добавление только в подчиненную таблицу
- на связное ключевое поле по главной таблице пишешь функцию поиска ключа в главной таблице и всё...
Что делает функция:
1. получает на вход загружаемое значение в главную таблицу (обычно текст).
2. Ищет это значение в главной таблице (DLookup) и возвращает его ID...
Если в главной таблице значения нет, то через DAO (AddNew) вставляем это значение, в процессе получаем ID новой главной записи и так же возвращаем в запрос...

Ну, костыль, да... зато проверенный и рабочий на все 100 (хоть моно, хоть стерео, хоть квадро)
...
Рейтинг: 0 / 0
23.05.2016, 12:05
    #39241299
Volunteer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
vmag1. получает на вход загружаемое значение в главную таблицу (обычно текст).


А если вставляемые данные не уникальны? Ну второй Иванов И.И. пришел? Правильно, DLookup вернет первого попавшегося Иванова, т.е. старого, скорее всего.
...
Рейтинг: 0 / 0
23.05.2016, 12:40
    #39241336
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
Volunteer....в подчиненную таблицу с автонумерацией в ключевом поле нужно добавить запись, а затем код новой записи вставить в основную таблицу...Это как?
Код из подчиненной вставить в основную?
Разве такое возможно?
Вам обеспечение целостности данных не позволит создать запись в подчиненной до наличия связанной записи в основной.
...
Рейтинг: 0 / 0
23.05.2016, 12:42
    #39241337
-Ботан-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
FAQ вопрос Q8: Как получить значение счетчика только что добавленной записи?
...
Рейтинг: 0 / 0
23.05.2016, 12:49
    #39241345
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
VolunteerА если вставляемые данные не уникальны? Ну второй Иванов И.И. пришел? Правильно, DLookup вернет первого попавшегося Иванова, т.е. старого, скорее всего.

Это уже из другой области... думаю что при заполнении главной таблицы должны быть какие-то условия, которые просто нужно соблюдать тем или иным образом... единственное, этот костыль при потоке предусматривает построчную обработку данных (тем же DAO например) а не всё скопом...
...
Рейтинг: 0 / 0
23.05.2016, 13:03
    #39241354
Volunteer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записей в главную и подчиненную таблицу
__MichelleЭто как?
Код из подчиненной вставить в основную?

Извиняюсь, конечно имелось в виду вставить строку в основную, а затем ключ скопировать в подчиненную таблицу. Держал в голове основную и подчиненную (субформу) формы, где термины наоборот :)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записей в главную и подчиненную таблицу / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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