2019. május 21., kedd

Jshell alapok

Java 9 verziótól megjelent a jshell lehetőség.


A java bin könyvtárban jshell.exe -vel (windows rendszer esetén) indítható el.














Elindulás után egy interaktív DOS-ablakszerűség jelenik meg. Ebbe gépelhetjük be a parancsainkat.





















Importálhatunk osztályokat, létrehozhatunk változókat, osztályokat, .. vagy csak függvényeket.

























A prompt (amely megjelenik minden új sor elején):
jshell>


Néhány alap kapcsoló:
jshell> /help       // segítség kérés
jshell> /exit        // kilépés a konzol ablakból
jshell> /vars       // eddig használt változok listájának kikérése
jshell> /methods // eddig létrehozott metódusok listájának kikérése
jshell> /list         // eddig begépelt program sorok listája
jshell> /list -all   // eddig begépelt program sorok listája importálás listával együtt
jshell> /save       // eddig begépelt program sorok listájának állományba mentése
jshell> /open      // elmentett program lista betöltése




Többsoros utasítás bevitelénél, hogy további sorokat vár a prompt jelzi eszt ... (három ponttal)

jshell> String kettoz(String s) { 
...>    return s + s;                                // további utasítást vár még
...> }                                                   // további utasítást vár még
|  created method kettoz(String)          // spéci sor az utasítás értelmezése és metodus végrehajtásáról
jshell>                                                // a prompt alaphelyzetbe áll jelezve, hogy kész a további parancsok fogadására.

jshell> Kettoz('Légy kettő')                  //  metodus meghívása
 $42 ==> "Légy kettőLégy kettő"          //  végrehajtás
|  created scratch variable $42 : String
jshell>                                                 // a prompt alaphelyzetbe áll jelezve, hogy kész a további parancsok fogadására.



Kényelmi funkciók:



Kiegészítés Tab gomb megnyomásával:

jshell> vol<Tab>       // tab gomb menyomásával automatikus kiagészítést kérhetünk ami azonnal megjelenik
jshell> volume(




Kiegészítés kiválasztási lista felajánlása  Shift+Tab billenytyű kombinációra

jshell> frame.getGraphics() <Shift+Tab v> 
0: Do nothing 
1: Create variable 
2: import: java.awt.Graphics. Create variable
 Choice: 2 Imported: java.awt.Graphics
jshell> Graphics 
| = frame.getGraphics()



2019. május 19., vasárnap

Adatmodellezés alapjai SqlDeveloperrel

Az Oracle ingyenes eszköze saját adatbázison működő kiterjesztése nagyon hasznos lehet és jól tudja pótolni a drága fizetős verziókat.
Érdemes bekapcsolni a két nézetet és megfelelően elosztani a képernyőn
Legegyszerűbben elérhető a funkcionalitás, ha  modell bezárással kezdünk, mert ekkor egyből egy üres tervező felületet kapunk.
A megjelenő logikai modell terület és fizikai modell terület felett elhelyezkedő művelet gombokkal választhatjuk ki, hogy mit akarunk a terület re helyezni és a területek klikkélessel az objektum példány lehelyezhető.

Elkészített logikai modellből generáltatni tudjuk a fizikait és fordítva is.
Táblák közötti kapcsolatok az idegen kulcs gomb segítségével vehető fel.
Mindegyik objektumon kettőt klikkelve megjelenik a tulajdonság beállítások (több TAB fülre rendezve).
Érdemes kiapprobálni a mentés és megnyitás menüpontokat és a riport generálás funkciót is.

Az impakt analizis:




















Snippets mentés elérési út:


C:\Documents and Settings\klajosw\Application Data\SQL Developer\UserSnippets.xml



Adatmodellezés alapjai PowerDesignerrel

SAP Sybase PowerDesigner

egy olyan szoftverfejlesztő eszköz, mely a szoftver fejlesztési munkák során születő dokumentációk létrejöttét képes hatékonyan támogatni.
A szoftver célja megkönnyíteni és lerövidíteni a szoftver fejlesztési munkákat azáltal, hogy
  • a gyakran használt szoftver fejlesztési eszközök integrálásra kerültek
  • széles palettájú Import / Export funkciók megvalósításra kerültek
  • Reverse Engineering funkciók elérhetőek
  • szoftver generáló funkciók (például DDL generate) kidolgozásra kerültek a PowerDesigner termékben

Megjelenés/ felület

Az elindulás után megjelenő felület alábbi fő részekre/funcios területekre osztható fel:
  • Menüsor, Gyorshivatkozások gombsora
  • Objektum böngésző (Object browser)
  • Eszköztár (Toolbox)
  • Output ablak
  • Munkafelület

A PowerDesigner dokumentációs modellek típusai:

  • Conceptual Data Model (magas szintű adatmodellezéshez)
  • Logical Data Model (adatbázisok, adatbázisok üzleti modellezésére)
  • Physical Data Model (adatbázisok, adatbázisok technikai modellezésére)
  • Data Movement Model (adatok mozgásának ábrázolására)
  • Object-Oriented Model (objektum-orientált szoftverek modellezésére)
  • Business Process Model (üzleti tevékenységek folyamatainak ábrázolására)
  • Enterprise Architecture Model (nagyvállalatok működését támogató modellek, mint például szervezeti ábra, vállalat működési folyamatábra, szervezeti kommunikációs ábra, technológiai infrastruktúrai rajz)
  • Requirements Model (követelményspecifikációk modellezésére)
  • XML Model (Bármilyen XML fában tárolható struktúrájú információ ábrázolására)
  • Free Model (Bármilyen, az eddigi modellekbe nem beleillő terület tulajdonságainak, folyamatainak, kapcsolatainak ábrázolására)

Természetesen a modellek között van átjárás lehet generálni egymásból mindegyiket. A kiválasztott modell típushoz más -más objetumok/gombok/tulajdonságok társulnak.
Az elkészült modellt leellenőriztethetjük.
Ekkor a rendszer az összes hiányosságra felhívja a figyelmet, amelyeket egyenként javíthatunk és haladhatunk tovább a modellezésben.


Létrehozhatunk csillag modelleket dimenziókkal és ténytáblával akár a cube generálás művelettel is
A csillag modell megjelenítését sablonok szerint automatikus át formázhatjuk.
Mindegyik objektum tulajdonság ablaka témákba rendezett adatfüleken rengeteg adat beállítására ad lehetőséget. A megjelenő adatrács első szürke oszlopa mint adat lefúró gomb működik és a mezők tulajdonságai hívhatóak elő velük.

Modell tipusok

 Koncepcionális adatmodell

A koncepcionális adatmodell (Conceptional Data Model, CDM) egy magas szintű modellt jelent, ahol megtervezzük az adatmodell fontosabb elemeit, minden részlettől eltekintve.
Általában amikor elkezdődik egy adatmodellezés, akkor először egy koncepcionális adatmodell készül el.
Ekkor még nem látszik pontosan, hogy milyen attribútumokkal fogunk dolgozni, mi áll rendelkezésre, mit szükséges eltárolni, de azt már érezzük, hogy milyen entitások azok, amiket külön szeretnénk kezelni.

Logikai adatmodell

A logikai adatmodell (Logical Data Model, LDM) célja, hogy az üzleti elemzők számára érthető és főleg beszédes nyelven szemléltesse az feladat megoldásának logikai objektumait és azok kapcsolatait.
Itt nem cél a technikai részletekbe való elmélyedés, a koncepcionális modellbeli példát folytatva, valamivel részletesebben kidolgozzuk, ekkor már logikai szinten a modellt.

Fizikai adatmodell

A fizikai modell (Physical Data Model, PDM) az adatbázisokban fellelhető objektumok dokumentálását szolgáló eszköz. A logikai adatmodellhez képest itt már sokkal több hangsúlyt kap a technikai kidolgozottság. Szerepében félúton helyezkedik el az üzleti definícióktól hangsúlyos logikai adatmodell és a már készen megvalósított adatbázis között.
Gyakorlatilag a fizikai adatmodell a logikai adatmodell kidolgozásának folytatása egy olyan részletesen kidolgozott állapotig, melyből az adatbázis objektumai már könnyen generálhatóak.

Adatbázis objektumok melyeket modelezünk:
  • Táblák
  • Oszlopok
  • Nézetek
  • Kulcsok
  • Indexek
  • Domain-ek
  • Megszorítások
  • Entitások

Dimenziós modellezés

A PowerDesigner segítségével lehetőségünk van dimenziós modellek létrehozására is. Adattárházas környezetekben ez kocka, esetleg csillag séma néven lehet többek számára ismerős.
Talán a kocka fogalmával érdemesebb szemléltetni a dimenziós modellezésben rejlő lehetőségeket. Tegyük fel, hogy létrehozunk egy n dimenziós kockát, melynek az éleit a dimenziók alkotják, a kocka n dimenziós celláiban pedig a mérőszámok kerülnek elhelyezésre.
A dimenziókat, kocka éleit hierarchiákba lehet szervezni, melyek mentén szeletelni, illetve aggregálni lehet a kocka belsejében lévő mérőszámokat.
Egy tipikus példa erre a dátum hierarchia. A napokat hónapok köré lehet szervezni, míg a hónapok évekbe csoportosíthatóak.
Összefoglalva tehát a dimenziók alkotják az értékesítések (tény adatok) attribútumait, akár hierarchiába csoportosítva, azért hogy könnyebben lehessen az adatokat szűrni, aggregálni, a középen elhelyezkedő fact tábla pedig a dimenziók legalacsonyabb hierarchiaelemei menti bontás alapján a mérőszámokat foglalja magába. Előfordulhat továbbá, hogy maga a ténytábla is tartalmaz attribútumot, amennyiben olyan attribútumról van szó, melyet nem kívánunk külön dimenzió táblába kivezetni.
A modelezés során az igény lista van hogy xls filebe áll elő amely egyszerüen modellbe tölthető az alábbi leírás alapján.

VBS

A modellezés és modell változás követés céljára az eszköz/program vbs script nyelven programozható.
pl:
c:\Program Files (x86)\Sybase\PowerDesigner\VBScripts\read_models.vbs”

Option Explicit
ValidationMode = True
InteractiveMode = im_Batch


' get the current active model
Dim mdl ' the current model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no Active Model"
Else
ListObjects(mdl)
End If


Private Sub ListObjects(fldr)
output "Scanning " & fldr.code
Dim obj ' running object
For Each obj In fldr.children
' Calling sub procedure to print out information on the object
DescribeObject obj
Next

' go into the sub-packages
Dim f ' running folder
For Each f In fldr.Packages
'calling sub procedure to scan children package
ListObjects f
Next
End Sub
...

Időjárási napló adatok kezelése

Külső építési munkák kivitelezése során a hatóságok számára dokumentálni kell,
hogy az alkalmazott technológia bekövetkezett időjárási viszonyok,
mellet a célnak megfelelően végrehajtva (nem volt a kötési időszakban nagyobb fagy ..).


Bizonyos építmények, épületek hatékony működéséhez ismerni kell a térség éghajlati
és időjárási viszonyainak domináns szélírány szélerő adatokat is.


A mezőgazdaságban is nagyon fontos a minőséget befolyásoló időjárási viszonyainak detektálása.
Az előforduló meleg, szárazság, vagy csapadékos időszakok,
a hirtelen jelentkező fagy előfordulásainak rögzítésére is szükség lehet (kár detektállás).
Ezen időjárás adatok hatással vannak kijuttatásra kerülő védekező, vagy tápanyagok menyiségére, amelyet a minőség bizonyítására szintén detektálni kell.

A meteorológiai előrejelzéseket legtöbbször a fagy elleni védekezésre
és az öntözés idejének, illetve szükségességének meghatározására használják.
A korszerű minősítő rendszerekben már arra is szükségvan, hogy tényszerüen
milyen hömérsékletek fordultak elő, mennyi ideig és hányszor fordult elő
és milyen technológiák kerültek bevetésre.
Természetesen akár minden borászat vagy gyümölcs kertészet csinálhat maga,
ilyen auditáló rendszert a saját területére, de egy független, komplex,
teljes lefedettségű rendszer jobban megfelel erre a célra.
Mikk kellenének ehez?
– telpülés szintű vagy részletesebb
– óra szintű vagy részletesebb
– hőmérséklet, szélerő, szélírány, csapadék, fényerő menyiség mérési érték


Ezek az adatok nagyváros szinten rendelkezésre állnak jelenleg is.

Milyen időjárási előjelzési adatokat találunk jelenleg:
2005-től napi bontásban a főtény adatok napi sarokszámai: http://www.met.hu/idojaras/aktualis_idojaras/napijelentes/index.php?ful=front


Szoftver fejlesztés mint folyamat

Szoftver fejlesztés folyamat szemlélet kialakításának elindítója az a felismerés, hogy:
• a program termékké vált,
• az előállításához technológiára van szükség.

A szoftver termék ebből következik, hogy:
• van szolgáltatási funkciója,
• van minősége,
• van előállítási költsége,
• van előállítási határideje

Szoftver fejlesztés célkitűzései:
• előírt minőségű programtermék
• előre megállapított határidőre,
• előre meghatározott költségen történő előállítása.


Szoftverfejlesztés tevékenységei
-Elvárások, követelmények elemzése és specifikáció
-Tervezés
-Implementálás, fejlesztés, kódolás
-Kipróbálás, validálás, tesztelés
-Szoftverevolúció: karbantartás, továbbfejlesztés

Szoftverfejlesztés kiegészítő tevékenységek
-Projekt menedzsment
-Verzió kezelés / verzió követés (reelese)
-Erőforrás menedzsment
-Minőségbiztosítás
-Terméktámogatás
-Projekt értékelés, fejlesztési folyamat továbbfejlesztése

Szoftverfejlesztési fogalmak:
Cél: az elemzés tárgya.
Korlátozás: ami a megvalósításban határt szab a lehetőségeknek.
Alternatívák: a célok megvalósításának különböző útjai.
Kockázatok: az egyes alternatívák nagy valószínűséggel hibát okozó forrásai.
Kockázat kezelése: stratégia a kockázat hatásának a csökkentésére.
Validáció: a terv előírt célok szerinti teljesülésének ellenőrzése.
Életciklus : Az igény felmerülésétől a termék használatból való kivonásáig (feledésbe merülésig) terjedő időtartam
Az életciklus modellek feladata, hogy segítsenek rendszerezetten átgondolni a folyamat egészét.
A folyamatok egy rendszeren belül történnek, általában egy szervezeten belül és így lényeges szempont e folyamatok egységes (integrált) kezelése.
Az egységes megközelítés akkor is igen fontos (nélkülözhetetlen), ha az adott rendszer egyes elemei kerülnek megtervezésre és kivitelezésre.

Szoftverfejlesztés folyamat modellek
-Vízesés
-V modell
-Boehm féle spirál
-Gyors prototípus
-Inkrementális (evolúciós)
-Újrafelhasználás orientált (komponens alapú)
-OMT (Object Modelling Technique)
-RUP (Rational Unified Process)


-Agilis módszerek:
— Agilis
— XP – eXtreme Programming
— SCRUM
— Lean
— MDA – Model Driven Architecture
— MDD – Model Driven Design
— TDD – Test Driven Design
— BDD – Behaviour Driven Design

Vízesés modell

A vízesés modellek szemlélete szerint a fejlesztés az egymásra épülő lépések előre pontosan meghatározott sorrendjéből áll.

Vízesés modell elemei és egymásutánisága:
– A probléma elemzése, meghatározása, követelmények felmérése ->
– Rendszerjavaslat kidolgozása ->
– Rendszerspecifikáció ->
– Logikai és fizikai tervezés ->
– Implementáció, megvalósítás ->
– Szoftvervalidáció, tesztelés ->
– Rendszerátadás és bevezetés ->
– Üzemeltetés és karbantartás ->


Vízesés modell elemeinek tartalma
•Követelmények felmérése:
igények, elvárások meghatározása, összefoglalása. Jelen állapot (helyzetfelmérés), probléma, elérendő cél definiálása.
•Rendszerjavaslat:
Alternatívák, szükséges erőforrások, költségek megválaszolása, alapvető lépések a projektterv összeállításához.
A rendszerjavaslat az első olyan dokumentum, amelyet a megrendelő megkap, melyből az eddig végzett munkát megítélheti,
a fejlesztés perspektíváiról képet alkothat.

•Rendszerspecifikáció:
rendszertervezőnek szól. Input-output típusok, fájlok definiálása, nagyvonalú rendszerterv (hardver és szoftveres),
adatstruktúra, interfész-definíció. Döntések, azok bemutatása (pl.: vásárolt v. fejlesztett részek), stb.

•Logikai és fizikai tervek:
a szoftver és adatbázis. A lépések konkrét definiálása. Megvalósítási terv (idő, erőforrások, ember, pénzügyi források,
hogyan érjük el a célokat) és rendszerterv elkészítése. Architektúra, hálózati topológia, funkcióspec., navigációs és oldal desing-ek,
adatterv – DB diagram, osztálydiagrammok.
•Implementáció = megvalósítás
•Szoftvervalidáció = tesztelés
•Rendszerátadás (élesbe helyezés -> online)
•Üzemeltetés, karbantartás -> visszamutat a korábbi állapotokra.

Rendszerterv típusok
– Logikai rendszerterv:
a felmerült probléma megoldására kidolgozott működési-, szervezeti-, adat- és folyamatmodell,
mely többféle eszközkörnyezetben megvalósítható módon, logikai szinten van megfogalmazva.
— A rendszer működési logikájának tervezése
— Folyamatok (funkciók) tervezése
— Adattervezés
— Felhasználói interfészek tervezése
– Fizikai rendszerverv:
egy logikai rendszerterv alapján több fizikai is készíthető más-más hardver/szoftver környezetre is tervezhető,
megvalósítható. Ez már egy konkrét eszközbázisra, adott környezetre épül.
— Adatterv
— Rendszerspecifikációk (fejlesztési, futtatási környezet)
— Szoftverarchitektúra (rétegek)
— A rendszer működésének elve
— Programspecifikációk – funkciótervek
— I/O tervek, rendszer interfészek
— Biztonsági terv
— SLA

Vízesés modell szabály rendszere jellemzői
– A következő fázis addig nem indulhat el, amíg az előző be nem fejeződött.
Ez a modell akkor működik jól, ha a követelmények teljesen ismertek.

– Előny: Jól menedzselhető és ellenőrizhető. Minden fázisban jól definiált feladatok.
Minden fázis jól dokumentálható. Előre jól definiálható követelmények esetén jól alkalmazható.

– Hátrány:
Nagyon sok probléma csak az utolsó fázisban derül ki, így a javítás nagyon költséges.
Korán kell jelentős döntéseket hozni, ez hibás döntésekhez vezethet.
Nehéz a rendszert a fejlesztés közben változó követelményekhez igazítani.
Sok dokumentációs munkát igényel.

V modell jellemzői

– Egy módosított vízesés modell.
– Megkülönbözteti a fejlesztésen belül a konstrukciós és a tesztelési fázisokat.
– Definiálja a tesztelés szintjeit.
– Szemlélteti, hogy a tesztelési munka végigköveti a teljes fejlesztési folyamatot.
– Összefüggést tételez fel az egyes konstrukciós fázisok és az egyes tesztelési szintek között.


(Boehm féle) Spirál modell elve

A spirál modellek szemlélete szerint a fejlesztés iteratív, újra és újra visszatér ugyanazokhoz a lépésekhez,
és folyamatosan csiszolja a terveket, prototípusokat egészen addig, míg el nem ér egy, az igényeket maximálisan kielégítő termékhez.
Prototípusok :
A prototípusok fő jellemzője, hogy a tervbe vett rendszer főbb tulajdonságait viszonylag gyorsan bemutatják (még az előtervezési szakaszban),
ami lehetővé teszi megoldási módok vizsgálatát, vagy a feladat megoldhatóságának bemutatását, és természetesen lehetővé teszi a továbbfejlesztést a teljes rendszer kialakulásáig.
A spirál modell ciklikusan ismétli a fejlesztési fázisokat.
A spirál minden ága ugyanazon fejlesztési fázisokat tartalmazza,
de a korábbi spirálágban elkészült változatot fokozatosan továbbfejleszti egységes szempontok alapján.
Alapelvek a spirál modell alkalmazása esetén:
– Egy munkafolyamat a célok megértésével kezdődik, amelyek kockázatot is tartalmaznak.
– Az alternatív megoldások kiértékelése alapján azokat az eszközöket használjuk, melyek leginkább csökkentik a kockázatot.
– Minden érdekelt személyt vonjunk bele az áttekintés készítésébe, ugyanis ebben határozzuk meg a következő ciklus terveit és tevékenységeit.
– A fejlesztés minden szakaszban inkrementálisan folytatódhat.

Spirál modell jellezői
– Előny:
a kockázati tényezőkkel explicite számol. A spirális modellben nincsenek rögzített fázisok,
és felölelhet más folyamatmodelleket is (vízesés, evolúciós, stb.).
– Hátrányai: a modell alkalmazása bonyolult, munkaigényes feladat;
a párhuzamos foglalkoztatás csak a 3. szektorban lehetséges.
A spirál modell arra helyezi a legnagyobb súlyt, hogy folyamatosan ellenőrizze, korrigálja az előrehaladást, hogy a folyamat végén létrejövő termék biztosan megfeleljen az igényeknek.

Program fejlesztési módszerek és eszközök:

CASE (Computer-Aided Software Engineering) fejlesztői eszközök jellemzői
– Követelményspecifikáció:
grafikus rendszermodellek, üzleti és domain
– Elemzés/tervezés során:
adatszótár kezelése, mely a tervben található egyedekről és kapcsolataikról tartalmaz információt;
felhasználói interfész generálását egy grafikus interfész-leírásból, melyet a felhasználóval együtt készíthetünk el.;
a terv ellentmondás mentesség vizsgálata
– Implementáció során:
automatikus kódgenerálás (Computer Aided Programming – CAP);verziókezelés
– Szoftvervalidáció során:
automatikus teszt-eset generálás, teszt-kiértékelés, -dokumentálás
– Szoftverevolúció során:
forráskód visszafejtés (reverse engineering); régebbi verziójú programnyelvek automatikus újrafordítása újabb verzióba.
– Automatikus dokumentumgenerálás;
– Projektmenedzsment támogatás (ütemezés, határidők figyelése, erőforrás-tervezés, költéség- és kapacitásszámítás, stb. )
A CASE-eszközök korai pártolói azt jósolták, hogy a szoftverek minőségében
és a termelékenységben nagyságrendi javulást okoznak ezek az eszközök,
de valójában csak 40% körüli a javulás.

Szoftverfejlesztési specifikáció 4 jellemző leírási, jelölési módszere
– Forgatókönyv, szkenáriók leírása jellemzően mondatos, vagy egyszerű táblázatos leírás: megrendelők számára jól érthető
– Részletes, felsorolás-szerű leírás
– Formális követelmény-leírás pl.: UML használati eset diagrammok segítségével, stb.
– Formális specifikáció: „matematikai képletekkel” leírt specifikáció – a weben nem nagyon használt
Az UML (Unified Modeling Language) egy grafikus nyelv, amelyben lehetőségünk van a probléma
• specifikációjára,
• megoldására,
• a megoldás dokumentálására.


Egy UML leírás :
– elemekből (tárgy, ügy),
– relációkból,
– diagramokból
áll
Az UML elemek lehetnek :
– Strukturális elemek:
— Objektum.
— Osztály.
— Használati eset.
– Megnyilvánulási elemek:
— Művelet végzése.
—- Interakció (üzenetküldés).
—- Állapotautomata.
– Annotációs elemek:
— Kiegészítés.
— Megjegyzés.
— Megszorítás
– Csoportos elemek:
— Alrendszer
— Package.


UML diagramjai lehetnek:
– Statikus szempont szerint:
— Osztálydiagram (Class): a rendszer objektumelvű szerkeze
tének leírása.
— Objektumdiagram (Object): az osztálydiagram egy példá
nyát mutatja be.
– Dinamikus szempont szerint:
— Állapotdiagram (Statechart): azt mutatja meg, hogy a rendszer
milyen állapotokon keresztül, milyen állapotátmenetekkel
oldja meg a feladatot.
—- Szekvenciadiagram (Sequence): az objektumok közötti üzenetváltások
időbeli menetét szemlélteti.


Szoftver fejlesztéshez kapcsolódó adatbázis tervezés lépései
1.Cél meghatározás, a feladat:
Meghatározzuk a tárolandó adatok körét, az adatbázis használatának módját, az elvégzendő részfeladatokat.
2.Logikai (koncepcionális) adatmodell készítése
3.Fizikai adatmodell készítése
4.Táblák meghatározása:
Az összegyűjtött információkat témakörökre, táblákra bontjuk (normalizálás).
Kerülni kell a többszörös adatbevitelt, de minden szükséges adatot tárolni kell.
5.A táblák mezőinek meghatározása, funkcionális függőségek megállapítása
6.Kapcsolatok felállítása a táblák között
7.Teszt változat elkészítése, a terv finomítása
8.Üzembehelyezés
9.Karbantartás

2019. május 16., csütörtök

VBA alapok Excel makró haladó

Komolyabb funkciók használata esetén első lépés az engedélyeztetés (adatkapcsolatok használatánál is)

Alaphelyzet:




















Referencia bővítése után:





















Excel objektumok használata:


Globális változók használata előnyös lehet:

' Globális változók :
Global conn As New ADODB.Connection
Global Cmd  As New ADODB.Command
Global cmd1 As New ADODB.Command
Global rs, rs1 As Object
Global m_sql




Kis minta a formázások ki és bekapcsolásához:


Sub formazo()

'// Excel alkalmazás általános beállítása

Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", False)"   '// Müvelet gomsor terület kikapcsolása
Application.ExecuteExcel4Macro "Show.ToolBar(""Ribbon"", True)"    '// Müvelet gomsor terület bekapcsolása
Application.WindowState = xlMaximized  '// státusz teljes
Application.DisplayFullScreen = True   '// teljes képernyős üzemmód beállítása
Application.DisplayFullScreen = False   '// teljes képernyős üzemmód kikapcsolása
Application.CutCopyMode = False       '// Cellák nem másolhatóak
Application.ScreenUpdating = False    '// képernyő friissítés kikapcsolása (gyorsitás)
Application.ScreenUpdating = True    '// képernyő friissítés bekapcsolása
Application.DisplayFormulaBar = False '// képlet szerkesztő nem léthatósága kikapcsolása
Application.DisplayFormulaBar = True '// képlet szerkesztő nem léthatósága bekapcsolása

ActiveWindow.DisplayHeadings = False  '// Fejléc láthatóság kikapcsolása
ActiveWindow.DisplayHeadings = False  '// Fejléc láthatóság bekapcsolása
ActiveWindow.DisplayGridlines = False '// Gácsozat rajzolás kikapcsolása
ActiveWindow.DisplayGridlines = True '// Gácsozat rajzolás bekapcsolása
ActiveWindow.DisplayWorkbookTabs = False  '// Munkapalok TABfülek kikapcsolása
ActiveWindow.DisplayWorkbookTabs = True  '// Munkapalok TABfülek bekapcsolása


ActiveWindow.WindowState = xlMaximized  '// képernyő meximalizásás bekapcsolása
Application.DisplayAlerts = False    '// Hibaüzenetek képernyőre írásánek kikapcolása (gyorsitás)
Application.EnableCancelKey = xlDisabled  '// Művelet visszavonás gomb tiltása
Application.Calculation = xlCalculationManual    '// Képlet számolás manuális frissítés bekapcsolása
Application.Calculation = xlCalculationAutomatic '// Képlet számolás automatikus frissítés bekapcsolása

Application.EnableEvents = False     '// Események figyelésének kikapcsolása (gyorsitás)
Worksheets("KL").DisplayPageBreaks = True  '// laptörés engedélyezése
Worksheets("KL").Visible = xlVeryHidden    '// munkalap elrejtése nagyon
Worksheets("KL").Visible = xlHidden        '// munkalap elrejtése
Worksheets("KL").Visible = xlSheetVisible        '// munkalap felfedése
Worksheets("KL").EnableOutlining = True    '// Vonalzás bekapcsolása

Application.StatusBar = "Státusz sorba kiírás" '// Státusz sorba kiírás
Application.DisplayStatusBar = True            '// Státusz sor láthatósá tétele
Application.DisplayStatusBar = False           '// Státusz sor elrejtése
Application.DisplayStatusBar = True            '// Státusz sor láthatósá tétele



'--- Munkalap (jelszavas védelem bekapcsolása és kikapcsolása)
ThisWorkbook.Worksheets("KL").Protect Password:="jelszo", DrawingObjects:=False, Contents:=True, Scenarios:=True, UserInterFaceOnly:=True  '// munkalap Jelszóval zárolása/védelem bekapcsolása
ThisWorkbook.Worksheets("KL").Unprotect Password:="jelszo" '// munkalap Jelszóval zárolása/védelem kikapcolása

End Sub




Excel pivot forrása lehet egyből egy oracle adatbázis lekérdező select parancsa

Sub kl_sql_pivot()

' -- ORACLE adatkapcsolat SQL eredményét pivot táblába töltés és pivot szűrés beállitása
   Dim PvtCache
Worksheets("pivote").Activate



  ' Képernyő frissítés ki (ezt érdemes külön eljárásba tenni)
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual



'---- PRIVOT adat lekérdezése

    m_UserID = "kl" 'Credentials(0)
    m_PWD = "KLkl" 'Credentials(1)
    m_conn = "Provider=OraOLEDB.Oracle.1;PwdChgDlg=0;Persist Security Info=True;User ID=" & m_UserID & ";Data Source=EDWT10;Password=" & m_PWD
    m_connpivot = "OLEDB;Provider=OraOLEDB.Oracle.1;PwdChgDlg=0;Persist Security Info=True;User ID=" & m_UserID & ";Data Source=EDWT10;Password=" & m_PWD
 

Worksheets("pivote").PivotTables(1).ManualUpdate = False
Worksheets("pivote").PivotTables(1).PivotCache.EnableRefresh = True
Worksheets("pivote").PivotTables(1).PivotCache.CommandText = "select * from HN_EBH27091.CALENDAR where 1=1 and yyyy='2019' and MONTH_NUM = 2"
Worksheets("pivote").PivotTables(1).PivotCache.Connection = m_connpivot
Worksheets("pivote").PivotTables(1).PivotFields("IS_WEEKEND").CurrentPage = "N"
Worksheets("pivote").PivotTables(1).PivotCache.Refresh

' /// Pivot kapcsolat allaphelyzetbe állítésa
Worksheets("pivote").PivotTables(1).PivotCache.Connection = "OLEDB;Provider=OraOLEDB.Oracle.1"
Worksheets("pivote").PivotTables(1).PivotCache.CommandText = ""
Worksheets("pivote").PivotTables(1).ManualUpdate = True
Worksheets("pivote").PivotTables(1).PivotCache.EnableRefresh = False



' Képernyő frissítés be (ezt érdemes külön eljárásba tenni)
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub




' -- Oracle adatbázis SQL select eredményét a munkafüzetbe táblázatként betöltés is hasznos lehet és tartalom függő formázásokra is mintát adok (sajnos nagyon lassú tud lenni érdemesebb formázás nélkül betölteni majd területek kijelölése után csoportos formázással megvalósítani)

Sub kl_sql_tbl()
  Dim LastCol
  Dim ActRow
  Worksheets("KL").Activate

  ' Képernyő frissítés ki
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Range("A2:A2").Select

    m_UserID = "kl" 'Credentials(0)
    m_PWD = "KLkl" 'Credentials(1)
    m_conn = "Provider=OraOLEDB.Oracle.1;PwdChgDlg=0;Persist Security Info=True;User ID=" & m_UserID & ";Data Source=EDWT10;Password=" & m_PWD
    m_sql = "select * from HN_EBH27091.CALENDAR where 1=1 and yyyy='2019' and MONTH_NUM = 3"

  conn.Open m_conn
  Cmd.ActiveConnection = conn
  Cmd.CommandType = adCmdText


 ' Set rs = Nothing
  Cmd.CommandText = m_sql


  Set rs = Cmd.Execute
  LastCol = rs.Fields.Count - 1


  ' ---Fejléc kiírása
           For x = 0 To LastCol
              Cells(1, x + 1) = rs.Fields(x).Name
           Next

   ' Mező tipus kiírása
           For x = 0 To LastCol
              Cells(2, x + 1) = rs.Fields(x).Type
           Next

       
    ' felesleges lassú módszer, de az elvke megértéséhez jó
    ' Ciklus kiolvasásnál a típus  eldöntése alapján formázás után kerül a munkala cellájába az egyes adat.   

      ActRow = 3
     Do While Not rs.EOF
  'ActRow = wbkNameRiport.Worksheets(1).ActiveCell.Row + 1
                            For Findex = 0 To LastCol
                                If rs.Fields(Findex).Type = 202 Or rs.Fields(Findex).Type = 130 Or rs.Fields(Findex).Type = 129 Or rs.Fields(Findex).Type = 200 Then 'TEXT
                                    Cells(ActRow, Findex + 1).Select
                                    Selection.NumberFormat = "@"
                                    Selection.HorizontalAlignment = xlLeft
                                    Selection.VerticalAlignment = xlCenter
                                    If Cells(ActRow, 1) = "" Then
                                        With Selection.Borders(xlEdgeBottom)
                                            .LineStyle = xlContinuous
                                            .ThemeColor = 1
                                            .TintAndShade = -0.249946592608417
                                            .Weight = xlHairline
                                        End With
                                    Else
                                        With Selection.Borders(xlEdgeBottom)
                                            .LineStyle = xlContinuous
                                            .ThemeColor = 1
                                            .TintAndShade = -0.249946592608417
                                            .Weight = xlHairline
                                        End With
                                        With Selection.Interior
                                            .Pattern = xlSolid
                                            .PatternColorIndex = xlAutomatic
                                            .Color = 16770979
                                        End With
                                    End If
                                    Cells(ActRow, Findex + 1).Value = rs.Fields(Findex).Value
                                End If
                                If rs.Fields(Findex).Type = 139 Then 'NUMBER
                                    Cells(ActRow, Findex + 1).Select
                                    Selection.NumberFormat = "#,##0"
                                    Selection.HorizontalAlignment = xlRight
                                    Selection.VerticalAlignment = xlCenter
                                    If Cells(ActRow, 1) = "" Then
                                        With Selection.Borders(xlEdgeBottom)
                                            .LineStyle = xlContinuous
                                            .ThemeColor = 1
                                            .TintAndShade = -0.249946592608417
                                            .Weight = xlHairline
                                       End With
                                    Else
                                        With Selection.Borders(xlEdgeBottom)
                                            .LineStyle = xlContinuous
                                            .ThemeColor = 1
                                            .TintAndShade = -0.249946592608417
                                            .Weight = xlHairline
                                        End With
                                        With Selection.Interior
                                            .Pattern = xlSolid
                                            .PatternColorIndex = xlAutomatic
                                            .Color = 16770979
                                        End With
                                    End If
                                    Cells(ActRow, Findex + 1).Value = rs.Fields(Findex).Value
                                End If
                                If rs.Fields(Findex).Type = 135 Then 'DATE
                                    Cells(ActRow, Findex + 1).Select
                                    Selection.NumberFormat = "m/d/yyyy"
                                    Selection.HorizontalAlignment = xlCenter
                                    Selection.VerticalAlignment = xlCenter
                                    If Cells(ActRow, 1) = "" Then
                                        With Selection.Borders(xlEdgeBottom)
                                            .LineStyle = xlContinuous
                                            .ThemeColor = 1
                                            .TintAndShade = -0.249946592608417
                                            .Weight = xlHairline
                                        End With
                                        With Selection.Font
                                            '.ThemeColor = xlThemeColorDark1
                                            .TintAndShade = -0.499984740745262
                                        End With
                                    Else
                                        With Selection.Borders(xlEdgeBottom)
                                            .LineStyle = xlContinuous
                                            .ThemeColor = 1
                                            .TintAndShade = -0.249946592608417
                                            .Weight = xlHairline
                                        End With
                                        With Selection.Interior
                                            .Pattern = xlSolid
                                            .PatternColorIndex = xlAutomatic
                                            .Color = 16770979
                                        End With
                                    End If
                                    Cells(ActRow, Findex + 1).Value = rs.Fields(Findex).Value
                                End If
                            Next Findex
                         
                            ActRow = ActRow + 1
                            'ActRow = wbkNameRiport.Worksheets(1).Cells(Act + 2, StartCol).Row + 1
                            rs.MoveNext
     Loop
  Conn.Close
  Set conn = Nothing
  Set rs = Nothing


' Képernyő frissítés be
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub




Django alapok

Django installálás és használatba vétel Release naptár : (forrása  https://www.djangoproject.com/download/ ) Lépések: rem install conda inst...