Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > SQL -> BDE -> SQL


Автор: Grig 7.6.2005, 04:30
а как SQL таблицу перекинуть во временную..
Типа локальную.
Ну, например, *.db
А потом проделав в проекте над ней определенные операции, закинуть обратно в SQL??

Ну вот например,
Код

select * into 'c:\eee.db' from spr_kart


а потом что-нибудь наподобие:
Код

insert into spr_kart select * from 'c:\eee.db'


spr_kart - SQL-Table
eee.db - временная таблица BDE

Автор: Vit 7.6.2005, 15:36
А что select into не работает? По идее должен... Только имена файлов с путями не надо указывать...

Автор: Grig 8.6.2005, 02:52
пробовал так:
Код

form1.ADOConnection1.Execute('select * into '+'''ss.db'''+' from spr_markob');


И так:
Код

form1.ADOConnection1.Execute('select * into ss.db from spr_markob');


Жалуется на неккоректный синтаксис.
А что самое интересное, в Accesse это работает!!
Только в созданную базу ss копирует таблицу db..

Автор: ТоляМБА 8.6.2005, 04:57
2 Vit
Пожалуйста, приведи пример. smile Проблема такая тоже возникала (и в скором времени опять возникнет). Я её решил, правда через ж. Тобишь создал 2 адоконнекшн - одну к MS SQL SERV., вторую к dbase IV через Jet 4, создал две таблы и подключил одну к серваку, вторую к дбфке (пустая табла со структурой как на табле с сервака). Через цикл WHILE в Делфях перегнал. Вотъ. smile Смеяться после слова "лопата". Но это сработало, хотя это конечно далеко не выход.

Автор: Grig 8.6.2005, 05:21
ТоляМБА, я тоже пока другого реального выхода не вижу
Солидарно с тобой smile

Автор: ТоляМБА 8.6.2005, 07:03
2 Grig
Ты мой пример хочешь или Vita?

Автор: Guest 8.6.2005, 07:24
ТоляМБА, не, как ты предлагаешь я знаю и делал...
К сожалению к моей задаче это неприменимо..

Автор: Vit 8.6.2005, 15:39
Сделай 2 alias на SQL базу и на сой какой-нибудь каталог который будет парадоксовской (DBase) базой данных. В запросе это будет выглядеть как:

Код

Insert into :MyParadoxAlias:MyTempTable
Select * From :MySQLAlias:MyTable


Через ADO не получится... Объясню почему. BDE - чисто клиентская технология, т.е. данные по любому вытягиваются на клиента и клиент их сохраняет. ADO - клиент-сервер (точнее почти чистый сервер) поэтому запросы вида

Код

insert into spr_kart select * from 'c:\eee.db'


если и приведут к работе с таблицами, то НА СЕРВЕРЕ! Т.е. 'c:\eee.db' будет относится к тому компу на котором стоит SQL Server а не твоё приложение... Там в ADO есть синтаксис как это сделать, но локальная база данных должна быть видна с сервера, что в принципе неправильно, во вторых должны быть разрешения и уровни доступа чтоб NT разрешила SQL Server работать с данным файлом в данном месте.

А собственно зачем этот геморрой нужен? Чем временные таблицы на сервере не устраивают? Зачем на клиент тянуть данные?

Автор: Grig 9.6.2005, 05:56
Цитата(Vit @ 8.6.2005, 15:39)
А собственно зачем этот геморрой нужен? Чем временные таблицы на сервере не устраивают? Зачем на клиент тянуть данные?

К сожалению не устраивают...
Этот проект будет использоватся на нескольких клиентских местах и на одних будет использоватся SQL-Server, на других Access - по выбору.
Поэтому я и нагружаю клиентское приложение, чтобы было меньше переписывать и вообще сделать проект более универсальным.
C BDE честно говоря крайне мало работал, но попробую сделать, как ты сказал.
А вообще я начал уже делать так: создал второй adoconnection и через него все пихаю временные таблицы в какую-то отвлеченную БД.
Вот такой геммороище!!!

Автор: Vit 9.6.2005, 15:46
Цитата(Grig @ 8.6.2005, 20:56)
К сожалению не устраивают...
Этот проект будет использоватся на нескольких клиентских местах и на одних будет использоватся SQL-Server, на других Access - по выбору.



Ну дык и делай временные таблицы прямо в Access если основная база в Access или в MS SQL Server если используешь MS SQL Server... Не понял траблов... Запрос Create Table он же стандартный...


Цитата(Grig @ 8.6.2005, 20:56)
BDE честно говоря крайне мало работал, но попробую сделать, как ты сказал.



Не стоит, он плохо работает с серверными базами данных... По любому такие запросы вытягивают все данные на клиента


Цитата(Grig @ 8.6.2005, 20:56)
А вообще я начал уже делать так: создал второй adoconnection и через него все пихаю временные таблицы в какую-то отвлеченную БД.


То же вариант... но плохой. Поверь моему опыту, делай временные таблицы в той же базе данных где ты работаешь... Так ты избавишься от огромного сетевого трафика

Автор: ТоляМБА 10.6.2005, 04:45
Vit, по этой-же теме у меня другая проблема, то есть суть та же, но таблицы в dBase нужны для другого: один раз в месяц с сервака должны делаться выгрузки некоторых таблиц, с ними производиться расчеты и конечный резулльтат выдаваться в одной таблице. Причем расчеты будут производиться на машине, у кторой нет доступа к серваку (экономисты с другим серваком работают). В принципе раз в месяц выгрузки с сервака можно делать и через Export, просто мне хотелось полностью автоматизировать процесс (чтобы юзер не лазил на сервак а прога сама делала Export).
Как ты написал:
Цитата
Код

Insert into :MyParadoxAlias:MyTempTable
Select * From :MySQLAlias:MyTable

у меня не получилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)