Список форумов КЛУБ FileMaker.RU КЛУБ FileMaker.RU

 
new forum: www.fmforum.ru
FileMaker DevCon Rus 2017.IV коенференция российских разработчиков на платформе FileMaker.
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Обращение к SQL-серверам из FM
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов КЛУБ FileMaker.RU -> Практика FM
Предыдущая тема :: Следующая тема  
Автор Сообщение
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Чт Янв 29, 2004 4:37 pm    Заголовок сообщения: Обращение к SQL-серверам из FM Ответить с цитатой

Если кто работал с любыми SQL-серверами из FM милости прошу поделиться опытом. Какие есть варианты и результаты. В свою очередь, если интересно, могу описать работу с сервером FireBird.

С уважением. Андрей.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_Z



Зарегистрирован: 17.11.2003
Сообщения: 871

СообщениеДобавлено: Чт Янв 29, 2004 9:14 pm    Заголовок сообщения: Re: Обращение к SQL-серверам из FM Ответить с цитатой

AndrEw писал(а):
если интересно, могу описать работу с сервером FireBird


Интересно конечно!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Пт Янв 30, 2004 12:31 pm    Заголовок сообщения: Ответить с цитатой

Работа с сервером FireBird/Interbase через ODBC.

В качестве примера возьмём самый простой вариант: есть некий файл клиентов Customers.fp5 со следующими полями:

CustomerIDX Number Auto-enter Serial, Unique (Уникальный индекс записи)

CustomerName Text (Наименование клиента)

CustomerAddress Text (Адрес клиента)

Допустим необходимо, чтобы записи о клиентах сохранялсь не только в самом файле Customers.fp5, но и в таблице на сервере

FireBird.

Создаём аналогичную таблицу клиентов CUSTOMERS_FB на сервере FireBird c полями:

F_IDX INTEGER (Уникальный индекс записи)

F_CUSTOMER_NAME VARCHAR(100) (Наименование клиента)

F_CUSTOMER_ADDRESS VARCHAR(100) (Адрес клиента)

F_FM_IDX INTEGER (Номер записи клиента в файле Customers.fp5 - поле CustomerIDX)

Далее добавляем в Customers.fp5 вычисляемое поле CustomerSQLCalc Calculation, в котором будет формироваться текст SQL, хотя в принципе этот текст можно формировать динамически в любом глобальном поле спомощью скрипта и потом передавать его серверу для выполнения.

В хелпе FM подробно описано, какие операторы SQL позволяет использовать FM (SELECT, UPDATE, INSERT...), но на самом деле

удобнее всего написать хранимую процедуру на сервере, которая будет обновлять и добавлять записи одновременно. В процедуру

можно заложить любую логику какая нужна разработчику при добавлении записи на сервер.

Теперь напишем саму процедуру:

// ---------------------------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE INSERT_CUSTOMER_FROM_FM

(

P_CUSTOMER_NAME VARCHAR(100)

P_CUSTOMER_ADDRESS VARCHAR(100)

P_FM_IDX INTEGER

)

BEGIN

if ( not exists (select F_FM_IDX from paydoc where F_FM_IDX = :P_FM_IDX) )

then

begin

insert into CUSTOMERS_FB

(

F_CUSTOMER_NAME,

F_CUSTOMER_ADDRESS,

F_FM_IDX

)

values

(

: P_CUSTOMER_NAME,

: P_CUSTOMER_ADDRESS,

: P_FM_IDX

);

end

else

begin

execute procedure UPDATE_CUSTOMER_FROM_FM

(

: P_CUSTOMER_NAME,

: P_CUSTOMER_ADDRESS,

: P_FM_IDX

);

end

END

// ---------------------------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE UPDATE_CUSTOMER_FROM_FM

(

P_CUSTOMER_NAME VARCHAR(100)

P_CUSTOMER_ADDRESS VARCHAR(100)

P_FM_IDX INTEGER

)

AS

begin

update CUSTOMERS_FB set F_CUSTOMER_NAME = :P_CUSTOMER_NAME,

F_CUSTOMER_ADDRESS = :P_CUSTOMER_ADDRESS

where F_FM_IDX = :P_FM_IDX;

suspend;

end

// ---------------------------------------------------------------------------------------------------------------------------------------------

В поле CustomerSQL (возвращаемый результат должен быть Text) опишем вызов процедуры:

"execute procedure INSERT_CUSTOMER_FROM_FM ('"

& CustomerName & "', '"

& CustomerAddress & "', '"

& NumToText(CustomerIDX)

& "')"



В скрипте опишем выполнение текста SQL сформрованного в поле CustomerSQL:

Execute SQL[No dialog, "DSN:FIRE_BIRD", "CustomerSQL"], где "DSN:FIRE_BIRD" - алиас ODBC базы на сервере FireBird,

"CustomerSQL" - поле из которого берётся текст SQL.



Выполнение данного скрипта приведёт к появлению в таблице на сервере FireBird текущей записи о клиенте.



Синронизацию данных между таблицей FM и таблицей на сервере можно с помощью процедуры Import Records, в

качестве источника - Файл/ODBC, сам запрос формируется в другом вычисляемом поле, что указывается при импорте:

"select F_CUSTOMER_NAME, F_CUSTOMER_ADDRESS, F_FM_IDX from CUSTOMERS_FB where F_FM_IDX = " & NumToText(CustomerIDX)

Здесь поле F_FM_IDX используется для синхронизации записей при импорте ( F_FM_IDX<=>CustomerIDX)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
mk



Зарегистрирован: 18.01.2004
Сообщения: 11
Откуда: Moscow

СообщениеДобавлено: Чт Фев 05, 2004 5:22 pm    Заголовок сообщения: Ответить с цитатой

А можно напроситься на очное собеседование?

У нас большая проблема: есть ФМ-база по школе и есть навязанная сверху программа, с помощью которой нужно эпизодически делать и сдавать отчеты. Эта программа, насколько я понял, хранит данные в Firebird. Если бы удалось наладить экспорт-импорт данных между существующей базой и этой, существенно упростилась бы наша жизнь. Кроме того, учитывая несопоставимость этого уродца с уже существующей функциональностью нашей базы, можно было бы даже помечтать ... ;o)

mk@macmail.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Чт Фев 05, 2004 6:07 pm    Заголовок сообщения: Ответить с цитатой

To mk:

А в каком городе Вы находитесь? Smile Просто из Вашего профайла этого не видно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
mk



Зарегистрирован: 18.01.2004
Сообщения: 11
Откуда: Moscow

СообщениеДобавлено: Чт Фев 05, 2004 6:11 pm    Заголовок сообщения: Ответить с цитатой

Московская школа 45 (м.Академическая ул.Гримау 8 )

schools.techno.ru/ms45/win/ivc
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Чт Фев 05, 2004 6:13 pm    Заголовок сообщения: Ответить с цитатой

Ну я Вам уже отправил письмо
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
baywind



Зарегистрирован: 26.01.2004
Сообщения: 15
Откуда: Школа 45

СообщениеДобавлено: Пн Мар 08, 2004 10:52 pm    Заголовок сообщения: Ответить с цитатой

не получается соединить ФМ с ODBC.

Как поставить ODBC дрова на клиентскую машину (с ФМ)?

я в хелп залез, но то, что там написано не имеет ничего общего, с тем,что происходит на самом деле.

(в первуюочередь интересует случай с Мак Осью)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Вт Мар 09, 2004 10:24 am    Заголовок сообщения: Ответить с цитатой

Я с маками не работал, но не думаю что установка ODBC должна вызывать там какие-то проблемы. На PC установить ODBC можно скачав инсталлятор ODBC под конктретный SQL-сервер, или при установке самого сервера либо его клиентской части на данную машину. Вам видимо надо почитать, как происходит установка ODBC на мак ось. Удачи Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_Z



Зарегистрирован: 17.11.2003
Сообщения: 871

СообщениеДобавлено: Вт Мар 09, 2004 10:48 am    Заголовок сообщения: Ответить с цитатой

baywind писал(а):
Как поставить ODBC дрова на клиентскую машину (с ФМ)?


ODBC драйвера идут в комплекте к FileMaker Pro, но по-умолчанию они не устанавливаются, вместо этого в папку FMP копируется отдельный VISE-инсталлятор драйверов ODBC:

/Applications/FileMaker Pro 6 Folder/FileMaker ODBC Drivers/FileMaker Pro ODBC Drivers

Запустите этот инсталлятор и установите нужные драйвера.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Вт Мар 09, 2004 11:09 am    Заголовок сообщения: Ответить с цитатой

Мне кажется вопрос был как подключить FM через ODBC драйвер к SQL серверу. Что касается поставки FM, у меня все драйвера поставились при установке самого FM: FileMaker Pro (для доступа к самому FM), FileMaker SQL Server Driver, FileMaker Text Driver, FileMaker Oracle8 Driver. Что касается других серверов, то драйвера для них нужно доставлять отдельно, например я недавно установил сервер Caché, в поставке которого идёт драйвер ODBC, через который FM нормально работает с базой Caché. Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
baywind



Зарегистрирован: 26.01.2004
Сообщения: 15
Откуда: Школа 45

СообщениеДобавлено: Вт Мар 09, 2004 10:31 pm    Заголовок сообщения: Ответить с цитатой

Alex_Z писал(а):
Запустите этот инсталлятор и установите нужные драйвера.


До этого я догадался и сам.

А дальше?

Я пытался поступить так, как написано в хелпе к ФМ - не получилось.

То, что я вижу на экране не похоже на то, что описано в хелпе.

как правильно настроить ODBC Source?

Есть SQL сервер (Firebird) на одним компе (виндовом) и ФМ на другом (маке).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
baywind



Зарегистрирован: 26.01.2004
Сообщения: 15
Откуда: Школа 45

СообщениеДобавлено: Вт Мар 09, 2004 10:36 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
отдельный VISE-инсталлятор драйверов ODBC


Я надеялся,что после инсталляции просто появится драйвер, но

после запуска инсталлятора появилась программа почти идентичная встроенной в систему (Mac OS X) утилите "ODBC Manager".

А нельзя ли воспользоваться встроенными средствами?

Где находится тот драйвер, который установил этот инсталлятор?Чтобы можно было спокойно добавить его в ODBC Manager и работать так, как это предусмотрено системой.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
mk



Зарегистрирован: 18.01.2004
Сообщения: 11
Откуда: Moscow

СообщениеДобавлено: Чт Мар 11, 2004 1:16 pm    Заголовок сообщения: Ответить с цитатой

Поскольку проблема "чайничная" и гуру, видимо, напрягает подробно описывать ответы, не могли бы дать ссылку на доходчивый ресурс, в котором можно было бы понять азы настройки odbc. Когда понятно, "куда лошадь запрягать", легче решать более сложные вещи и задавать конкретные вопросы.

Еще раз о нашей задаче:

- есть рабочая сетевая(!) база на FM6 (FM-server + FM-clients)

- есть навязываемая БД на базе Firebird

- нужно связать обе базы, чтобы иметь возможность конвертировать данные

- возможный вариант на перспективу: Firebird-server+FM-client

Нужно понять:

- что сделать на Firebird, чтобы к ней обращаться по сети через odbc

- что нужно сделать на Маке, чтобы с него обращаться к Firebird через odbc

Возможен экстремальный вариант:

- на одну РС поставить оба продукта и конвертить, но это вариант тупиковый (без перспективы на развитие)

Этот путь предположительно понятен, но если известны подводные камни, просьба сообщить.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AndrEw



Зарегистрирован: 30.09.2003
Сообщения: 223
Откуда: Russia, Moscow

СообщениеДобавлено: Чт Мар 11, 2004 1:26 pm    Заголовок сообщения: Ответить с цитатой

http://shop.soft-info.ru/comments.php?id=247
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов КЛУБ FileMaker.RU -> Практика FM Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB