В настоящее время я создал приложение (используя веб-приложение Visual Studio .Net MVC в C #), которое открывает определенные представления в Sage 300, которые я затем использую для извлечения конкретной информации из таблицы. В настоящее время я пытаюсь получить данные о количестве на руках (число) из окна просмотра SOT 300 IC0290 ROTO ID. Код, который я имею, вернет только «0». Он возвращает другую информацию из той же таблицы, если значения этой информации являются строками. Тип значения для QTYONHAND - BCD * 10.4. Я пытаюсь использовать десятичный в C #, но он возвращает 0. У меня есть код, указанный ниже. Если у кого-то есть идеи о том, как я могу получить фактические данные, я был бы очень признателен.
private void OpenSessionDBandView()
{
// Create, initialize and open a session.
session = new Session();
session.Init("", "XY", "XY1000", "62A");
session.Open("ADMIN", "ADMIN", "SAMINC", DateTime.Today, 0);
// Open a database link.
mDBLinkOpen = session.OpenDBLink(DBLinkType.Company, DBLinkFlags.ReadWrite);
// Open the I/C Items View - "IC0310"
icItemView = mDBLinkOpen.OpenView("IC0310");
// Open the I/C Items View (Quantities on Hand) - "IC0290"
icLocationDetailsView = mDBLinkOpen.OpenView("IC0290");
}
public string DoIt()
{
string returnHTML;
OpenSessionDBandView();
decimal itemQoH;
// "itemNumber" is a value derived from a form created. User submits the item number.
icLocationDetailsView.Fields.FieldByName("ITEMNO").SetValue(itemNumber, false);
icLocationDetailsView.Read(false);
itemQoH = (decimal)icLocationDetailsView.Fields.FieldByName("QTYONHAND").Value;
returnHTML = returnHTML + "Quantity on Hand = " + itemQoH;
return returnHTML;}
Затем HTML-код гласит: «Количество в наличии = 0,0000»
Для проверки соединения и точности таблицы я использовал этот код, который работал правильно.
String itemAccountSetCode;
icLocationDetailsView.Fields.FieldByName("ITEMNO").SetValue(itemNumber, false);
icLocationDetailsView.Read(false);
itemAccountSetCode= (String)icLocationDetailsView.Fields.FieldByName("CNTLACCT").Value;
returnHTML = returnHTML + "Item Account Set Code = " + itemAccountSetCode;
Затем HTML-код гласит: «Код набора элементов счета = FIFO»
Это правильно. Кажется, что строки работают правильно, а цифры - нет.
В документации API перечислено следующее:
Field = QTYONHAND
Index = 7
Type = BCD*10.4 (This is where I believe the problem is)
Это данные для работающего значения:
Field = CNTLACCT
Index = 63
Type = String*6
Надеюсь, этого достаточно, чтобы кто-то мог мне помочь. Я должен также добавить, что я пытался преобразовать BCD в десятичную, но у меня не было успеха. Visual Studio также находит исключение, если я пытаюсь пометить переменную как строку со следующей ошибкой:
"невозможно привести объект типа 'system.decimal' к типу 'system.string'."
Еще раз спасибо за вашу помощь заранее!