| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Работа FireBird(FDB) в AX 2009
			 
			
			Собственно интересуют варианты  как можно организовать взаимодействие между таблицами из Fdb базы с аксаптовскими таблицами в обе стороны   т е как на запись та и на чтение из обоих баз 
		
		
		
		
		
		
		
	Через ODBC или Ole DB какие и ка лучше драйверы поставить на fdb Желательно пример  
		 | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я когда-то работал через ODBC, но мне только читать из FB базы нужно было. Примеров к сожалению нет, но помню что база была какой-то софтины для таможенных брокеров.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нашёл я ODBC драйвер но но как  в в коде написать  доступ к fdb не знаю?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если до вечера никто не отпишется, то пришлю пример, дома есть для 3.0.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Посмотрите классы BankImport_RU или AddressCodeImport_RU. Там идет импорт из базы, к которой поключаются через ODBC.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			хорошо б  пример
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 PHP код: 
	
			
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Проводили эксперименты на эту тему. Вот отрывки кода, который работал. Если причесать немного - то в общем вполне работоспособно. 
		
		
		
		
		
		
		
	Для работы этого, насколько помнится, необходимо предварительно установить драйверы (там их 2 типа, ясно из названий. Работали оба). Но в итоге остановились на использовании низкоуровневых функций клиентской библиотеки gds32.dll (Пришлось повозится с месяц с их описанием). Кстати, почему бы не попробовать использовать .NET правайдер для FB ? В ax2009 с этим вроде бы без проблем ? X++: static void access_2interbase(Args _args) { CCADOConnection cn = new CCADOConnection(); CCADOCommand command = new CCADOCommand(); CCADORecordset rs = new CCADORecordset(); CCADORecordset rs1 = new CCADORecordset(); int k; DSOConnection cn = new DSOConnection(); DSOCommand command = new DSOCommand(); DSORecordset rs = new DSORecordset(); DSOFields fields; DSO_Recordset d_rs; InvenTtable inventTable; ; cn.connection().open(strfmt("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=K:\\Data\\base.gdb")); cn.open(strfmt("DATABASE=G:\\Data\\base.gdb;DIALECT=3;DRIVER=Gemini InterBase ODBC Driver 2.0;OPTIONS=1;PWD=masterkey;PROTOCOL=1;UID=SYSDBA;VERSION=6' ")); command.setActiveConnection(cn); command.commandText("update goods set cod = 4 where cod = '3'"); rs = command.execute(); command.activeConnection(cn); command.commandText("select * from goodsgroups"); rs = command.execute(); while (!rs.eof()) { info(chi_str(rs.fields().itemName("id").value())); info(chi_str(rs.fields().itemName("name").value())); info(chi_str(rs.fields().itemName("description").value())); rs.fields().itemI rs.recordSet().Update(2, "aaaa"); rs.moveNext(); k ++; if (k==10) break; } // insert command.commandText("insert into managers (ID,NAME) VALUES ('2','ccc')"); rs = command.execute(); d_rs = cn.Execute("select * from goods",, 0); d_rs.setActiveConnection(cn); d_rs = cn.Execute("select * from goods", null, 0); d_rs.MoveFirst(); d_rs.Update( !rs.eof()) { info(chi_str(rs.fields().itemName("id").value())); info(chi_str(rs.fields().itemName("id").value()) + "\t" + chi_str(rs.fields().itemName("name").value())); info(chi_str(rs.fields().itemName("id").value()) + "\t" + chi_str(rs.fields().itemName("description").value())); command.commandType(); //dig DSORecordset rs.moveNext(); k ++; if (k==10) break; } while select ItemId, ItemName from inventTable { command.commandText("insert into table1 (COD,NAME) VALUES " + "('" + inventTable.ItemId + "', '" + str2str(inventTable.ItemName) + "')"); rs = command.execute(); } info(time2str(timenow(),0,0) + " end"); cn.close(); }  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Shirmin Oleg
			 
 
			PHP код: 
	
			
	но будет ли работать такая штука "LP.setDSN("Generators")"; на тех клиентских местах где в Панели управления( Windows) Администрирование\Источники ODBC не прописан DSN(в данном случае Generators) Проверить возможности нет ![]() Как поступить чтоб везде работало? Попробовал разные функции из LP но какую строку писать не знаю внутри т е последовательность Driver Provider ит д  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На вашем месте я бы не стал использовать 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 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
![]() В случае с ODBC можно через групповую политику прописать всем нужным товарищам создание двух веточек в реестре HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ с нужными параметрами (конкретные нюансы узнаются у себя на компьютере после создания системного DSN). Но на самом деле - лучше отойти от ODBC если есть такая возможность и сделать другим способом. 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: jonny.do (1). | |
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от sukhanchik
			 
 
			Конечно же нет  
		
	![]() В случае с ODBC можно через групповую политику прописать всем нужным товарищам создание двух веточек в реестре HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ с нужными параметрами (конкретные нюансы узнаются у себя на компьютере после создания системного DSN). Но на самом деле - лучше отойти от ODBC если есть такая возможность и сделать другим способом. Отойти от ODBC в принципе можно попробую вариант someOne Может ещё какие варианты будут ? P S Да база Fdb Располагается не локально а сети Последний раз редактировалось Pudd; 11.01.2011 в 17:00.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Настроить соединение на сервере и на нем же и запускать.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Пытаюсь воскресить динозавра. 
		
		
		
		
		
		
		
		
			Ax 2009. FirebirdClient под .NET 3.5(https://sourceforge.net/projects/fir...rovider/2.5.2/) При попытке заюзать библиотеку вываливается синтаксическая ошибка при компиляции на пространстве имен .Data: DataFirebirdSql.Data.FirebirdClient.FbCommand После Data подстановка отваливается собственно... Не в курсе в чем может быть дело? Последний раз редактировалось jonny.do; 05.06.2020 в 16:58.  | 
| 
	
 | 
| 
	
	 | 
	
		
  |