22.06.2010, 19:50 | #1 |
Участник
|
ModifiedDateTime и Business Connector
С# аппликация читает данные с Аксапты. Необходимо получить только данные которые изменились за последний день. Подключил к таблице modifiedDateTime. Кто нибудь можеть помочь - как писать Query для получения данных???
axRecord.ExecuteStmt("select * from %1") - Все нормально axRecord.ExecuteStmt("select * from %1 where %1.modifieddatetime > '" + DateTime.Now.AddDays(-1) + '") - не работает (пробовал екпериментировать с форматом - никакого результата). Буду весьма благодарен за помощь. |
|
23.06.2010, 09:38 | #2 |
----------------
|
"никакого результата" - это не возвращаются записи или получается ошибка?
а на SQL-сервер какой запрос в результате уходит? а после "екпериментировать с форматом"? |
|
23.06.2010, 11:26 | #3 |
Участник
|
"никакого результата" - это получаются ошибки.
Ошибки типа: Unable to compile "static void ComExecuteStmt(MDCategory axTbl_0) { select * from axTbl_0 where axTbl_0.modifieddatetime > 6/23/2010 10:25:50 AM;} ". |
|
23.06.2010, 12:28 | #4 |
Участник
|
Всем спасибо - вопрос решен!
|
|
23.06.2010, 12:29 | #5 |
Ищущий знания...
|
каким способом? в чем причина? поделитесь если не секрет
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
23.06.2010, 13:10 | #6 |
Участник
|
Причина конечно же в форматах. Надо было писать что-то такое:
axRecord.ExecuteStmt("select forupdate * from %1 where %1.modifieddatetime > str2datetime('" + dt.ToString() + "', 213)"); |
|
|
За это сообщение автора поблагодарили: lev (2). |
22.09.2010, 13:30 | #7 |
Участник
|
У меня похожая ситуция ... только со string-ами ...
X++: axInventTable.ExecuteStmt(String.Format("select ItemName from InventTable where InventTable.ItemId == '%1'", _ItemId)); |
|
22.09.2010, 13:52 | #8 |
Ищущий знания...
|
Цитата:
X++: axInventTable.ExecuteStmt(String.Format('select ItemName from InventTable where InventTable.ItemId == "%1"', _ItemId));
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
22.09.2010, 14:42 | #9 |
Участник
|
Извините за offtop, но не могу удержаться. Мне кажется не нужно программировать аксапту во внешней системе. Много лишних усилий, да и код получается не очень читабельным. На мой взгляд, лучше создать класс в AX, сделать в нем методы, которые будут принимать нужные параметры, и из внешней системы с помощью BC "дёргать" этот класс.
|
|
|
За это сообщение автора поблагодарили: gl00mie (1), kornix (1). |
22.09.2010, 14:59 | #10 |
MCP
|
Абсолютно согласен со _scorp_!
При любых реализациях во внешних системах лучше создавать специальный класс в аксапте со статическими методами. Вся логика выполняется в Ax, а при разработке остается только передавать и принимать из этих методов готовые значения. Код в C# получается красивее, и при модификациях в дальнейшем, если требуется что-то изменить - можно сделать проект в Ax и перенести его на рабочее приложение. При этом, не потребуется перезапуск внешнего сервиса, который использует .Net Business Connector, не придется делать ничего лишнего. Рекоммендую! Последний раз редактировалось kornix; 22.09.2010 в 15:02. |
|
22.09.2010, 17:47 | #11 |
NavAx
|
А можно юзать AIF - получится совсем хорошо и замечательно. А с "ростом" можно и бизнес-логику какую-никакую туда прикрутить. И сделать надо это один раз. А уж потом - употребить Web-сервис сейчас можно откуда угодно.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
Теги |
business connector, modifieddatetime |
|
|