![]() |
|
![]() ![]() ![]() |
|
Rodeon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Здравствуйте уважаемые!
Такая задача иметься, две базы mdb, одна пустая, вторая с данными, базы абсолютно идентичные по количеству таблиц и наименований полей. Надо из второй скопировать из таблиц все значения в первую по условию, т.е. только те значения, в которых номер поля «скважина» соответствует выбранному в combobox-е, и потом уже скопировать таблицу в первую (пустую) базу, но уже с измененным номером поля «скважина» с заранее введенный в edit-е. На форме все настроено уже для открытия обоих баз и передачи названий скважин из второй базы в combobox. После этого передаются данные из второй таблицы в Query с сортировкой
Надо теперь изменить значения T_18.Скважина, загруженные в Query на значение из Edit-а и сохранить во вторую базу. Как лучше это сделать, в цикле или есть более действенный способ и как все потом записать в первую базу? Было бы очень уж хорошо кусочек кода, хотя бы схематически! ![]() Заранее спасибо за ответ! |
|||
|
||||
vovk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
Если действие одноразовое, то можно скопировать файлик с данными, а там просто удалить не нужное, и изменить значения
|
|||
|
||||
Rodeon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Задача осложняеться тем, что в базе таблиц окола 40+. Просто хочу по аналогии все в программе что-бы редактировалось. В ручную счас делают, но не удобно и долго, тем более что все данные перепутаны, т.е. сортировка отсутствует как факт и не сохраняеться.
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
Rodeon |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Спасибо за ссылку, читал уже этот пример через поиск!
Под мой случай было бы наверное так!? Но в этом примере, как я понял для ситуации, когда таблицы из одной базы, а у меня разные базы, два файла. Так-то было бы неплохо, но как-то можно явно указать из какой базы брать и в какую вставлять!? Причем после редактирования поля "Скважина", т.е. присвоению всему полю "Скважина" значения из edit-а. Редактирование сделал:
Остался вопрос как из Query измененные данные сохранить в первой, пустой базе, не изменяв их во второй. Это сообщение отредактировал(а) Rodeon - 25.8.2009, 06:45 |
||||
|
|||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
адо помоему умеет к разным бд запрос делать...(не уверен доку надо читать) погугли гетерогенные запросы в адо либо цикл по записям Это сообщение отредактировал(а) Frees - 25.8.2009, 06:47 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Rodeon |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Показались сложными пока мне эти гетерогенные запросы!
Сделал все в цикле. Кинул на форму 2 ADOConnection Первый связал с AdoQuery Второй с ADOTable В Query делаю запрос
Потом в цикле переношу все в AdoTable с присвоением полю "Скважина" значение из Edit-а
В принципе работает, может и не так быстро как хотелось бы, но все же лучше, чем в ручную копировать данные из базы в базу. Если кто подскажет как можно ускорить процесс - буду благодарен! |
||||
|
|||||
vovk |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
записи начинаются не 0 а с 1 по моему тут так
For i:=1 to ADOQuery.RecordCount do аа посмотрел смысл тотже .. там же только количество прохождения цикла, то же самое в общем просто обычно по записям так пробегают
вместо этого Adotable.Next; надо Adotable.Post; процесс немного ускорит отключения контроля на момент копирования записей до начала цикла
а после окончания копирования
Есть одна мысль. Домой с работы вернусь попробую сделать отпишусь если выйдет Это сообщение отредактировал(а) vovk - 26.8.2009, 03:21 |
||||||
|
|||||||
Rodeon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Посидел еще, тоже на мысль о цикле пришла в голову, после того как в одной таблице увидел 36 полей:
Счас попробую насчет отключения контроля. Спасибо всем за советы! |
|||
|
||||
vovk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
вот тут проверил запрос типа
как раз о таком вроде Frees в 6 посте говорил ЗЫ мысль была другая, к ней ещё может вернусь еси время будет.. Это сообщение отредактировал(а) vovk - 25.8.2009, 15:21 |
|||
|
||||
Rodeon |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Блин, что-то не до конца понимаю, table1 - это что? Выбранная база в Query через запрос:
В запросе поменял таблицу на свою:
Ошибки выдает, либо найти не может таблицу T_18, либо синтаксическая ошибка, либо "текущий проводник не поддерживает возврат нескольких наборов записи в результате одной операции"!? Может кусок кода рабочего с этим запросом напишите или объясните, что надо за Table1 выдавать? Спасибо заранее! |
||||
|
|||||
vovk |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
вот пожалуйста
Так выглядит строка подключения Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data\newaccess.mdb;Persist Security Info=False записи копируются из файла C:\data\newaccess1.mdb table_1 имя таблицы в файле из которого копируем кстати ADOQuery.SQL.Add добавляет текст к тому что находится в ADOQuery.SQL.Text если вы пишите новый запрос то перед этим надо очистить содержимое ADOQuery.SQL.Text хотябы так ADOQuery.SQL.Clear; а ошибка
возникает, когда запрос не возвращающий записей пробуют выполнить с помощью open или active:=true, что вобщемто одно и тоже если не получится покажите код с помощью которого пробуете добавить записи, может просто чегото не учли.. Это сообщение отредактировал(а) vovk - 26.8.2009, 03:35 |
||||
|
|||||
Rodeon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 28.8.2008 Где: Россия, Ухта Репутация: нет Всего: нет |
Ура!!!!
Спасибо огромное за помощь! Все получилось, копирует мгновенно! Окончательная версия, так сказать:
Позже, открываю эту же таблицу и в цикле меняю поле T_18.Скважина на нужное из Edit-а. Еще раз спасибо всем, особенно vovk за оперативность и доходчивые ответы. Все. Задача решена. Это сообщение отредактировал(а) Rodeon - 26.8.2009, 05:20 |
|||
|
||||
vovk |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
изменения тоже можно прямо в запросе делать
если сделать так, то во все записи pole1, в таблице table_ попадёт значение содержащееся в edit1.text. Можно и вычисления делать или менять текст в зависимости от значений в других полях этой записи. Или потом изменения вносить можно тоже с помощью запроса а не в цикле. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |