Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
ВнизADO, обновление данных таблицы (самой таблицы) Найти похожие ветки
← →
Alexey A (2004-08-05 10:53) [0]Здавствуйте!
Инструменты: Delphi 6, База Access 2000 (*.mdb)
Есть задача, не знаю, как реализовать:
есть рабочая база "work.mdb", в ней таблица "value",
есть обновленная база "up.mdb", в ней таблица "value"
Какими средствами обновить данные таблицы "value" в рабочей базе из "up.mdb"..
Я начинающий... можно подробней?
Заранее спасибо!
← →
46_55_41_44 © (2004-08-05 10:58) [1]Вопрос...
"up.mdb"."value" = "work.mdb"."value" + (Новые данные)?
просто ответ зависит от этого...
Можно конечно написать общий случай... Но не охота...
Чем быстрее ответишь, тем быстрее подскажу.. ))
← →
Alexey A (2004-08-05 11:02) [2]"up.mdb"."value" = "work.mdb"."value"
← →
sniknik © (2004-08-05 11:20) [3]> Какими средствами обновить данные таблицы "value" в рабочей базе из "up.mdb"..
лучше всего средствами самого Access (jet), таким запросом к примеру
INSERT INTO [value] FROM [value] IN "up.mdb" WHERE .....(условие отбора новых)
при подключении к work.mdb
> Я начинающий... можно подробней?
книжки/хелпа в этом помогают.
← →
Alexey A (2004-08-05 11:39) [4]sniknik ©, не пойдет так...
"work.mdb" имеет свой Alias в ODBC "WORK",
"update.mdb" имеет свой Alias в ODBC "UP",
на каждую базу свой "Connect".. каким образом их связать, чтобы работать как с единым целым и манипулировать таблицами (или их записями)...
← →
sniknik © (2004-08-05 11:46) [5]> sniknik ©, не пойдет так...
и тем не менее, это лучшее, простое и быстрое решение.
> "work.mdb" имеет свой Alias в ODBC "WORK",
> "update.mdb" имеет свой Alias в ODBC "UP",
убери. BDE выкини, не та задача.
конект сделай один с помощью ADO, и манипулируй там таблицами с помощью SQL, по другому с целой таблицей не получится, только позаписьно.
> на каждую базу свой "Connect"..
хочеш чтобы работало быстро? не делай так.
← →
Alexey A (2004-08-05 11:51) [6]Я и использую ADO.
Хорошо.. а как же манипулировать таблицами базе не используя Alias в ODBC к базе?
← →
sniknik © (2004-08-05 12:13) [7]> Я и использую ADO.
обычно с этого и начинают вопрос, чтобы без недоразумений, описание используемых средств.
> не используя Alias в ODBC к базе?
строка конекта типа этой
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\work.mdb;Persist Security Info=False
← →
Alexey A (2004-08-05 12:26) [8]sniknik ©, спасибо! Я действительно до конца не разобрался в предложенном тобой примере :)
Решил вопрос:
- ADOConnect к "work.mdb" (т.к. логин, пароль на ней)
- ADOCommand:SELECT * INTO value FROM [Value] in "путь/update.mdb"
но осталось решить вопрос с тем, что если такая таблица уже есть в "work.mdb", Delphi ругается.. Удалить наверное ее перед этим запросом?!
← →
sniknik © (2004-08-05 12:39) [9]> Удалить наверное ее перед этим запросом?!
или очистить ее, и пользоваться INSERT INTO ...
что тебе по задаче нужно, если там структура/имена различаются и т.д. индексов к примеру SELECT * INTO не переносит. а если они нужны? и зачем заменять таблицу? можно же только добавления вставлять.
← →
Energet (2004-08-05 14:37) [10]Если рабочая база начинает отличаться только с определенного момента и задача в том что их надо синхронизировать (если я правильно понял) то делаешь например так:
1) выбираешь значение Table Identify Column у необновленной базы
2) И начинаешь копирование с этого значения в обновленной базе
все это можно сделать на одном SQL в виде одного сложного запроса. А каждый раз делать Инсерт Инто имхо не стоит эту команду обычно юзают для составления временных таблиц которые потом успешно дропают, тем более , как правильно заметил sniknik, она не перенесент тебе ндексов + все связи порвутся.
З.Ы. Загляни на www.sql.ru там есть очень большой форум по дельфи применительно к базам данных.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c