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

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

АДО и запрос к гетерогенным источникам данных [D7, MSSQL, dBase, FoxPro]


Страницы:   1 2

Виталий Панасенко ©   (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]

а зачем писать опенровсет, если мона просто к таблицу селекнуть ?


Страницы:   1 2

Наверх

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