Всем доброго дня. Прошу совета вот в каком вопросе. У меня есть две аксаптовских БД (4 и 12). Так уж получилось что и в той в той есть одинаковые товары, но в базе Ах4 в отдельной таблице есть картинки. Задача при нажатии кнопки в Ах12 подтягивать картинку из базы Ах4 и записывать её в базу Ах12. Где-то натыкался на подобное обсуждение, но не могу его сейчас найти.
Пробовал вот так
X++:
loginProperty = new LoginProperty();
loginProperty.setServer (systemParameters.Ax4ServerName);
loginProperty.setDatabase(systemParameters.Ax4DatabaseName);
odbc = new ODBCConnection(loginProperty);
if(odbc)
{
binData = new BinData();
statement = odbc.createStatement();
queryText = strfmt(<>);
perm = new SqlStatementExecutePermission(queryText);
perm.assert();
odbc.ttsbegin();
resultSet = statement.executeQuery(queryText);
CodeAccessPermission::revertAssert();
resultSet.next();
inventItemImage = InventItemImage::findOrCreate(_inventTable.ItemId, InventItemImageFormat::FullAx, true);
// но не могу из resultSet забрать картинку и положить в binData
odbc.ttscommit();
inventItemImage.Image = binData.getData();
inventItemImage.update();
_inventTable.IsImage = NoYes::Yes;
_inventTable.update();
Может у кого-нибудь все-таки получилось из resultSet достать картинку?
Еще пробую вот так
X++:
sqlConnection = new System.Data.SqlClient.SqlConnection(strFmt("Data Source=%1;Initial Catalog=%2;Integrated Security=True",
systemParameters.Ax4ServerName,
systemParameters.Ax4DatabaseName));
queryText = strfmt(<>);
sqlCommand = new System.Data.SqlClient.SqlCommand(queryText, sqlConnection);
try
{
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();
binData = new BinData();
binData.setData(sqlCommand.get_Container());
// вот тут ругается на что setData вызван с недопустимыми параметрами
sqlCommand.Dispose();
sqlConnection.Close();
sqlConnection.Dispose();
ttsBegin;
inventItemImage = InventItemImage::findOrCreate(_itemId, InventItemImageFormat::FullAx, true);
inventItemImage.Image = binData.getData();
inventItemImage.update();
ttsCommit;
}
catch
{
info(CLRInterop::getLastException().ToString());
sqlConnection.Close();
}
В этом случае я в правильном направлении иду?
Еще был вариант слинковать сервера и написать что-то вроде
X++:
update t1 set t1.Image=t2.Image
from TableWithImage t1 join [SQLAx4].Ax4.dbo.TableWithImage t2
но мне сказали что при выполнении подобных запросов на линкованных серверах сначала требуемая таблица полностью скачается на сервер, а лишь потом из неё сделается выборка. В данном случае в таблице картинки и перекидывать её между серверами неприемлемо.