![]() |
|
|
![]()
|
|
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Есть 2 таблицы, одна пустая(z) или с устаревшими данными, другая(x) обновляется в реальном времени. Необходимо сравнить эти две таблицы и скопировать те данные которые изменились(с заменой). Либо скопировать все данные из более новой таблицы в старую с замещением всех совпадающих данных, причем столбцы, которых нет в другой таблице, в которую происходит копирование, не трогать. В более старой таблице есть столбец с данными, значения которого всегда должны оставаться неизменными(id_g).
--------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
И в чём вопрос?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Вопрос в том как это организовать, может у кого-то есть некий шаблон для реализации вышеперечисленного?
--------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| vovk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
Почитайте про запросы, а конкретно Update
Это сообщение отредактировал(а) vovk - 17.9.2009, 05:45 |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
лучше почитать про репликацию и не изобретать велосипед
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Почитал про репликацию access, спасибо за подсказку, довольно удобно и доступно написано. Но все же, интересно как это возможно реализовать на уровне delphi. Пробую сейчас на основании старой таблицы с помощью массивов записать необходимые данные в новую, но что-то не выходит правильно заполнить..
Работает без ошибок, но вставляет не верно. Каждого клиента добавляет столько раз, сколько всего различных id_group, присваивая ему по очереди все id_group которые есть в Dengi, причем которые ему даже не соответствуют. id_group у каждого клиента есть всего 1 и добавление в бд должно соответствовать форме 1клиент - 1id_group. Никак не соображу, как нужно изменить условия выборки, чтобы заполняло нормально =\ --------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Неужели никто не сталкивался с подобной задачей?
P.S.: возможно ли использовать locate для этих целей т.е. ищем все записи, где есть id_group и добавляем построчно в другую таблицу? А потом совершаем нечто обратное, т.е. ищем в двух таблицах совпадение по определенному полю и в случае если отсутствует id_group в каких-либо записях добавляем его по соответствию kod_klienta. Это сообщение отредактировал(а) dize - 18.9.2009, 15:39 --------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| vovk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
всёже настойчиво рекомендую Update...
|
|||
|
||||
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Можешь описать алгоритм при использовании update, трудно доходит как он может здесь пригодиться. --------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| vovk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 28.2.2008 Репутация: 6 Всего: 6 |
Если я правильно понял, то нужно обновлять определённые поля в записях по опять же определённому условию. Всё это позволяет сделать Update. Если ещё и нужно добавлять записи то ясно дело инсерт..
в общем у меня сейчас уже ночь устал, и вникать особо не получается, вроде из постов понял что используеш ACCESS, а компоненты ADO. Как можно подробнее изложи суть, какие таблицы есть (состав полей), из какой таблицы берём данные, в какой обнавляем, поля которые требуется обновить, условие по которому обновляем (то есть как понять какую запись обновлять а какую нет). Сегодня уже соображаю .. мягко выражаясь туго, завтра с утра разгребу работу срочную, вникну, и постараюсь помочь А сейчас я спать Это сообщение отредактировал(а) vovk - 18.9.2009, 17:34 |
|||
|
||||
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Да, все верно, access и ado.
Есть 2 таблицы: dengi(id_money(счетчик), Kod_klienta, Tek_sredstva, Firma, id_group, val, gryppa) и dengi_b (id(счетчик), id_group, Kod_klienta). Таблица dengi имеет записи во всех полях, кроме id_group, значения которого есть не у всех. Данные берем из dengi по принципу, если у kod_klienta есть id_group, то добавляем kod_klienta и id_group в таблицу dengi_b, потом переходим к следующему. В итоге получается таблица dengi_b, в которой у всех Kod_klienta есть id_group. Может случиться так, что спустя некоторое время после записи этих данных в таблице dengi исчезнут все id_group у всех Kod_klienta. В этом случае нужно id_group из таблицы dengi_b присвоить каждому Kod_klienta в таблице dengi по соответствию Kod_klienta и id_group в dengi_b. id_group может быть как разным так и одинаковым для разных Kod_klienta. Все это будет привязано к кнопкам, т.к. я точно знаю в каком случае все вышеописанные операции нужно совершать. Это сообщение отредактировал(а) dize - 18.9.2009, 18:02 --------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Да проще простого:
В цикле по основной таблице проверяешь записи второй таблицы. Если такая запись во второй таблице существует, то заменяешь все поля, если не существует, то добавляешь новую запись. |
|||
|
||||
| dize |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
За выходные перерыл пол интернета в поисках подобного решения, нашел только отдаленные примеры, в которых это реализовано частично. Не могли бы вы привести пример?
--------------------
- Скажите, Большой Брат существует в том же смысле что и я? - Вы не существуете. |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
dize, теперь надо вторую половину просмотреть. Тебе же Akella все уже разжевал. Вот простейший шаблон.
Это сообщение отредактировал(а) former - 21.9.2009, 16:32 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
former, ты его ещё больше запутал
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |