powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записей в главную и подчиненную таблицу
14 сообщений из 14, страница 1 из 1
Добавление записей в главную и подчиненную таблицу
    #39240846
j_onion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартная ситуация - есть основная таблица и подчиненная ей по ключевому полю. Как можно из sql запроса добавить запись вглавную и под соответствующий значением связанного поля добавить данные в подчиненную таблицу?
...
Рейтинг: 0 / 0
Добавление записей в главную и подчиненную таблицу
    #39240849
j_onionСтандартная ситуация - есть основная таблица и подчиненная ей по ключевому полю. Как можно из sql запроса добавить запись вглавную и под соответствующий значением связанного поля добавить данные в подчиненную таблицу?

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

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

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

и

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

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

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

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

Вопрос в том, существуют ли в аксесс методы для вставки записи в главную таблицу и соответствующих записей в подчиненную в ОДНОМ запросе с получением ID внутри запроса?
...
Рейтинг: 0 / 0
Добавление записей в главную и подчиненную таблицу
    #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
Добавление записей в главную и подчиненную таблицу
    #39241143
Volunteer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю, проблема в следующем: в подчиненную таблицу с автонумерацией в ключевом поле нужно добавить запись, а затем код новой записи вставить в основную таблицу. Если так, то делается многими способами, вот пара самых простых:
1. связать основную и подчиненную на форме через свойства Link Master Fields и Link Child Fields, акцесс сделает все сам без какого-либо вмешательства
2. добавлять запись в подчиненную таблицу не через инсерт, а через рекордсет, тогда новое значение ключевого поля будет известно рекордсету сразу после добавления новой записи через .AddNew
...
Рейтинг: 0 / 0
Добавление записей в главную и подчиненную таблицу
    #39241226
\\\\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Volunteer, чукча, однако, не читатель? ©
...
Рейтинг: 0 / 0
Добавление записей в главную и подчиненную таблицу
    #39241252
Volunteer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
\\\\Volunteer, чукча, однако, не читатель? ©
Ок, я пропустил кое-что.
1. Нет, в одном SQL запросе без применения data macro вставить данные в 2 таблицы нельзя.
2. Пропустил вопрос: зачем это нужно делать именно в SQL и именно в одном? Обычно SQL выполняют все-же используя VBA, поэтому предположил, что можно использовать более эффективные методы там же.

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

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

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

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

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


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

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

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


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