![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
АДО и запрос к гетерогенным источникам данных [D7, MSSQL, dBase, FoxPro]
Виталий Панасенко © (2008-02-01 09:13:00)С АДО мало сталкиваюсь, но тут возникла необходимость в использовании этой технологии. Столкнулся с такой проблемой, которую не знаю, как решить в АДО. Нужно выбрать данные из одного источника, опираясь на значения из другого. Т.е. есть подключение к MS SQL, нужно выбрать из БД сервера данные, которые присутствуют в другом иоточнике данных, VFP, через ODBC. В BDE можно было сделать так: select * from maintable where key_field in (select key_field2 from ":ALIAS2:TABLE")..
А в АДО как можно проделать аналогичное ?
ANB (2008-02-05 11:18:00) [1]
> и особенно, если канал - 19200..:-)..
Ну тады надо пересылать свой файл (точнее нужный кусочек), на сервер, а там уже разбирать и класть во времянку.
Виталий Панасенко(дом) (2008-02-05 09:04:00) [2]
> ANB (04.02.08 17:16) [31]
и особенно, если канал - 19200..:-).. правда, правда... и при этом по нему еще и почта ходит
ANB (2008-02-04 17:16:00) [3]
> А как их туда втюхать ? я о TmpTable1.. загрузить с локалки,
> прописать в\о временную таблицу на сервере и сделать выборку
> ?
> <Цитата>
И какие проблемы ? Кстати, самый простой способ. Иначе придется учить сервер лазить на локалку к каждому юзеру, что не есть гуд.
тыщ 5 записей загружаются очень быстро, особенно если не вешать на времянку триггеров и индексов. Ну и грузить аккуратно препарированным запросом (впрочем, есть любители и пакетной загрузки, просто мне лично пакетная загрузка не нравится)
Виталий Панасенко (2008-02-04 17:12:00) [4]А как их туда втюхать ? я о TmpTable1.. загрузить с локалки, прописать в\о временную таблицу на сервере и сделать выборку ?
ANB (2008-02-04 15:39:00) [5]
> около 600-700 NLS=VALUE2 OR NLS=VALUE2... думаю, должен
Заменить на where NLS in (select NLS_VALUE from TmpTable1). И должно съесть.
Виталий Панасенко(дом) (2008-02-04 15:14:00) [6]Я по ячейкам, + анализ данных, постройка формул...хотя, может и гоню..но это не критично.. так как руками это люди делают 2 дня, 3-4 человека..:-)
sniknik (2008-02-04 15:05:00) [7]> там выгрузка в эксель через OLE, занимает где-то 7 минут...
?
че так долго то? аксесс столько записей не держит чтобы больше минуты их через OLE "засасывать".
> в котором будет около 600-700 NLS=VALUE2 OR NLS=VALUE2... думаю, должен
есть ограничение на размер запроса (зависит от провайдера т.е. для access один для mssql другой. вроде бы)... т.е. в принципе может и "забыковать".
не помню какой там размер, знал когдато, но забыл т.к. практически недостижим... (у меня запросы редко 2 экранные страницы превышают... т.е. > 100 строк не бывает. но с твоим подходом возможно)
Виталий Панасенко(дом) (2008-02-04 14:43:00) [8]Думаю, проще будет выбрать из локальной БД нужные счета и программно подложить их в запрос для MS SQL... там выгрузка в эксель через OLE, занимает где-то 7 минут...Так что 1-2 секунды будут не актуальны(а может и того меньше).
Правда, проглотит ли сервер запрос, в котором будет около 600-700 NLS=VALUE2 OR NLS=VALUE2... думаю, должен
sniknik (2008-02-04 12:58:00) [9]> мне не перекладывать нужно.. а выбрать с сервера то, что есть у меня в локалке...
значит не перекладывая, а выбирай... главное чтобы в том чем выбираешь был доступ к обоим базам и позволялась "гетерогенность" иначе делай то что делаешь другими средствами. (гетерогенный запрос, про который вопрос, надеюсь не самоцель... ?)
Виталий Панасенко (2008-02-04 11:18:00) [10]мне не перекладывать нужно.. а выбрать с сервера то, что есть у меня в локалке...
sniknik (2008-02-04 10:23:00) [11]> Можно как-то эту проблему решить ? Если да, то как ?
посмотреть есть ли возможность гетерогенных запросов у локального движка, того который и местные таблицы видит и к тому северу доступ имеет...
либо поменять на другой, такой возможностью обладающий.
либо расшарить твой каталог для сервера с mssql.
(смысл сделать движку видимыми обе базы и чтоб он мог...).
либо "рабочекрестьянский" метод с 2 мя коннектами и перекладыванием, как уже предлагали, и плевать на гетерогенность.
Виталий Панасенко (2008-02-04 09:49:00) [12]Но не все так просто оказалось.. БД фокс лежит у меня в сетке, а MS SQL - удаленный.И, я так понимаю, мой запрос не работает, т.к. MS SQL пытается найти таблицы фокса У СЕБЯ ЛОКАЛЬНО, т.е. там, где MS SQL "живет"... а это в 100 км от меня..:-). А дома я подключался локально, потому и работает..Можно как-то эту проблему решить ? Если да, то как ?
Виталий Панасенко(дом) (2008-02-03 10:15:00) [13]select * from
OPENROWSET('MSDASQL',
'DRIVER={Microsoft Visual FoxPro Driver};
Exclusive=No;Collate=Russian;Deleted=Yes;Null=No;
SourceDB=c:\;SourceType=DBF;',
'SELECT * FROM s60534')
УРА, ЗАРАБОТАЛО!!!(с) Кот Матроскин
Виталий Панасенко(дом) (2008-02-03 10:08:00) [14]можно и дома проверить...
Виталий Панасенко(дом) (2008-02-03 10:07:00) [15]Файлы... видимо, нужно копать в сторону SourceType=DBC;
sniknik (2008-02-02 18:03:00) [16]> Кстати, нашел на SQL.RU.. это я о
думаешь это уже все? а скажи, у тебя именно база VFP& или просто файлы в формате? потому как нашел вариант ты именно для базы... хотя уже близко. не бред.
Виталий Панасенко(дом) (2008-02-02 15:14:00) [17]Кстати, нашел на SQL.RU.. это я о
> Anatoly Podgoretsky © (01.02.08 11:33) [6]
и
> sniknik © (01.02.08 12:04) [8]
:-)
Виталий Панасенко(дом) (2008-02-02 15:12:00) [18]Видимо, нашел, что нужно... Проверю в понедельник...
select * from
OPENROWSET('MSDASQL',
'DRIVER={Microsoft Visual FoxPro Driver};
Exclusive=No;Collate=Russian;Deleted=Yes;Null=No;
SourceDB=D:\Data_OBM\anmo\DataTMP.dbc;SourceType=DBC;',
'SELECT * FROM tbContact')
только свои данные подставить...Написано на форуме, что рабочее, только кодировка не та.. а у меня там счета, цифры...
sniknik (2008-02-01 17:57:00) [19]> а зачем писать опенровсет, если мона просто к таблицу селекнуть ?
подключение к mssql на одной машине, а через опенровсет получаются данные с другой, для объединения/переноса/т.д. ... а на другой даже не mssql а тот же oracle (у автора визуал фокспро).
попробуй "селектни к таблицу" без него.
это же и есть гетерогенный запрос. основы.
либо так, учить основы, либо
MsGuns © (01.02.08 11:54) [7]
> Два коннекта и два датасета на клиенте - из одного последовательно читать, а в другой добавлять
и скорость вместо секунд минуты, вместо минут часы...
ANB (2008-02-01 17:35:00) [20]
> sniknik © (01.02.08 17:04) [13]
а зачем писать опенровсет, если мона просто к таблицу селекнуть ?