Использование C # в Visual Studio MCV для извлечения данных о количестве на руках из Sage 300 ERP всегда возвращает 0 - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время я создал приложение (используя веб-приложение 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'."

Еще раз спасибо за вашу помощь заранее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...