Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADOTable1.LoadFromFile не сохраняет данные в БД [D7, Access]


Страницы:   1 2

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;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо