![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 06.03.2013
Сообщений: 12
|
![]()
Доброго времени суток, возникла меленькая проблема с реализацией проекта. Суть проблемы:
Не могу перенести данные из tab2, которая находится в БД notebook2.mdb в таблицу tab1, которая находится в БД notebook.mdb На форме есть ADOConnection, ADODataSet, DataSource, DBGrid и ADOQuery. ADOConnection подключен к notebook2.mdb ADODataSet имеет SELECT * FROM tab2 ORDER BY Name, подключен к ADOConnection DataSource подключена к ADODataSet DBGrid к DataSource ADOQuery подключен к ADOConnection и DataSource1. В нем я писал различные запросы на копирование данных SELECT tab2.Number, tab2.Name FROM tab2 IN 'notebook2.mdb' UNION ALL SELECT tab1.Number, tab1.Name FROM tab1 IN 'notebook.mdb'; INSERT INTO "notebook2.mdb" (tab2.Number, tab2.Name) VALUES SELECT tab1.Number, tab1.Name FROM tab1 IN 'notebook.mdb' INSERT INTO "notebook2.mdb" (tab2.Number, tab2.Name) VALUES SELECT tab1.Number, tab1.Name FROM "notebook.mdb" Ни один из этих запросов не работает, выдает ошибку,что в синтаксисе INSERT INTO ошибка и всякую чушь. Как правильно сделать копирование данных? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
![]()
В запросе на добавление после insert into указывается имя таблицы, а не файла БД. То же самое касается предложения from в запросах на выборку (select).
Можно в Access в одной БД настроить запрос к другой, и потом обращаться к этому запросу. Но тогда путь к одной БД будет жестко прописан в другой. Его же можно передавать параметром. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 06.03.2013
Сообщений: 12
|
![]()
А поподробнее можно, не могу понять. Допустим я считаю из первой БД notebook2, но как программа поймет,что нужно именно в notebook записать эти данные.
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 03.01.2014
Сообщений: 2,870
|
![]()
Создаёте в 1й базе запрос ко 2й. В запросе на добавление делаете выборку из него.
Цитата:
|
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 06.03.2013
Сообщений: 12
|
![]()
Сделал то что хотел. Запрос такой INSERT INTO Таблица_0_Ответственный_за_ЭССАД in 'notebook2.mdb'
SELECT * FROM Таблица_0_Ответственный_за_ЭССАД in 'notebook.mdb'; Теперь проблема в другом. в некоторых таблицах есть ключевые поля и связи. Пишет: Изменения не были успешно внесены из-за повторяющихся значений в индексе ключевых полях или связях. Измените данные в поле или полях, содержащих повторяющиеся значения, удалите индекс или переопредилите его и повторите попытку! Как избавиться? Прикреплю проект свой, может кто-нибудь поможет) Если сделать конечно ADOQuery1.ExecSQL; ADOQuery2.ExecSQL; //ADOQuery3.ExecSQL; //ADOQuery4.ExecSQL; //ADOQuery5.ExecSQL; //ADOQuery6.ExecSQL; //ADOQuery7.ExecSQL; //ADOQuery8.ExecSQL; //ADOQuery9.ExecSQL; //ADOQuery10.ExecSQL; //ADOQuery11.ExecSQL; //ADOQuery12.ExecSQL; //ADOQuery13.ExecSQL; //ADOQuery14.ExecSQL; //ADOQuery15.ExecSQL; То работает. Если убрать удалить комментарии у кода, то вылетает ошибка, которую я написал выше. Может как-нибудь можно только значения перенести из таблиц, а не всю строку с запросами и т.д Закиньте файлы из архива БД в папку с проектом. |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 06.03.2013
Сообщений: 12
|
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 06.03.2013
Сообщений: 12
|
![]()
Доброго времени суток, немного помучился и разобрался, но как всегда появилась маленькая проблема, а именно не работает один ADOQuery. Уже по всякому делал,ничего не получается. Может я чего-нибудь не замечаю =( В коде я его закомментил, посмотрите пожалуйста. Файлы из архива БД, перекиньте в папку с проектом.
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
а вы почистили таблицы ПЕРЕД переносом.
Все ранее данные рекомендации предполагают абсолютно пустую БД приемник. Структура БД неудовлетворительная. никогда не делайте ключом наименование которое должен вводить пользователь. Если у вас есть таблица наименований (OУ), то ключом в ней должно быть поле типа счетчик(!) целое число. (обычное имя для такого поля ID) Все таблицы которые должны иметь информацию, к какому наименованию из ОУ относится та или иная их запись, должны в свою очередь иметь поле имеют поле вида целое, в котором хранится целое =ID того наименования к которому относится данная запись. (обычно оно называется OU_ID) OU подсказывает в какой таблице следует искать само наименование. Код:
Цитата:
1. размер (число 4 байта, а наименование м.б.>100) 2. с числами БД (не человеку) работать удобнее. 3. главная причина! если человек обнаружит ошибку в наименовании то ее будет легко исправить. она существует в единственном месте! в ОУ! чтобы что-то исправить обычно надо знать какая ошибка была. except on e:Exception do begin MessageDlg('owubka' +e.Message ,mtError,[mbOk],0); end;
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 03.03.2014 в 12:57. |
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 18.01.2013
Сообщений: 1
|
![]()
HelloExp Спасибо большое!!! Выручил очень!!!!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как скопировать таблицу из одной базы данных Access в другую | Dux | БД в Delphi | 9 | 16.10.2013 11:07 |
Delphi.БД Access.как сделать вставку в поле из одной таблицы в другую? | JuliaKiK | Помощь студентам | 1 | 02.05.2013 01:12 |
Перенос данных из одной БД в другую | demiancz | БД в Delphi | 1 | 11.03.2012 18:53 |
Как открыть из БД Access другую Бд Access? | Ribun | Microsoft Office Access | 8 | 10.03.2012 05:44 |
Как скопировать данные таблицы из одной базы access в другую? | AK BULLETS | БД в Delphi | 2 | 31.03.2010 13:09 |