межбазовый обмен (ODBC)

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

межбазовый обмен (ODBC)

Сообщение студент-практикант » 14 дек 2007, 12:31

Добрый день! В данной статьи

http://www.ibase.ru/devinfo/excel_odbc.htm

описано, как подключиться к Firebird из Excel через ODBC. А как можно не через Excel, а из клиентского приложения (Firebird 2.0, Delphi7, IBX). Т.е. мне с клиентского приложения нужно выцепить другую базу. И есть ли смысл в ODBC, может лучше сразу замахнуться на OLE DB. как перспективней?

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Re: межбазовый обмен (ODBC)

Сообщение stix-s » 14 дек 2007, 12:47

студент-практикант писал(а):Добрый день! В данной статьи

http://www.ibase.ru/devinfo/excel_odbc.htm

описано, как подключиться к Firebird из Excel через ODBC. А как можно не через Excel, а из клиентского приложения (Firebird 2.0, Delphi7, IBX). Т.е. мне с клиентского приложения нужно выцепить другую базу. И есть ли смысл в ODBC, может лучше сразу замахнуться на OLE DB. как перспективней?
Вот еще одна
www.ibase.ru/devinfo/ibx.htm

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: межбазовый обмен (ODBC)

Сообщение WildSery » 14 дек 2007, 12:49

студент-практикант писал(а):мне с клиентского приложения нужно выцепить другую базу
Чего-чего выцепить?
студент-практикант писал(а):И есть ли смысл в ODBC, может лучше сразу замахнуться на OLE DB. как перспективней?
Зависит от задачи.

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 14 дек 2007, 15:16

У меня есть база (Firebird, Delphi, IBX). Есть написанное, готовое клиентское приложение. Мне надо надо сделать к примеру так, чтобы пользователь нажал кнопку на клиентком приложении и получил данные из другой БД написанной под Oracle например (или это будет 1С руководство думает). Мне предстоит большая ответсвенность, надо организовать межбазовый обмен, а я не знаю, как это сделать...

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 14 дек 2007, 15:23

Можешь на это поглядеть, к примеру.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 17 дек 2007, 07:19

студент-практикант писал(а):У меня есть база (Firebird, Delphi, IBX). Есть написанное, готовое клиентское приложение. Мне надо надо сделать к примеру так, чтобы пользователь нажал кнопку на клиентком приложении и получил данные из другой БД написанной под Oracle например (или это будет 1С руководство думает). Мне предстоит большая ответсвенность, надо организовать межбазовый обмен, а я не знаю, как это сделать...
что у тебя большая ответственность, это понятно, непонятно чего ты добиться хочешь?
переделать своего клиента так чтобы он сразу с двумя разнотипными базами работал? нафига? каждой базе свой клиент
или тебе данные перекачать надо? IBpump

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 17 дек 2007, 07:54

Ну и в чём проблемы-то?
Из клиента можно хоть к 10ти базам подключиться - было бы зачем. :-)

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 17 дек 2007, 10:45

Из клиентского приложения хочу взять данные не только из своей БД, но и из 1С тоже или из другой какой-нибудь БД. Ту другую базу зарегистрированную через ODBC из клиентского приложения вижу обычными компонентами BDE (там через поле AliesName я ее вижу и беру), а компонентами IBX чего-то не вижу, а хотелось бы :roll:

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 17 дек 2007, 10:54

Просто я хочу какой-нибудь запросик написать из своего клиентского приложения к другой, не к своей базе и увидеть результат - данные из другой БД. И кстати говоря через IBExpert тоже хорошо бы научиться брать данные из другой базы :D

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 17 дек 2007, 11:08

студент-практикант писал(а):Из клиентского приложения хочу взять данные не только из своей БД, но и из 1С тоже или из другой какой-нибудь БД. Ту другую базу зарегистрированную через ODBC из клиентского приложения вижу обычными компонентами BDE (там через поле AliesName я ее вижу и беру), а компонентами IBX чего-то не вижу, а хотелось бы :roll:
а что у тебя 1С на FB вертится?
да, я вот хочу это и это, сам не знаю нафиг, но хочу, шоб було!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 17 дек 2007, 11:11

Просто я хочу какой-нибудь запросик написать из своего клиентского приложения к другой, не к своей базе и увидеть результат - данные из другой БД.
www.ibase.ru/devinfo/choosecomp.htm
И кстати говоря через IBExpert тоже хорошо бы научиться брать данные из другой базы
из другой - какой. и нахрена это надо IBExpert-у.

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 17 дек 2007, 11:23

У нас 1С на другом сервере крутится, на другом этаже, а моя БД соответсвенно на Firebird. Вот требуется чтобы Firebird (всмысле из клиентского приложения или из Expert) данные из 1С брал. ну скажем написать запрос - объединить табличку из Firebid и 1С и результат увидеть в моем клиентском приложении или запрос - обратиться только к таблицам 1С за какими-нибудь данными из моего клинтского приложения. как-то так :shock:

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 17 дек 2007, 12:08

Чтобы обратиться из приложения к серверу, нужно использовать компоненты которые умеют работать с этим сервером.
Например, IBX умеет Firebird или Interbase.
Ado - MSSQL, ODBC.

Т.е. для работы с Firebird используешь IBX, для работы с 1С - Ado.

Для того, чтобы объединить данные из базы Firebird и 1С вытягиваешь нужные данные по раздельности на клиента, потом их объединяешь.
Или вытягиваешь данные из 1С на клиента, заливаешь в базу Firebird и выполняешь запрос в базе Firebird.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 17 дек 2007, 12:12

студент-практикант писал(а):Вот требуется чтобы Firebird (всмысле из клиентского приложения или из Expert) данные из 1С брал.
FB это не нужно. Нужно твоему клиентскому приложению. Вот и тяни туда что хочешь.
студент-практикант писал(а):ну скажем написать запрос - объединить табличку из Firebid и 1С и результат увидеть в моем клиентском приложении
Ссылку уже поглядел? Что такое MSSQL linked server представляешь?
студент-практикант писал(а):или запрос - обратиться только к таблицам 1С за какими-нибудь данными из моего клинтского приложения.
Вот тебе и говорят - при чём тут FB? Тяни что хошь.

NB: IBExpert своим блоком умеет получать данные из ODBC соединений.

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 17 дек 2007, 13:30

[quote="Tonal"]
Т.е. для работы с Firebird используешь IBX, для работы с 1С - Ado.
quote]

А если БД на Oracle, то какие компоненты доступа можно использовать и какие по-лучше будут?

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 17 дек 2007, 13:39

IBExpert своим блоком умеет получать данные из ODBC соединений.
А как это происходит? Я тоже так хочу! А где можно почитать или взять?

Спасибо за помощь! Буду матерьяльчики узучать, тема большая, требует глубочайшего исследования и как следствие - детальной дискуссии!

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 17 дек 2007, 14:57

А как это происходит? Я тоже так хочу! А где можно почитать или взять?
в хелпе IBExpert.

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 18 дек 2007, 11:21

Единственный прикол после всех обсуждений, это то, что руководство решило межбазовый обмен не делать, а мою базу дописать на 1С как отдельную конфигурацию и стало быть следовательно в моих услугах больше никто не нуждается :roll:
а можно метаданные с Firebird переписать в MS SQL-е.
У меня там ключи, представления, триггеры, хранимые процедуры, есть SQL запрос левое объединение, SQL - запрос передача параметра во вьюшку, SQL писался по первому вхождению (exists) ну и вообщем все, больше ничего интересного нету. Это все добро мое можно ведь просто перенести. MS SQL и Firebird они ведь вроде как похожи. И ксати говоря на какие другие СУБД похож Firebird, он то вроде не часто встретишь, где используется в вакансиях :roll:
P.S. Спасибо всем разработчикам в поддержании темы

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 18 дек 2007, 11:34

студент-практикант писал(а):а можно метаданные с Firebird переписать в MS SQL-е.
Переписать можно. Перенести - нет.
Кроме того, не путай 1С и MSSQL. К MSSQL из 1С ты сможешь разве что через ADO ходить. Но точно также и к FB можно.
студент-практикант писал(а):SQL - запрос передача параметра во вьюшку
Чего куда передача?
студент-практикант писал(а):SQL писался по первому вхождению (exists)
В 1С с версии 8.0 есть почти нормальный SQL. Только exists там нет.
студент-практикант писал(а):MS SQL и Firebird они ведь вроде как похожи.
Ничего подобного. Разве только, что оба сервера БД.

студент-практикант
Сообщения: 60
Зарегистрирован: 14 дек 2007, 10:56

Сообщение студент-практикант » 18 дек 2007, 12:54

Передача параметра во вьюшку, а как правильно называется?

select * from PLATI_TEK_IZDELIA
where id_izdelie=:val
order by id

PLATI_TEK_IZDELIA - платы текущего изделия это вьюшка, а id_izdelie=:val это параметр, кот. я передаю из клиентского приложения из Delphi.

А все СУБД они совсем все разные? А скажем у Oracle и Firebird больше пересечений? и скажем такую конструкцию это в других СУБД тоже так делается?
вообще интересны отличаи СУБД если у кого есть какой интересный матерьяльчик по конкретике подкиньте люди добрые :wink:

Ответить