![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOTable1.LoadFromFile не сохраняет данные в БД [D7, Access]
Angel[Saint] © (2005-09-08 15:42:00)Доброго времени суток.
у меня такая проблема... есть 2 БД аксес. подключаюсь к 1-й и выполняю
ADOQuery1.SQL.Add('select * from table_name where id<100');
ADOQuery1.Open;
ADOQuery1.SaveToFile(ExtractFilePath(Application.ExeName)+'~tmp.dsf');
ADOQuery1.Close
Далее подключаюсь ко 2-й БД и выполняю такой код:
ADOTable1.TableName:='table_name';
ADOTable1.LoadFromFile(ExtractFilePath(Application.ExeName)+'~tmp.dsf');
ADOTable1.Close;
Вопрос: как сделать так, чтобы данные, загруженные из файла сохранялись в БД:
Savek (2005-09-10 16:19:00) [1]Есть быстрый способ для копирования таблиц:
Select * into Table1 from Table2 in "с:\...\база.mdb"
Создает новую таблицу Table1 в подключенной БД
AlexWlad (2005-09-10 15:07:00) [2]Плохиш © (09.09.05 16:38) [19]
там упоминается TBatchMove
Давайте не будем заниматься некрофилией (TBatchMove - BDE).
Соловьев (2005-09-10 14:33:00) [3]Да уж...
А о связке ADODataSet->TClientDataSet мы никогда не слышали?
Angel[Saint] (2005-09-10 14:18:00) [4]Спасибо за помощь. Вариант с "INSERT INTO ZZ IN 'D:\Documents and Settings\stas\Мои документы\db11.mdb'" супер... жаль что раньше не знал о нем..
Плохиш (2005-09-09 16:38:00) [5]
> Angel[Saint] (09.09.05 16:27) [17]
http://lib.profi.net.ua/doc/info_sites/visprog/books/Delphi%20Kindom/answer.asp-IDAnswer=5113.htm
там упоминается TBatchMove
Stanislav (2005-09-09 16:31:00) [6]А 2-й незнаю как :-( .
Angel[Saint] (2005-09-09 16:27:00) [7]> Плохиш © (09.09.05 16:23) [15]
мне не нравится этот вариант... слишком долго работать будет, если много записей. есть еще варианты?
Stanislav (2005-09-09 16:26:00) [8]INSERT INTO ZZ IN 'D:\Documents and Settings\stas\Мои документы\db11.mdb'
SELECT DRFO1.*
FROM DRFO1;
Это 1-й вариант
Плохиш (2005-09-09 16:23:00) [9]
> Angel[Saint] (09.09.05 16:19) [12]
> и вообще... возможно ли данные, загруженные с помощью LoadFromFile
> сохранить потом в нужную таблицу БД... структура таблицы
> и загружаемых данных одинаковая
Да, используя [4]
Angel[Saint] (2005-09-09 16:22:00) [10]> Stanislav © (09.09.05 16:19) [11]
> 1. Можно указать путь к базе прямо в запросе
как это сделать?
> 2. можно подключить таблицу как связную
интересный вариант :) а можешь подсказать как программно выполнить такое?
Плохиш (2005-09-09 16:21:00) [11]
> Angel[Saint] (09.09.05 16:15) [10]
> > Stanislav
>
> это я знаю... но так можно делать в том случае, если обе
> таблицы находяться в ОДНОЙ БД... а в моем случае таблица
> в разных БД
Если движок не позволяет [11] п.1, то только копируя записи из одного набора данных в другой.
Angel[Saint] (2005-09-09 16:19:00) [12]и вообще... возможно ли данные, загруженные с помощью LoadFromFile сохранить потом в нужную таблицу БД... структура таблицы и загружаемых данных одинаковая
Stanislav (2005-09-09 16:19:00) [13]Angel[Saint] (09.09.05 16:15) [10]
1. Можно указать путь к базе прямо в запросе
2. можно подключить таблицу как связную
Angel[Saint] (2005-09-09 16:15:00) [14]> Stanislav
это я знаю... но так можно делать в том случае, если обе таблицы находяться в ОДНОЙ БД... а в моем случае таблица в разных БД
Плохиш (2005-09-09 16:15:00) [15]
> Angel[Saint] (09.09.05 07:56) [3]
> никто... я никогда не пользовался данными методами и вот
> решил попробовать... при решии данной задачи ето был бы
> простейший вариант. но вот не знаю как должно быть... в
> справке, в описании данного метода не сказано сохоаняет
> ли он данные в Бд или нет... вот я и решил спросить тут...
В справке сказано, что данные из файла загружаются в набор данных, а так же сказано, что перед этим предыдущий набор данных закрывается. А для полного понимания того, что делается, обычно открывают исходники и смотрят.
А самый простой путь Stanislav уже предложил :-)
Stanislav (2005-09-09 15:59:00) [16]Angel[Saint] (09.09.05 08:08) [4]
Вообще-то нужно использовать SQL
Insert Into DESTTABLE (Field1,Field2)
Select Field1,Field2 from SourceTable
Angel[Saint] (2005-09-09 15:37:00) [17]думал что может после закрытия сохранит данные, т.к. других методов сохранения не нашел. А процедура Post не помогает
Stanislav (2005-09-09 15:24:00) [18]А Зачем после загрузки ADOTable1.Close ?
Angel[Saint] (2005-09-09 15:19:00) [19]Мастера!!! ау!!!
Angel[Saint] (2005-09-09 08:08:00) [20]И еще вопрос в догонку... есть 2 ADOQuery, подключенных к разным базам. ADOQuery1 с данными, ADOQuery2 пустой. можно ли как-нибудь перекинуть данные из одного ADOQuery в другой минуя посредников, напрямую? т.е. не делая
ADOQuery1.First;
while not ADOQuery1.eof do
begin
//1. Скопировать строку в память или куда-нибуть еще
//2. Скопировать строку из памяти в ADOQuery2
ADOQuery1.Next;
end;