AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2010, 10:02   #1  
Pudd is offline
Pudd
Участник
 
34 / 10 (1) +
Регистрация: 31.03.2010
Нашёл я ODBC драйвер но но как в в коде написать доступ к fdb не знаю?
Старый 28.05.2010, 12:47   #2  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Если до вечера никто не отпишется, то пришлю пример, дома есть для 3.0.
Старый 28.05.2010, 12:56   #3  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Посмотрите классы BankImport_RU или AddressCodeImport_RU. Там идет импорт из базы, к которой поключаются через ODBC.
Старый 28.05.2010, 14:10   #4  
Pudd is offline
Pudd
Участник
 
34 / 10 (1) +
Регистрация: 31.03.2010
хорошо б пример
Старый 28.05.2010, 16:38   #5  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
PHP код:
  ODBCConnection OC;
  
LoginProperty  LP;
  
Statement      St;
  
ResultSet      rs;
  
str            sql "select get_command_id()";
  ;
  
LP = new LoginProperty();
  
LP.setDSN("Generators"); // имя соединения в system DSN
  
OC = new ODBCConnection(LP);
  
St OC.createStatement();
  
rs st.executeQuery(sql);

  while(
rs.next())
    {
      
info(rs.getString(1));  
    } 
Старый 11.01.2011, 15:15   #6  
Pudd is offline
Pudd
Участник
 
34 / 10 (1) +
Регистрация: 31.03.2010
Цитата:
Сообщение от Shirmin Oleg Посмотреть сообщение
PHP код:
  ODBCConnection OC;
  
LoginProperty  LP;
  
Statement      St;
  
ResultSet      rs;
  
str            sql "select get_command_id()";
  ;
  
LP = new LoginProperty();
  
LP.setDSN("Generators"); // имя соединения в system DSN
  
OC = new ODBCConnection(LP);
  
St OC.createStatement();
  
rs st.executeQuery(sql);

  while(
rs.next())
    {
      
info(rs.getString(1));  
    } 
За основу взяв этот пример, сделал вроде все нормально,
но будет ли работать такая штука "LP.setDSN("Generators")";
на тех клиентских местах где в Панели управления( Windows) Администрирование\Источники ODBC не прописан DSN(в данном случае Generators) Проверить возможности нет
Как поступить чтоб везде работало?
Попробовал разные функции из LP но какую строку писать не знаю внутри
т е последовательность Driver Provider ит д
Старый 11.01.2011, 15:43   #7  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
На вашем месте я бы не стал использовать odbc.
Из своего опыта: odbc (если подключение идет не к источнику данных Microsoft) - вещь глючная, тормозная, не надежная.

В Ax2009 использовал Net для подключения к FB. Все летает! Кроме того гораздо больше возможностей по управлению транзакциями, метаданными и т.п.

И еще:
- этот код работает и на серверной и на клиентской части, нужно лишь установить NET драйвер FB
- Никаких заморочек с настройкой DSN

Вот пример :
X++:
static void Job34(Args _args)
{
    FirebirdSql.Data.FirebirdClient.FbConnection    connection;
    FirebirdSql.Data.FirebirdClient.FbCommand       command;
    FirebirdSql.Data.FirebirdClient.FbDataReader    dataReader;
    str                     sql;
    str                     connectionString;
    InteropPermission   dllPermission = new InteropPermission(InteropKind::ClrInterop);

    Date netDate(UtcDateTime _utcDateTime)
    {
        return DateTimeUtil::date(_utcDateTime);
    }
    real netDouble(real _value)
    {
        return _value;
    }
    

    ;
    dllPermission.assert();

    connectionString = strFmt("User=%1;Password=%2;DataSource=%3;Port=3050;Database=%4;Charset=WIN1251;Dialect=3;ServerTyp=0",
            "UserLogin",
            "UserPassword",
            "ServerAddres",
            "Filename");

    connection = new FirebirdSql.Data.FirebirdClient.FbConnection(connectionString);

    connection.Open();

    if (connection.get_State() == System.Data.ConnectionState::Open)
    {
        sql = "select * from mytable";

        command = new FirebirdSql.Data.FirebirdClient.FbCommand(sql, connection);
        command.set_Transaction(connection.BeginTransaction(System.Data.IsolationLevel::ReadCommitted));

        dataReader = command.ExecuteReader();

        while (chi_NetBoolean(dataReader.Read()) == true)
        {
            // 0..3 - эно номер стобца в результате запроса, можно обратится и по имени слобца в принципе..
            print netDate(dataReader.GetDateTime(0));
            print dataReader.GetString(1);
            print dataReader.GetInt32(2);
            print netDouble(dataReader.GetDouble(3));
        }

        dataReader.Close();

        connection.Close();
    }
}
Старый 11.01.2011, 16:43   #8  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Pudd Посмотреть сообщение
но будет ли работать такая штука "LP.setDSN("Generators")";
на тех клиентских местах где в Панели управления( Windows) Администрирование\Источники ODBC не прописан DSN(в данном случае Generators)
Конечно же нет
Цитата:
Сообщение от Pudd Посмотреть сообщение
Как поступить чтоб везде работало?
В случае с ODBC можно через групповую политику прописать всем нужным товарищам создание двух веточек в реестре HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ с нужными параметрами (конкретные нюансы узнаются у себя на компьютере после создания системного DSN).
Но на самом деле - лучше отойти от ODBC если есть такая возможность и сделать другим способом.
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: jonny.do (1).
Старый 11.01.2011, 18:46   #9  
Shirmin Oleg is offline
Shirmin Oleg
Участник
 
89 / 35 (2) +++
Регистрация: 26.03.2004
Цитата:
Сообщение от Pudd Посмотреть сообщение
но будет ли работать такая штука "LP.setDSN("Generators")";
на тех клиентских местах где в Панели управления( Windows) Администрирование\Источники ODBC не прописан DSN(в данном случае Generators)
Как поступить чтоб везде работало?
Настроить соединение на сервере и на нем же и запускать.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mbsturk: Ax 2009 Rollup 4 Version Checker Blog bot DAX Blogs 0 29.04.2010 17:05
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:15.