mojaSymfonia FORUM
https://forum.mix-soft.pl/

Tworzenie nowego dokumentu przez COM - problem z BIORec
https://forum.mix-soft.pl/viewtopic.php?f=15&t=2394
Strona 1 z 1

Autor:  lt_maxon [ 2010-10-13, 13:25 ]
Tytuł:  Tworzenie nowego dokumentu przez COM - problem z BIORec

Witam

Rozpoczynam dopiero pracę z obiektem integracji i mam mały problem z obiektem typu BIORec. Utrudnieniem jest fakt że nie korzystam z VBA, ale z czegoś wyłącznie podobnego, czyli LotusScript.

Nie mam problemu z dostaniem się do dokumentów i z odczytem danych, jednak z jakiegoś powodu podczas importowania dokumentu pojawia się błąd.

Poniżej, fragment zmodyfikowanej wersji kodu podanego w dokumentacji:

Kod:
   Set xFactory = objHMF.GetApplication.PropertyAp("HFactory")
   Set xBIORec = xFactory.NewObject("BIORec")
   nError= xBIORec.SetField("typDk", "FVS")
   Call blad("1",nError)
   nError= xBIORec.SetField("seria", "sFVS")
   Call blad("2",nError)
   nError=  xBIORec.BeginSection("danekh")
   Call blad("3",nError)
   nError= xBIORec.SetField("khnazwa","Maksymilian Katz")
   Call blad("4",nError)
   nError= xBIORec.SetField("khulica","Zdrojowa")
   Call blad("5",nError)
   nError= xBIORec.SetField("khdomu","1")
   Call blad("6",nError)
   nError= xBIORec.SetField("khlokal","3")
   Call blad("7",nError)
   nError= xBIORec.SetField("khkodpocz","87-720")
   Call blad("8",nError)
   nError= xBIORec.SetField("khmiasto","Ciechocinek")
   Call blad("9",nError)
   nError= xBIORec.EndSection()
   Call blad("10",nError)
   nError=  xBIORec.BeginSection("Pozycja dokumentu")
   Call blad("11",nError)
   nError= xBIORec.SetField("opis","usługa rozrywkowa")
   Call blad("12",nError)
   nError= xBIORec.SetField("ilosc","2")
   Call blad("13",nError)
   nError= xBIORec.SetField("jednostkaMiary","godz.")
   Call blad("14",nError)
   nError= xBIORec.SetField("cena","75")
   Call blad("15",nError)
   nError= xBIORec.EndSection()
   Call blad("16",nError)
   nError=  xBIORec.BeginSection("rejestr")
   Call blad("17",nError)
   nError= xBIORec.SetField("kod","KASA") 
   Call blad("18",nError)
   nError= xBIORec.EndSection()
   Call blad("19",nError)
   Set xFunkcja = xFactory.NewObject("BFunkcja")
   
   Dim lId As Variant
   lId = xFunkcja.ImportSp(xBIORec)
   


Call blad() - zwraca mi nr błędu. W tym przypadku, po uruchomieniu, błąd pojawia się w przypadku 10,16 i 19. Co oznacza, że błąd występuje zawsze przy wywołaniu xBIORec.EndSection().
Do importowania oczywiście nie dochodzi z powodu błędu

Zamiast dispatch jest Set, metody wywołujemy przez Call, wszelkie obiekty sa zadeklarowane jako Variant (odpowiednik Object), wiec teoretycznie wszystko powinno dzialac. Przypisanie nError= xBIORec.EndSection() zamiast xBIORec.EndSection(), bierze się z innej składni LotusScript. Wywołanie samego Call kończy się błędem.

Na temat błędów samego BIORec jest w dokumentacji niewiele i niestety kończą mi się pomysły. Jeśli ktoś ma jakiekolwiek wskazówki na ten temat to byłbym wdzięczny.

Pozdrawiam.

Autor:  xtm [ 2010-10-20, 10:25 ]
Tytuł: 

Nie wiem dlaczego ale EndSection() bez względu na to czy się go wykonuje poprzez BIORec czyteż IORec zwraca 1, więc nie sugerowałbym się że w tych liniach jest błąd.

Przerobiłem kod na AmBasic i dokument się importuje bez problemów.
Dodam, że sprawdzałem w wersji HMF 2010.2.

Autor:  lt_maxon [ 2010-10-21, 19:11 ]
Tytuł: 

Wielkie dzięki za wskazówkę.

Okazuje się, że faktycznie coś zaczął wpisywać do bufora więc jest postęp.
Wcześniej wyskakiwał błąd:

System.Runtime.InteropServices.COMException (0x80010105): Serwer wywołał wyjątek. (Wyjątek od HRESULT: 0x80010105 (RPC_E_SERVERFAULT)),

więc pewnie jeszcze trochę powalczę.

Pozdrawiam.

Autor:  daniel [ 2010-10-26, 15:18 ]
Tytuł: 

Nie ma sensu pobierania wartości z metody EndSection().
Jest to metoda, która służy tylko i wyłącznie logice Handlu.
A wyjątek mógł dotyczyć właśnie próby pobrania wartości z tej metody.

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/