Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166

Ошибка запроса при добавлении записи из одной таблицы в другую

06.07.2017, 21:01. Показов 959. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Добавляю записи из одной таблицы в другую через кнопку на форме.
ДЛЯ ПОНИМАНИЯ!!! Все завязано на одной таблице Tenders.
форма Главная - вкладкаТендера - кнпНераспределенные тендера и кнпТендера.
кнпНераспределенные тендера - делаю импорт из Ексель.Отбираю проекты для работы.Ставлю галочки.
кнпТендера - в этой форме ДП и КД (дир.по продажам и коммерч.директор соответственно) отбирают наиболее перспективные проекты (отмечают галочкой и выбирают Менеджера, который будет сопровождать этот проект), и нажимают кнпДобавить в Базу. Все работает хорошо. Импорт из Ексель. Добавление в Базу.
Но есть проблема. Прилагаю картинку и копию базы...Извиняюсь заранее. Почему то в схеме связи исчезли...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.07.2017, 21:01
Ответы с готовыми решениями:

Автоматическое заполнение одной таблицы при добавлении записи в другую
Здравствуйте! Подскажите,возможно ли в mssql 206 реализовать такую штучку,при добавление записей в одну таблицу,определенные поля...

Автокоррекция значений в одной таблице при добавлении записи в другую
Привет всем. Основной вопрос вот какой. У меня есть таблица наличия товаров, и таблица продаж. Хочется сразу после добавления новой...

Как создать триггер который обновляет запись в таблицы при добавлении записи в другую таблицу
Всем привет, нужна помощь с триггером, столкнулся с ним в первые до этого использовал процедуры, а диплом горит) История такая: ...

14
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
06.07.2017, 21:06  [ТС]
почему-то сразу не загрузились...
Миниатюры
Ошибка запроса при добавлении записи из одной таблицы в другую   Ошибка запроса при добавлении записи из одной таблицы в другую   Ошибка запроса при добавлении записи из одной таблицы в другую  

Вложения
Тип файла: 7z DB_10.05.17_test - копия.accdb.7z (5.88 Мб, 2 просмотров)
0
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
06.07.2017, 21:12  [ТС]
Самое главное то не сказал блин. Как решить проблему повторного копирования? Нужна подсказка.
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.07.2017, 08:07
Цитата Сообщение от Scrat2005 Посмотреть сообщение
Как решить проблему повторного копирования?
Универсальный способ (если говорится о базе данных), это задать в таблице уникальный индекс/ключ или составной уникальный индекс по нескольким полям. Тогда система автоматом не пропустит дубли по набору ключей.
В Вашем случае предположительно составной уникальный индекс в таблице Tenders состоит из полей: fix_manager, DataNproject, DataKproject, Площадка, Наименование_проекта. Поскольку я не имею представления о задаче, то выбранный мною набор может быть неполным или наоборот избыточным. Правильный, обоснованный набор в индексе должны составить Вы сами. Но суть именно в том, что такой уникальный составной индекс должен быть в приемной таблице.
Миниатюры
Ошибка запроса при добавлении записи из одной таблицы в другую  
1
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
07.07.2017, 15:05  [ТС]
Добрый день и спасибо за отклик Mobile. Вот такая сообщение выскакивает при создании индексов.
Естественно у меня есть повторяющиеся значения. У меня у каждого Менеджера по несколько проектов. Соответственно на каждом проекте в поле (База.fixed_mgr) прописан код менеджера по несколько раз.
А есть еще какой-нибудь метод обхода этой проблемы?
0
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
07.07.2017, 15:07  [ТС]
блин, че зи фигня? картинка сразу не падает?...
Миниатюры
Ошибка запроса при добавлении записи из одной таблицы в другую  
0
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
07.07.2017, 15:50  [ТС]
А Как избавится от сообщения?
Миниатюры
Ошибка запроса при добавлении записи из одной таблицы в другую   Ошибка запроса при добавлении записи из одной таблицы в другую  
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.07.2017, 16:15
В процедуре на событии формы Ошибка (Error) анализируете ошибку и подавляете системное сообщение. Можно ввести свое.
Visual Basic
1
2
3
4
5
6
7
Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Select Case DataErr
        Case 3022
'            MsgBox "Повторяющиеся индексы" 'Если нужно свое сообщение, снимите коммент
            Response = acDataErrContinue
    End Select
End Sub
1
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
07.07.2017, 18:29  [ТС]
mobile, Спасибо!!! Не подавляется системное сообщение. Ставил Ваш код и главную форму и на подформу.
а еще посмотрите плиз вот этот код: Не пишет в тблБаза. Не ругается но и не пишет. Уже не помню, но поначалу вроде срабатывал... а потом чето перестал.
Попутно спрошу. А вообще мне Запрос указывать или саму таблицу Тендерс, есть разница.
У меня там есть запрос Tenders_Выборка_. Типа я отобрал записи для экспорта в Базу.
а затем уже запросом на добавление Tenders Запрос - отправляю записи с галочкой в Базу
Tenders_Выборка+ - тоже добавляет записи в Базу

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub btnAdd14_Click()
 Dim a As String
 Dim b As String
 Dim c As String
 Dim d As String
 Dim e As String
 Dim f As String
 Dim g As String
 
On Error Resume Next
 
a = Me.fix_manager.Value
b = Me.МП_МРБК.Value
c = Nz(Format(Me.DataNproject, "\#mm\/dd\/yyyy\#"), 0)
d = Nz(Format(Me.DataKproject, "\#mm\/dd\/yyyy\#"), 0)
e = Me.Наименование_проекта.Value
f = Me.Заказчик_Регион.Value
g = Me.рабпортфель.Value
 
If MsgBox("Вы действительно хотите добавить запись в Базу?", vbOKCancel) = vbOK Then
CurrentProject.Connection.Execute "INSERT INTO База ( [OSP], [fixed_mgr], [Name_project], [Zkz_name],[srokrealstart], [srokrealEnd], [StatusProject] ) " & _
" SELECT (" & a & ") , (" & b & ") , ('" & c & "') , ('" & d & "') , (" & e & ") , (" & f & "), (" & g & ")" & _
" FROM Tenders " & _
" WHERE ((( Tenders.ВыборЭкспорт) = True));"
'Forms![подформаTenders]!Код.Requery
 
MsgBox ("Запись успешно добавлена в Базу")
 
'Me.btnAdd.Enabled = False
Else
Me.Undo
End If
End Sub
Добавлено через 6 минут
Я точно помню ругался вот на эту строку: 'Forms![подформаTenders]!Код.Requery
Я потом его заремировал...
Еще один ликбез для новичка дайте.
На каком примере я видел строку в модуле, типа:
' ' перечисляет все поля таблицы...
' ' ........................................ ...
' ' ........................................ ....
' ' - что оно означает???
какое-то скрытое объявление полей что ли?
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.07.2017, 19:28
Неправильно понял вопрос про ошибку. Подумал, что ввод в форму ручной. Надо иначе, поскольку ввод в таблицу потоковый. Не знаю имена таблиц, но предположим, что запрос из Excel называется fromExcel (у Вас нет такого, но я же предположительно). И добавить надо в таблицу Tenders. Тогда запрос может быть таким (поля я выбираю произвольно, не знаю какие берутся из екселя)
SQL
1
2
3
4
5
6
INSERT INTO Tenders ([fix_manager], [DataNproject], [DataKproject],[Номер_закупки], [Наименование_проекта]) 
SELECT DISTINCT f.[fix_manager], f.[DataNproject], f.[DataKproject], f.[Номер_закупки], f.[Наименование_проекта]
FROM fromExcel AS f LEFT JOIN Tenders AS t ON 
f.[fix_manager] & f.[DataNproject] & f.[DataKproject] & f.[Номер_закупки] & f.[Наименование_проекта] =
t.[fix_manager] & t.[DataNproject] & t.[DataKproject] & t.[Номер_закупки] & t.[Наименование_проекта]
WHERE t.[fix_manager] & t.[DataNproject] & t.[DataKproject] & t.[Номер_закупки] & t.[Наименование_проекта] IS NULL
По вопросу в сообщении 20:22. Давайте сначала с импортом разберемся.
1
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
07.07.2017, 20:13  [ТС]
На событие Загрузка главной и подформы повесил: DoCmd.Setwarnings False.
При первом нажатии на кнп "Добавить в Базу" соосбщение не выскакивает, но если не закрывая формы выбрать другую запись и нажать кнопку "Добавить в Базу" сообщение выскакивает. Мне кажется, если после выполнения команды
добавления сделать Requery, ошибка не будет выскакивать. На какое событие повесить Requery?
Хотя в макросе у меня есть событие Обновить запись. Чето она не срабатывает что ли...

Добавлено через 11 минут
Вот так я импортирую из ексель.... Все нормально вроде. Копирует как надо и куда надо...
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub ImportExcel_Click()
Dim app As Object, wrk As Object
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("select * from Tenders")
Set app = CreateObject("excel.application")
Set wrk = app.Workbooks.Open("C:\Áàçà\øàáëîí_ýêñåëü.xlsx")
rst.AddNew
'rst![fix_manager] = app.Range("C2:C20")
rst![DataNproject] = app.Range("D2")
rst![DataKproject] = app.Range("E2")
rst![Ïëîùàäêà] = app.Range("F2")
rst![Íîìåð_çàêóïêè] = app.Range("G2")
rst![Íàèìåíîâàíèå_ïðîåêòà] = app.Range("H2")
rst![Çàêàç÷èê_Ðåãèîí] = app.Range("I2")
rst![Ñóììà] = app.Range("J2")
rst![Öåíà_EXCCOM] = app.Range("K2")
rst![Ïîáåäèòåëü] = app.Range("L2")
rst![Öåíà_ïîáåäèòåëÿ] = app.Range("M2")
rst![Ïðèìå÷àíèå] = app.Range("N2")
rst![Ðàçìåð_äåìïèíãà] = app.Range("O2")
 
'...................................
rst.Update
app.Quit
Добавлено через 12 секунд
Вот так я импортирую из ексель.... Все нормально вроде. Копирует как надо и куда надо...
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub ImportExcel_Click()
Dim app As Object, wrk As Object
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("select * from Tenders")
Set app = CreateObject("excel.application")
Set wrk = app.Workbooks.Open("C:\Áàçà\øàáëîí_ýêñåëü.xlsx")
rst.AddNew
'rst![fix_manager] = app.Range("C2:C20")
rst![DataNproject] = app.Range("D2")
rst![DataKproject] = app.Range("E2")
rst![Ïëîùàäêà] = app.Range("F2")
rst![Íîìåð_çàêóïêè] = app.Range("G2")
rst![Íàèìåíîâàíèå_ïðîåêòà] = app.Range("H2")
rst![Çàêàç÷èê_Ðåãèîí] = app.Range("I2")
rst![Ñóììà] = app.Range("J2")
rst![Öåíà_EXCCOM] = app.Range("K2")
rst![Ïîáåäèòåëü] = app.Range("L2")
rst![Öåíà_ïîáåäèòåëÿ] = app.Range("M2")
rst![Ïðèìå÷àíèå] = app.Range("N2")
rst![Ðàçìåð_äåìïèíãà] = app.Range("O2")
 
'...................................
rst.Update
app.Quit
0
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
07.07.2017, 21:01  [ТС]
Спасибо Mobile! Я извиняюсь, но у меня нет проблем импорта из Ексель в Tenders.
У меня другая проблема была, пока Вы мне индексы не показали.
У меня была проблема инсерта уже из Тендерс в Базу.
Посмотрите картинку №2 и 3 в посте #2.
Миниатюры
Ошибка запроса при добавлении записи из одной таблицы в другую  
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.07.2017, 21:56
Scrat2005, если Вам по-прежнему досаждает сообщение при вызове запроса на вставку, то выполняйте запрос в коде с помощью Execute от Currentdb или CurrentProject. В этом случае, если специально не попросить, то сообщения об ошибках игнорируются:
Visual Basic
1
Currentdb.Execute "ИмяЗапросаНаВставку"
1
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
08.07.2017, 14:50  [ТС]
mobile, Добрый день! Спасибо.Принял к сведению. А можно здесь еще одну проблему нарисовать?
0
2 / 2 / 1
Регистрация: 04.01.2017
Сообщений: 166
09.07.2017, 12:11  [ТС]
Добрый день Господа Гуру! Заранее прошу прощения, что не создал тему. Никак не мог придумать заголовок проблемы.
Есть форма разделенная ЗапросДляДП1(Задачи от ДП) в ней находится другая форма, где пишем задачи от ДП (frmZadachaMgr111).ВОПРОС!!!
Как при установке курсора на поле № проекта таблицы, в ПФ отображались значения 2-х полей из главной формы: № проекта и FIO в ПФ NProject и Кому_назначено. Поля обвел зеленым...
Миниатюры
Ошибка запроса при добавлении записи из одной таблицы в другую  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.07.2017, 12:11
Помогаю со студенческими работами здесь

Ошибка при переносе строк из одной таблицы в другую
Добрый вечер! У меня возникла проблема, при переносе строк из одной таблицы в другую, выбивает ошибку: Parse error: syntax error,...

Изменение записи в таблице при добавлении записи в другую таблицу
Есть две таблицы TProduct(товары) и TIncoming(приход) с полями "наименование" и "количество". Нужно, чтобы при добавлении строки в...

Формирование SQL запроса копирования полей из одной таблицы в другую
Всем привет! Не могу родить SQL-запрос. В базе sst.mdb есть таблицы SST и nSST. Нужно из SST в nSST переместить уникальные записи поля...

Перенос записи из одной таблицы в другую
Хочу перенести запись из таблицы Driver в таблицу Del_Driver (у которой есть 2 дополнительных поля), но выдает ошибку "parameter...

Перенос записи из одной таблицы в другую
Здравствуйте. Нужно перенести запись из одной таблицы в другую. Кол-во столбцов в обоих таблицах одинаковое, но у второй таблицы последний...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru