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