Převod modulu z Vario 11 do Vario 12

Věnujte pozornost článku: Ukončení podpory programu Vario 14 na MDB.

1. Všechny MDB a MDA soubory převést pomocí Convert_11-12

  • Soubory Vario 11 umístěte do složky ..\něco11\
  • Založte složku ..\něco12\
  • Spusťe Access 2003 (vyšší verze nebyly testovány). Použijte soubor pracovních skupin (mdw), který obsahuje váš vývojářský účet (buďto prostřednictvím zástupce s parametrem /wrkgrp nebo z Varia, otevřeného pomocí doplňku SDK pro ladění).
  • Otevřete aplikaci Convert_11-12
  • Na kartě nastavení zadejte Vaše heslo (ostatní hodnoty nechte jak jsou).
  • Na kartě Převod zadejte složku ..\něco11\
  • Klepněte na Převést.

2. Vytvořte adresářovou strukturu vašeho řešení. Například pro modul korespondence založíte následující složky:

C:\Program Files\Vario12\Moduly\Korespondence

C:\Program Files\Vario12\Moduly\Korespondence\Data

C:\Program Files\Vario12\Moduly\Korespondence\Tiskove_formulare

2. Do složek zkopírujte příslušné soubory aplikací. Moduly přejmenujte z MDB na MDA.

  • Příklad viz CD\SDK modul Korespondence.

3. Upravte aplikaci modulu

  • Propojte tabulky k datům Varia 12.
  • Vytvořte pracovní data modulu (pokud má data) a propojte tabulky.
  • Odstraňte makro autoexec
  • Podle potřeby nastavte referenci na VarioLib.dll (nemusí být potřeba, možná vystačíte s objekty ve Vario.mda).
  • Upravte formulář tabulky agendy.
  • Odstraňte události, které byly povinné ve Variu 11. Ve Variu 12 stačí tyto:

Form_Current - uvolnění zámků

Form_KeyDown - zachycení klávesových zkratek

Form_Load - implementace hledání v tabulce (pokud jej chcete)

4. Upravte formulář detailu

  • Nahraďte panel nástrojů novým panelem.
  • Odstraňte vše ze sekce záhlaví formuláře.
  • Zkopírujte z Korespondence_detail vše, co je v sekci záhlaví formuláře.
  • Odstraňte událostní procedury po odstraněných tlačítkách původního toolbaru (cmdUlozitDalsi_Click, ..., cmdNapoveda_Click)
  • Přidejte do deklarační části kódu formuláře proměnnou:

Dim m_Toolbar As ToolbarDetailu

a v Property Let Zaznam nahraďte inicializaci toolbaru:

AkceToolbaru tolInit, Me

voláním procedury ImplementovatToolbarDetailu

ImplementovatToolbarDetailu m_Toolbar, Me!imgToolbar, Me!imgTlacitko, Me!labPopisekAkce

5. Upravte kódy modulu

  • Odstraňte třídu DilalogyModulu
  • Odstraňte funkci AutoExe
  • Přidejte povinné funkce:

OtevriFormAgendy

DetailZaznamu

PripojitData

Databaze

  • Reference na CurrentDb nahraďte důsledně za CodeDb.
  • Zkuste zkompilovat kód a odstraňte kompilační chyby, které vznikly změnami v knihovnách Varia 12.

6. Převeďte menu agend

  • Do aplikace modulu importujte tabulku Menu_agend (např. z modulu Korespondence). Importujte jí bez dat nebo data po importu vymažte.
  • V ladicím okně (Ctrl+G) spusťte následující příkaz:

UlozitMenuAgend

  • Otevřete tabulku Menu_agend a zkontrolujte, zda obsahuje položky menu agend.
  • Otevřete Možnosti panelů nástrojů (menu Nástroje/Vlastní...) a odstraňte menu Menu_agend
  • Bude pravděpodobně potřeba přizpůsobit dotazy nové datové struktuře Varia.

7. Registrace Modulu, Agendy

Pro spuštění modulu ve Variu musíte zapsat modul minimálně do tabulek Firmy.Moduly a Firmy.Agendy (zpravidla také Data0001.Knihy). Při vývoji budete zřejmě muset tyto zápisy pořídit ručně pomocí doplňku SDK (případně je zkopírovat z tabulek Varia 11).

Tabulka USysModulInfo se pro instalaci modulu již nepoužívá. Místo ní se používají soubory Modul.Manifest.xml. Manifest obsahuje všechny záznamy, které je potřeba při instalaci modulu zapsat do tabulek Varia. Zkopírujte záznamy z USysModulInfo do VasModul.Manifest.xml a tabulku USysModulInfo odstraňte.

8. Převod tiskových formulářů

Platí totéž co pro moduly (převést pomocí aplikace convert_11-12, přepojit tabulky, zkompilovat).

Funkce OtevritTiskovyFormular musí vracet referenci na objekt Report, který se má tisknout. Formulář se proto musí vždy otevírat v náhledu a skrytý. Funkce Varia nejprve obnoví uživatelem nastavené parametry tisku a potom report vytiskne nebo zobrazí v náhledu. Nová podoba povinné funkce OtevritTiskovyFormular (zde bez dialogového okna možností reportu):

Function OtevritTiskovyFormular(TiskovyFormular As String, PodminkaWhere As String) As Report

  On Error GoTo Chyba

  If Not App.PripojTabulky(App.AktualniData, CodeDb) Then

    GoTo Konec

  End If

  DoCmd.OpenReport TiskovyFormular, acViewPreview, , PodminkaWhere, acHidden

  Set OtevritTiskovyFormular = Reports(TiskovyFormular)

  GoTo Konec

Chyba:

  If Err = ErrAkceZrusena Then Resume Konec

  If mChyby.Chyba() = vbRetry Then

    Resume

  Else

    Resume Konec

  End If

Konec:

End Function

Další změny

  • Tiskové formuláře zůstávají v podstatě beze změny. Mění se jejich umístění do složky modulu resp. agendy. Funkce OtevritTiskovyFormular musí nyní vracet odkaz na instanci reportu, který byl otevřen v náhledu.
  • Sestavy a grafy jsou zrušeny. Jejich funkci nyní přebírá tabulka agendy, ve které lze zobrazovat různé pohledy včetně zobrazení kontingenční tabulky a kontingenčního grafu.
  • Nastavení - všude, kde je to účelné se nedoporučuje používat registr Windows. Nastavení se nyní ukládají pomocí nového objektu Vario.Moznosti. Popis v článku Nastavení se mění na Možnosti.
  • Vlastní moduly mohou využívat zcela přepracované uživatelské rozhraní pro nastavení možností Varia (viz tabulka Firmy.Moznosti_definice) a také nastavení oprávnění (viz Firmy.Opravneni_povolena_opravneni).
  • Menu agend jsou nyní uložena v tabulce Menu_agend přímo v modulu. Položky lze převést pomocí procedury mDesign.UlozitMenuAgend (ve Vario.mda).
  • Moduly a agendy lze nyní volitelně rozdělit do samostatných mda aplikací. Při registraci vlastního modulu (agendy) se tyto údaje uvedou v tabulkách Firmy.Moduly a Firmy.Agendy.
  • Objekt Dialogy Modulu je zrušen. Místo něj musí mít každý modul (resp .mda knihovna modulu či agendy) veřejné funkce:

OtevriFormAgendy (Agenda as string, VychoziFiltr as string) as Form 'Otevře výchozí a vrátí instanci formuláře agendy

DetailZaznamu(Agenda as string) as Form 'Vytvoří a vrátí novou instanci detailu

PripojitData(Optional CisloDat As Integer) As Boolean

Databaze() As Database

Příklad viz Vzor.mda

Některé povinné události formuláře (tabulky) agendy se ruší, Vario si klíčové události hlídá samo.

Každý modul má vlastní složku, která obsahuje data, tiskové formuláře, exporty a importy.

Doplňky

Doplňky se instalují centrálně. Vario si je zavádí samo. Zobrazí se v menu Agendy nebo v menu Nástroje/Doplňky nebo se zavedou při startu - podle hodnoty v poli Doplnky.Agenda.

Doplňky jsou v samostatných složkách.

Změny ve Vario.mda

Vario.mda již neobsahuje objekty základních modulů. Objekty obchodní logiky a podpory aplikací jsou ve VarioLib.dll. Pokud je používáte, je potřeba přidat referenci na VarioLib.dll a upravit volání funkcí (například řada funkcí z modulu mPomucky se nyní nachází v objektu Pomucky).

Vario.mda obsahuje jen společné komponenty uživatelského rozhraní. Nabídky a panely nástrojů pro agendy a univerzální formuláře nebo funkce  (Tisk, Nový, Hledat, Seznam apod.).

Doklad, Firma, Produkt, Deník, Dokumenty a Úkoly mají vlastní knihovny. Deník, Dokumenty a Úkoly se mění na agendy.

Veškerá nastavení (Možnosti Varia, Knihy, Agendy) jsou v samostatné knihovně.

Tipy pro převod kódu

  • Některé funkce modulu mPomucky se převádějí na metody objektu Pomucky
    mPomucky.JeVKolekci -> Pomucky.JeVKolekci Procedura App.Historie se mění na metodu Historie objektu Historie
    App.Historie -> Vario.Historie.Historie
  • Procedura App.Nastaveni se mění na objekt Moznosti nebo Cache viz Nastavení se mění na Možnosti
    If App.Nastaveni(vUctKontrSoucty) Then ->
    If Vario.Moznosti.DejMoznostBoolean(RegistMoznostiData, modPrijateDoklady, "", "", hmVyzadovatKontrolniSoucet) Then
  • Procedura mChyby.GenerujChybu se mění na metodu objektu Chyby
    mChyby.GenerujChybu - > Chyby.GenerujChybu
  • Funkce modulu mZabezpeceni přebírají objekty Zabezpeceni a Autorizace
    mZabezpeceni.DatumPlatnosti -> Vario.Zabezpeceni.DatumPlatnosti
  • Funkce mChyby.ZaznamChyby se ruší.
  • Funkce modulu mRegistr přebírá Objekt Registr
    mRegistr.ZapisHodnotuKlice -> Registr.ZapisHodnotuKlice
  • Rok a Období se otevírá funkcí app.OtevriRok resp. app.OtevriObdobi (nahrazuje toSetRok a toZobrazitRok)
  • Doporučuje se nepoužívat app.Databaze. Do Vario.mda již nejsou propojeny všechny tabulky. Používejte objekt Vario.Databaze. Doporučuje se nepoužívat metodu OpenRecordset, lze jí nahradit funkcemi objektu Data (přístupný prostřednictvím Vario.Databaze). 
  • Procedura mDoklady.SoucetDokladu je stále k dispozici, ale ignoruje předané částky - tj. vždy spouští dotaz nad tabulkou Polozky_dokladu. Doporučuje se proto použít metodu SoucetDokladu objektu ZaznamDoklad, které lze předat vypočtené částky.

 

Související dokumenty