API XL wykonaj wydruk - pdf

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

john_doe
Posty: 650
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

API XL wykonaj wydruk - pdf

Post autor: john_doe »

Hej,

mam taki kod, który jest "ubogi" jednak narazie chodzi o to aby zadziałał.
Niestety otrzymuję

Nieznaleziony Clarion-proxy do obsługi interface-u COM.
Nie wczytany DLL zawierający odpowiedni proxy.
Załadować statycznie odpowiedni interface proxy.


puściłem rejestr.bat nic nie pomogło
kod

Kod: Zaznacz cały

        private void drukuj()
        {
            Int32 APIVersion = 19;
            Int32 SessionID = -1;
            Int32 loginResult;

            try
            {
                cdn_api.XLLoginInfo_20 Login = new cdn_api.XLLoginInfo_20();

                Login.Wersja = APIVersion;
                Login.Winieta = -1;
                Login.ProgramID = "API Printout to pdf";
                Login.UtworzWlasnaSesje = 0;
                
                loginResult = cdn_api.cdn_api.XLLogin(Login, ref SessionID);


                cdn_api.XLWydrukInfo_20 printIt = new cdn_api.XLWydrukInfo_20();

                printIt.Wersja = APIVersion;
                printIt.DrukujDoPliku = 1;
                printIt.Zrodlo = 1;
                printIt.Format = 2;
                printIt.Wydruk = 2;
                printIt.FiltrSQL = "(TrN_GIDTyp=2033 AND TrN_GIDNumer=461877722)";
                printIt.Urzadzenie = 3;
                printIt.PlikDocelowy = @"C:\\Users\Krychu\Documents\xl.pdf";

                Int32 printResult;
                printResult = cdn_api.cdn_api.XLWykonajPodanyWydruk(printIt);

                Console.WriteLine("Session ID: " + SessionID + " ----> " + printResult);
                
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
            finally
            {
                if(cdn_api.cdn_api.XLLogout(SessionID) != 0 )
                {
                    Console.WriteLine("Error during Logout");
                }
                else 
                { 
                    Console.WriteLine("Logout successful!"); 
                }
                
                Console.ReadKey();
            }
        }

john_doe
Posty: 650
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

Re: API XL wykonaj wydruk - pdf

Post autor: john_doe »

zapuściłem rejestr.bat jako administrator ( to przeoczyłem )

API zwraca kod błedu 249

zainstalowałem drukarkę PDF doPDF. Czy muszę zmienić jej nazwę? Ma to w ogóle związek ze sprawą? :)

teraz mam komunikat

Crystal Reports: błąd wykonania funkcji
Crystal Reports: błąd wykonania funkcji UstawParametry. Wydruk niemożliwy.
#-2147352571: Wystąpiła sytuacja wyjątkowa
%SOURCE%=
%DESCRIPTION%=


na windows 7 i xp jest dokładnie to samo

Awatar użytkownika
viesiek1
Posty: 425
Rejestracja: 03 maja 2011, 18:40
Rola: Administrator CDN XL
Wersja: 2023
Lokalizacja: Bielsko-Biała
Kontakt:

Re: API XL wykonaj wydruk - pdf

Post autor: viesiek1 »

Poniżej kod procedury, która wykonuje wydruk faktury do PDF, podpięta po klawisz umieszczony na formatce FS. Przed chwilą sprawdziłem, plik PDF został wygenerowany. Mam wersję 2013.5, ale kod działał od wersji 11.

Kod: Zaznacz cały

        private static bool MakePrint()
        {
            Global.IsFinalInvoice();
            Global.GetSendFileFullPath();

            Int32 APIVersion = 24;
            Int32 SessionID = -1;

            try
            {
                cdn_api.XLLoginInfo_24 XLLogin = new cdn_api.XLLoginInfo_24();
                XLLogin.Wersja = APIVersion;
                XLLogin.ProgramID = "Sprzedaż";
                XLLogin.Winieta = -1;
                int lRetLogin = cdn_api.cdn_api.XLLogin(XLLogin, ref SessionID);

                cdn_api.XLWydrukInfo_24 XLWydruk = new cdn_api.XLWydrukInfo_24();

                XLWydruk.Wersja = APIVersion;

                Global.PrintParameters lPrintParameters = Global.GetPrintParameters();

                XLWydruk.Zrodlo = lPrintParameters.fZrodlo;
                XLWydruk.Wydruk = lPrintParameters.fWydruk;
                XLWydruk.Format = lPrintParameters.fFormat;

                //XLWydruk.Zrodlo = 1;
                //XLWydruk.Wydruk = 14;
                //XLWydruk.Format = 1;

                XLWydruk.FiltrSQL = "(TrN_GIDTyp=" + Global.gvGIDTyp + " AND TrN_GIDNumer=" + Global.gvGIDNumer + ")";
                XLWydruk.Urzadzenie    = 3;  // Inna drukarka
                XLWydruk.DrukujDoPliku = 1;
                XLWydruk.PlikDocelowy  = Global.gvSendFileFullPath;

                int lPrintReturn = cdn_api.cdn_api.XLWykonajPodanyWydruk(XLWydruk);

                if (lPrintReturn != 0)
                {
                    ErrorAPI(APIVersion, 87, lPrintReturn);
                    return false;
                }
                else
                {
                    if (File.Exists(Global.gvSendFileFullPath))
                    {
                        string lFileName = Path.GetFileName(Global.gvSendFileFullPath);
                        string lFilePath = Path.GetDirectoryName(Global.gvSendFileFullPath);

                        if (File.Exists(lFilePath + "\\Kopia " + lFileName))
                        {
                            if (Global.MoveWithReplace(lFilePath + "\\Kopia " + lFileName, Global.gvSendFileFullPath))
                                return true;
                            else
                                return false;
                        }
                        else
                            return false;
                    }
                    else
                        return false;
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("Błąd wydruku: " + ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            finally
            {
                //Runtime.WindowController.UnlockThread();
                if (cdn_api.cdn_api.XLLogout(SessionID) != 0)
                {
                    MessageBox.Show("Błąd przy wylogowaniu", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    // MessageBox.Show("Wystawiono WM dla kontrahenta: " + CustomerAkronim);
                }
                //Runtime.WindowController.LockThread();
            }
        }

Wiesław Świergała

tel: +48 33 829 54 50
e-mail: wieslaw.swiergala@hydro.com.pl

http://www.hydro.com.pl

john_doe
Posty: 650
Rejestracja: 26 maja 2008, 22:15
Rola: Inny

Re: API XL wykonaj wydruk - pdf

Post autor: john_doe »

dzięki Wiesław :)
Twój kod jest bardzo zbliżony do mojego tak ogólnie ( pomijając, że lepszy :) ) jednak nadal nie mogę znaleźć przyczyny dlaczego nie działa.
Zapuściłem Twój kod dla świętego spokoju. Dokładnie taki sam error -> 249

ODPOWIEDZ