mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Obsłużenie Null w ambasic https://forum.mix-soft.pl/viewtopic.php?f=15&t=10561 |
Strona 1 z 1 |
Autor: | krzysztofsymfonia [ 2023-07-05, 16:07 ] |
Tytuł: | Obsłużenie Null w ambasic |
Hej, wczytuje sobie dokument xml (faktura z pozycjami) i chce odczytać jego pola, wszystko ok działa. Ale, mam pole OrderedUnitNetPrice, ale okazuje sie ze w ktorejs pozycji faktury nie ma takiego pola w xml. Handel wyrzuca błąd obiekt Ole nie został zainicjowany dla linijki: Kod: cena = xDoc.getElementsByTagName("OrderedUnitNetPrice").item(k).text próbowałem dać Kod: if xDoc.getElementsByTagName("OrderedUnitNetPrice").item(k).Count >0 albo Kod: xDoc.getElementsByTagName("OrderedUnitNetPrice").Count Czy da się w ambasicu zobić try catch jakoś ? |
Autor: | rafal [ 2023-07-05, 21:18 ] |
Tytuł: | Re: Obsłużenie Null w ambasic |
Tak możesz to obsłużyć. Czy używasz Microsoft.XMLDOM do odczyty xml'a? |
Autor: | Arek44 [ 2023-07-05, 22:39 ] |
Tytuł: | Re: Obsłużenie Null w ambasic |
Podłączam się pod temat, bo mam analogiczny problem przy czytaniu XMLi i musiałem zduplikować raport, żeby go ominąć. Używam Microsoft.XMLDOM do odczytu. |
Autor: | rafal [ 2023-07-06, 07:49 ] |
Tytuł: | Re: Obsłużenie Null w ambasic |
użyj SelectNodes do sprawdzenia czy istnieje element Poniższa funkcja w przypadku braku elementu podstawia wartość domyślną Kod: string sub NodeValue( dispatch x, string xmlpath, string defVal) if x.selectNodes( xmlpath ).length then NodeValue = x.selectNodes( xmlpath ).item( 0 ).text else NodeValue = defVal endif endsub wtedy Twój kod będzie wyglądał Kod: print NodeValue(xDok, "OrderedUnitNetPrice","0") Czy o to chodziło? |
Autor: | krzysztofsymfonia [ 2023-07-07, 09:46 ] |
Tytuł: | Re: Obsłużenie Null w ambasic |
rafal pisze: użyj SelectNodes do sprawdzenia czy istnieje element Poniższa funkcja w przypadku braku elementu podstawia wartość domyślną Kod: string sub NodeValue( dispatch x, string xmlpath, string defVal) if x.selectNodes( xmlpath ).length then NodeValue = x.selectNodes( xmlpath ).item( 0 ).text else NodeValue = defVal endif endsub wtedy Twój kod będzie wyglądał Kod: print NodeValue(xDok, "OrderedUnitNetPrice","0") Czy o to chodziło? Tak , choć w międzyczasie sam to samo sobie znalazłem. Ale pozostaje główne pytanie czy można obsłużyć błędy na zasadzie try catch i jeszcz finaly najlepiej :) |
Autor: | rafal [ 2023-07-07, 10:16 ] |
Tytuł: | Re: Obsłużenie Null w ambasic |
Nie można niestety. Możesz to ominąć pisząc kontrolkę w C# i rejestrując ją w systemie. Wtedy zrobisz część zadania w C# (Matadane) z try catch i przekażesz wynik do AMBasic. Powinniśmy już powoli zapominać o AmBasic na rzecz skryptów C# i modułów PRISM. |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |