|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Стандартная ситуация - есть основная таблица и подчиненная ей по ключевому полю. Как можно из sql запроса добавить запись вглавную и под соответствующий значением связанного поля добавить данные в подчиненную таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2016, 09:54 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
j_onionСтандартная ситуация - есть основная таблица и подчиненная ей по ключевому полю. Как можно из sql запроса добавить запись вглавную и под соответствующий значением связанного поля добавить данные в подчиненную таблицу? * Стандартная ситуация - увы, стандартная. Не надо лукавить. добавить запись вглавную и добавить данные в подчиненную Что есть данные ? Запись? Нескольо записей? Запорнить пустые до этого поля в существующих записях? . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2016, 10:27 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
капча-пироги-я-не-робот, Данные - есть несколько записей. Я знаю про методы с извращениями типа: INSERT INTO users (fio) VALUES ('Иванов И.И.'); SELECT id FROM users WHERE fio = 'Иванов И.И.'; Но это два разных запроса+небезопасный метод и всё такое. Вопрос в том, существуют ли в аксесс методы для вставки записи в главную таблицу и соответствующих записей в подчиненную в ОДНОМ запросе с получением ID внутри запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2016, 12:20 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Может под столь витиеватым вопросом подразумевалось - Добавить какоеени то значение в справочник, если его там нет, типачто та на подобии: 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2016, 18:53 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Я так понимаю, проблема в следующем: в подчиненную таблицу с автонумерацией в ключевом поле нужно добавить запись, а затем код новой записи вставить в основную таблицу. Если так, то делается многими способами, вот пара самых простых: 1. связать основную и подчиненную на форме через свойства Link Master Fields и Link Child Fields, акцесс сделает все сам без какого-либо вмешательства 2. добавлять запись в подчиненную таблицу не через инсерт, а через рекордсет, тогда новое значение ключевого поля будет известно рекордсету сразу после добавления новой записи через .AddNew ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 09:33 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Volunteer, чукча, однако, не читатель? © ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 10:50 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
\\\\Volunteer, чукча, однако, не читатель? © Ок, я пропустил кое-что. 1. Нет, в одном SQL запросе без применения data macro вставить данные в 2 таблицы нельзя. 2. Пропустил вопрос: зачем это нужно делать именно в SQL и именно в одном? Обычно SQL выполняют все-же используя VBA, поэтому предположил, что можно использовать более эффективные методы там же. Data macro - медленная вещь, источник потенциальных проблем, лучше избегать. Если делать через последовательные SQL, то в многопользовательсткой среде могут быть проблемы с поиском вставленной записи, даже при использовании транзакций ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 11:15 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Впрочем, если открыть транзакцию, то можно будет искать по максимальному номеру в ключевом поле, должно работать. Также можно перейти на ручную нумерацию ключевого поля - брать следующее значение из таблицы и вставлять уже готовые строки в обе таблицы двумя командами, зная новое ключевое поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 11:20 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Volunteerто в многопользовательсткой среде могут быть проблемы с поиском вставленной записи, даже при использовании транзакций да никаких там проблем не будет, и транзакции не нужны... - пишешь запрос на добавление только в подчиненную таблицу - на связное ключевое поле по главной таблице пишешь функцию поиска ключа в главной таблице и всё... Что делает функция: 1. получает на вход загружаемое значение в главную таблицу (обычно текст). 2. Ищет это значение в главной таблице (DLookup) и возвращает его ID... Если в главной таблице значения нет, то через DAO (AddNew) вставляем это значение, в процессе получаем ID новой главной записи и так же возвращаем в запрос... Ну, костыль, да... зато проверенный и рабочий на все 100 (хоть моно, хоть стерео, хоть квадро) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 11:49 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
vmag1. получает на вход загружаемое значение в главную таблицу (обычно текст). А если вставляемые данные не уникальны? Ну второй Иванов И.И. пришел? Правильно, DLookup вернет первого попавшегося Иванова, т.е. старого, скорее всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 12:05 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
Volunteer....в подчиненную таблицу с автонумерацией в ключевом поле нужно добавить запись, а затем код новой записи вставить в основную таблицу...Это как? Код из подчиненной вставить в основную? Разве такое возможно? Вам обеспечение целостности данных не позволит создать запись в подчиненной до наличия связанной записи в основной. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 12:40 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
FAQ вопрос Q8: Как получить значение счетчика только что добавленной записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 12:42 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
VolunteerА если вставляемые данные не уникальны? Ну второй Иванов И.И. пришел? Правильно, DLookup вернет первого попавшегося Иванова, т.е. старого, скорее всего. Это уже из другой области... думаю что при заполнении главной таблицы должны быть какие-то условия, которые просто нужно соблюдать тем или иным образом... единственное, этот костыль при потоке предусматривает построчную обработку данных (тем же DAO например) а не всё скопом... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 12:49 |
|
Добавление записей в главную и подчиненную таблицу
|
|||
---|---|---|---|
#18+
__MichelleЭто как? Код из подчиненной вставить в основную? Извиняюсь, конечно имелось в виду вставить строку в основную, а затем ключ скопировать в подчиненную таблицу. Держал в голове основную и подчиненную (субформу) формы, где термины наоборот :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 13:03 |
|
|
start [/forum/topic.php?fid=45&msg=39241256&tid=1613548]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 320ms |
total: | 439ms |
0 / 0 |