|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.08.2011, 11:19 | #1 |
Пользователь
Регистрация: 12.01.2011
Сообщений: 16
|
Копирование записи с заменой значений некоторых полей
Прошу помочь, уважаемые гуру. Самостоятельно справиться никак не получается.
Постановка задачи. Delphi+Access+ADO. Например, в базе данных есть поля ‘Фамилия’, ‘Имя’, ‘Адрес’. Проживающие (несколько человек) по одному из адресов переехали в другой город, и мне нужно оставить существующие записи с адресом, а также добавить новые записи с новым адресом (тогда в базе будет список всех адресов, по которым проживали эти люди). Схема решения. Вот схема кода с выделенным непонятным местом. Надеюсь на вашу помощь. Код:
Код:
Есть дурацкая идея копировать данные, удовлетворяющие условию, в какую-нибудь промежуточную таблицу, а потом уже вставлять в исходную базу. Но это решение, по-моему, переплюнет "индокод" и "быдлокод" вместе взятые. Уже всю голову сломал, никак не могу найти решение. Последний раз редактировалось WoodHead; 02.08.2011 в 11:24. |
02.08.2011, 11:35 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Причем здесь быдлокод? Примерно так и прийдется сделать.
Вариант 1. Пробежаться по таблице, выбирая в массив в памяти инфу для вставки. Потом из памяти добавить записи в ADOTable Вариант2. Сканируя ADOTable создавать инсерты в ADOQuery, по концу запустить ADOQuery.ExecSQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.08.2011, 11:50 | #3 | |
Пользователь
Регистрация: 12.01.2011
Сообщений: 16
|
Цитата:
Код:
|
|
02.08.2011, 11:53 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Примерно, только что-то в Insert-е маловато полей вставляется. В #1 вы побольше данных в запись помещали. По Access не могу уверенно сказать, скушает ли он одновременно несколько инсертов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.08.2011, 12:14 | #5 | |
Пользователь
Регистрация: 12.01.2011
Сообщений: 16
|
Цитата:
Код:
Несколько сотен инсертов. Пример выдуман, реальная задача посложней. Но механизм тот же. Последний раз редактировалось WoodHead; 02.08.2011 в 12:16. |
|
02.08.2011, 12:19 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.08.2011, 14:42 | #7 |
Пользователь
Регистрация: 12.01.2011
Сообщений: 16
|
Выдает ошибку
Код:
В связи с этим несколько вопросов. 1. На форме у меня присутствуют ADOTable1, ADOQuery1, ADOConnection1 и DataSource1. - в DataSource1 в свойстве Dataset стоит ADOTable1; - в ADOQuery1 в свойстве DataSource стоит DataSource1; - в ADOTable1 и в ADOQuery1 в свойстве connection содержится ADOConnection1. Не пропустил ли я чего? Могут ли одновременно работать компоненты ADOTable1 и ADOQuery1. 2. В таблице полей больше, чем 3, но я вывел только 3 поля (как в вышеозначенном примере). Может быть это повлияло на появление ошибки? Обязательно ли заполнять данными все поля, чтобы такой ошибки не возникало? Последний раз редактировалось WoodHead; 02.08.2011 в 14:44. |
02.08.2011, 14:54 | #8 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
02.08.2011, 15:18 | #9 | |
Пользователь
Регистрация: 12.01.2011
Сообщений: 16
|
Цитата:
Здесь Код:
А если здесь Код:
|
|
02.08.2011, 15:30 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ну тогда каждый Insert обрабатывать по полному циклу (Clear, Add, ExecSQL) или первый вариант
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск файла и копирование с заменой | tarakan1983 | Общие вопросы Delphi | 11 | 29.04.2010 15:14 |
Прога на подсчет значений функции: не разрешает в некоторых местах использование jo!! | Masha)) | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 20.11.2009 20:24 |
копирование всех полей класса | Juffin | Общие вопросы Delphi | 1 | 19.05.2009 19:16 |
Сохранение значений вычисляемых полей | gimbomba | БД в Delphi | 6 | 21.02.2009 19:19 |