AUTOMATIZAREA SI SIMPLIFICAREA CERERII DE COTATII PRIN SISTEMELE SAP SI MICROSOFT ACCESS
Introducere
Automatizarea este un concept modern, ce vine in sprijinul eficientizarii proceselor economice, prin optimizarea actiunilor complexe,redundante sau cu alte cuvinte neeficiente.
Automatizarea nu constituie un scop in sine, asa cum introducerea mecanizarii a insemnat eliminarea efortului fizic uman din activitatea de productie, automatizarea inseamna printre altele eliminarea efortului intelectual pe care l-ar presupune urmarirea si comanda unui proces tehnologic de catre un operator uman.
Activitatile economice si societatea in general duc o viata din ce in ce mai agitata, fiind nevoite sa sustina eforturi tot mai mari in asi mentine o pozitia pe piata.
Societatile economice, interprinderile industriale,trebuie sa faca fata unei concurente nationale si internationale din ce in ce mai mari, aceasta generand o presiune continua asupra lor.
De asemenea, sunt numeroase acele intreprinderi care se intorc la problema analizarii reducerii preturilor, si astfel si a costurilor, ca o prioritate competitiva.
Orice afacere are nevoie de un avantaj competitiv care in general trebuie sa se invarta in jurul proceselor sale economice. Cu cat ar deveni mai eficiente cu atat vor fi mai rapide si deci mai ieftine.
O solutie optima ar fi automatizarea proceselor, automatizarea proceselor complexe, repetitive si monotone, in fapt, la acest aspect referinduse majoritatea limbajelor de programare actuale.
Lucrarea de fata va prezenta modalitati prin care orientarea pe obiect poate fi folosita la un nivel mult mai inalt decat in mod obisnuit. Toate aplicatiile Microsoft Office au abilitatea de a fi folosite ca obiecte in limbajul Visual Basic for application(VBA), insemnand ca putem folosi lucruri pe care Microsoft le-a scris pentru noi.
In limbaj de programare si in special in VBA, automatizare inseamna folosirea altor obiecte iar la nivel de aplicatie inseamna folosirea obiectelor precum Outlook , Excel, Powerpoint sauWord.
Toate acestea corelate cu MS Access si cu sistemul SAP, care este unul dintre cele mai agreate solutii de afaceri implementat cu succes de marile companii, duc impreuna la construirea unor aplicatii puternice, al caror scop este sa eficientizeze, maximizeze randamentul activitatilor si proceselor economice ale companiei.
Capitolul 1.
Studiul si Analiza Sistemului Existent
1.1 Prezentarea unitatii economice
Compania Procter & Gamble este una dintre cele mai de succes producatoare de bunuri de larg consum din lume, avand 23 de branduri cu vanzari de peste un miliard de dolari pe an si cu peste 138 de mii de angajati peste tot in lume. Compania are unul dintre cele mai mari si puternice portfoliu ce include marci de incredere precum: Pampers, Tide, Ariel, Always, Pantene, Bounty, Pringles sau Gillette.
1.2.Istoric Infiintata in 1837, compania Procter
& Gamble a inceput activitatea in Cincinnati, Ohio, SUA
ca o firma mica, familiala ce producea sapun si lumanari. Desi Cincinnati era o
piata stabila, natiunea era atinsa de panica financiara. Sute de banci din
toata tara s-au inchis. Exista o ingrijorare generala privind falimentul
Statelor Unite. Totusi, Procter si Gamble au infiintat noua lor intreprindere, fiind
preocupati mai mult de cum sa concureze cu ceilalti 14 producatori de sapun si
lumanari din orasul lor, decat de panica financiara care le zguduia tara.
Calmul lor in mijlocul acestei furtuni economice a reflectat viziunea lor
asupra abordarii afacerii- o abordare care a devenit emblematica pentru
compania Procter & Gamble.
In anii 1850, de exemplu, in pofida zvonurilor unui razboi civil iminent in
Statele Unite, ei au construit o noua fabrica care sa le sustina avantul
afacerii. Mai tarziu, ei au initiat unul din primele programe de parteneriat si
s-au situat intre primele industrii americane care au investit in laboratoare
de cercetare. Pana in 1890, parteneriatul dintre Procter
si Gamble s-a concretizat intr-o
corporatie multi-milionara in dolari. Si totusi, P&G tintea spre viitor.
Pana in 1890, P&G a vandut peste 30 de
tipuri diferite de sapunuri, inclusiv Ivory. Cererea de consum pentru
sapunurile P&G a continuat sa creasca, fiind alimentata de reclama
inovativa, inclusiv de reclame color publicate in revistele nationale. Pentru a
acoperi aceasta cerere crescanda, Compania
a inceput sa-si extinda operatiunile in afara orasului Cincinnati, cu o fabrica
in Kansas City, Kansas, si apoi in afara Statelor Unite, cu o fabrica in
Ontario, Canada. Pe masura ce o noua fabrica era deschisa, se pregateau planuri
pentru o alta. Laboratoarele sale erau tot atat de ocupate, cat si fabricile
sale. Noile produse inovative au aparut unul dupa altul --Ivory Flakes, un
sapun in forma de fulgi pentru spalatul rufelor si vaselor Chipso, primul
sapun destinat masinilor de spalat Dreft, primul detergent sintetic
menajer si Crisco, primul ulei vegetal comestibil fara grasimi, care a
schimbat modul de a pregati mancarea in America. Poate ca cel mai important
este faptul ca aceste inovatii au fost realizate nu numai prin cercetare si
dezvoltare in interesul propriu, ci ele s-au bazat pe intelegerea profunda a
necesitatilor consumatorilor, deduse prin abordarea de pionierat a cercetarii
de piata, de catre P&G. Si comercializarea produselor s-a facut, de
asemenea prin tehnici inovative, inclusiv prin emisiuni la radio, oferire de
mostre gratuite si premii promotionale. In 1945, P&G a devenit o companie
de aproape $350 milioane. Produsele sale erau populare de-a lungul Statelor
Unite si Canadei-si Compania a facut primul pas spre dezvoltarea afacerilor
sale dincolo de Ocean, prin achizitionarea companiei Thomas Hedley & Co.,
Ltd., din Anglia. Dupa 108 ani de dezvoltare, P&G era pozitionata pe o
crestere impresionanta. In 1946, P&G a introdus Tide, cel mai important nou
produs al sau dupa Ivory. Tide era superior altor produse de pe piata, si,
repede, a devenit un succes enorm - atat de plin de succes, ca a ajutat de fapt
compania sa dezvolte rapid nu numai noi linii de produse, dar si noi piete pe
plan mondial. In anii ce au urmat introducerii Tide-ului, P&G si-a
confirmat marca in numeroase noi oportunitati de afaceri. Crest, prima pasta de
dinti cu fluor, a ajuns lider de piata, bucurandu-se
de o sustinere fara precedent din partea Asociatiei Stomatologilor Americani.
Tehnologia companiei de producere a celulozei a alimentat dezvoltarea sa in
afacerile cu servetele de toaleta si prosoape de hartie. Si practic P&G a
inventat categoria scutecelor de unica folosinta prin introducerea scutecelor
Pampers in 1961. Compania si-a intarit pozitiile existente, dezvoltand noi categorii de alimente si bauturi-cea mai
notabila fiind achizitionarea companiei de cafea Folger in 1963 si construirea
reputatiei sale puternice in curatatorii cu Downy, primul balsam pentru
tesaturi. Oricum, cea mai importanta a fost concentrarea sporita a companiei pe
afacerile internationale. Convinsa ca succesul sau pe noile piete geografice
cere operatiuni pe plan local, P&G a inceput construirea afacerilor, mai
intai in Mexic, apoi in Europa si Japonia. Pana in 1980 P&G a realizat
afaceri in 23 tari din intreaga lume, cu vanzari de circa $11miliarde si
profituri de 35 de ori mai mari decat in 1945. In 1980, pe masura ce se apropia
a 150a sa aniversare, P&G trecea prin cea mai impresionanta perioada de
crestere din istoria sa. Compania care a inceput ca un mic parteneriat in
Midwestern a devenit una dintre cele mai mari corporatii multi-nationale din
America. Doua schimbari importante au marcat aceasta perioada impresionanta.
Prima, Compania s-a dezvoltat ca un nou factor important in ingrijirea
sanatatii prin achizitionarea companiei Norwich Eaton Pharmaceuticals in 1982,
Richardson-Vicks in 1985-si in cosmetice si arome-la sfarsitul anilor '80 si
inceputul anilor'90, prin achizitia Noxell, Max Factor si Ellen Betrix. Aceste
achizitii au alimentat de asemenea si planurile de globalizare ale Companiei.
Richardson-Vicks si Max Factor, in special, au extins in mod impresionant
prezenta internationala a P&G. Sprijinind noile sale forte globale,
compania a infiintat o retea mondiala de cercetare si dezvoltare, cu unitati de
cercetare in SUA, Europa, Japonia si America Latina, si a atins pozitia de
lider pentru Pampers, Always/Whisper, Pantene Pro-V, Tide, Ariel, Crest, Vicks
si Oil of Olay-produse care au devenit cu adevarat marci mondiale. De-a lungul
anilor, inovatiile P&G au ajutat ca Tide sa ramana un lider al categoriei
sale si cea mai mare marca unica de produs a P&G. La ora actuala, Procter & Gamble este
intr-adevar o corporatie globala. Din 1980, compania a majorat de patru ori
numarul consumatorilor deserviti de marcile sale de produse-circa cinci
miliarde de oameni din intreaga lume.
P&G opereaza in prezent in peste 70 tari si produsele sale sunt vandute in peste 140 de tari, ceea ce face ca P&G sa
fie una dintre cele mai mari si mai de succes companii de bunuri de consum din
lume. P&G a inceput sa activeze in Balcani in 1992 cu numai trei angajati.
Sediul central pentru zona Balcanilor este Bucuresti, de unde P&G isi
conduce afacerile din cele sapte tari: Romania, Bulgaria, Republica Moldova,
Iugoslavia, Bosnia, Albania, Republica Macedonia. Azi, cu peste 250 angajati si
o cifra de afaceri de cateva zeci de milioane dolari, filiala P&G Balkans
este complet integrata in reteaua mondiala a companiei.
1.3 Despre SAP
SAP este liderul recunoscut in solutii software colaborative pentru afaceri pentru toate industriile si toate pietele semnificative.
Cu peste 121 000 de instalari de software, SAP este cea mai mare companie de software pentru afaceri si al treilea producator independent de software la nivel mondial. Are o istorie bogata de inovare si dezvoltare, care a transformat SAP in liderul domeniului sau de afaceri. Astazi, are peste 51 500 de angajati in mai mult de 50 de tari.
In prezent are sediul in Walldorf, Germania, si este listata la mai multe burse, printre care Frankfurt Stock Exchange si New York Stock Exchange, cu simbolul 'SAP.'
1.3.1 Scurt Istoric
Fondata in 1972 de catre cinci fost angajati IBM -- Dietmar Hopp, Hans-Werner Hector, Hasso Plattner, Klaus Tschira, si Claus Wellenreuther ,companie numita Systems, Applications, and Products in Data Processing in Mannheim, Germania.
Viziunea lor a fost sa realizeze o aplicatie software standard ce va lucra cu procesele de business in timp real.
Un an mai tarizu prima aplicatie software de contabilitate este finalizata, formand baza pentru viitoarele componente software, care mai tarziu s-au numit 'R/1 system.' ("R" referinduse la procesari de date in timpi reali)
-1980 - O crestere continua si rapida.
SAP se muta in prima cladire a companiei in Max-Planck-Strasse, intr-un parc industrial in Walldorf, langa Heidelberg.
50 din cele 100 de companii cele mai mari din Germania sunt acum clienti SAP.
Aparitia SAP R/2 system ce atinge nivele mai inalte de stabilitate a programelor fata de versiunea anterioara ,adaptat acum sa functioneze pentru mai multe limbi si cursuri valutare face sa depaseasca granitele Germaniei ajungand in tari ca Austria, Danemarca,Suedia,Italia,SUA, astfel ca extinderea SAP-ului pe plan international se vede foarte promitatoare.
- 1990: O noua abordare a softwareului si solutiilor
SAP R/3 este lansat pe piata. Conceptul client/server , aparitia interfetei grafice, folosirea consistenta a bazelor de date relationale si posibilitatea de a rula pe computerele diferitilor furnizori sunt ,conform asteptarilor, foarte aprobate si mult apreciate .
Tot in aceasta perioada se infiinteaza noul centru de vanzari si development in Walldorf, simbolizand succesul global al companiei, atingand pentru prima data in istorie un procent mai mare de 50% de vanzari internationale din totalul vanzarilor.
Pana-n 1996 compania atinge 1,089 de noi clienti SAP R/3, iar pana la sfarsitul anului SAP ajunge sa fie instalat la peste 9000 de systeme in toata lumea.
In 1997 compania celebreaza 25 de ani de existenta si angajati de peste 12,900.
-2000- Inovatie pentru noul mileniu
Odata cu internetul, utilizatorul devine focusul pentru aplicatiile software. SAP va dezvolta SAP Workplace si va pava drumul pentru idea unui portal si access la informatii dupa anumite criterii( role-specific).
In mod current sunt mai multi de 12 milioane de utilizatori care muncesc in fiecare zi cu solutii SAP, 121,000 de instalari in toata lumea, mai mult de 1500 de parteneri SAP si peste 41200 de clienti in peste 120 de tari. SAP este al treilea cel mai mare furnizor de servicii software din lume.
q SAP R/3 lanseaza 4.0B data lansarii: Iunie 1998
q SAP R/3 lanseaza 4.5B data lansarii :Martie 1999
q SAP R/3 lanseaza 4.6B data lansarii: Dec 1999
q SAP R/3 lanseaza 4.6C data lansarii: Aprilie 2001
q SAP R/3 lanseaza e Release 4.70 data lansarii: Martie- Dec 2003
q SAP ECC 5.0 ERP (mySAP ERP 2004) anul lansarii 2004
q SAP ECC 6.0 ERP (mySAP ERP 2005) anul lansarii 2005
1.3.2 Ce face SAP-ul diferit:
1.3.3 Aplicand SAP-ul:
1.4 Observarea sistemului informational existent
1.4.1 Infiintarea Procurement Center-ului
Centrul Regional de Achizitii (Procurement Center) din Bucuresti a fost deschis in anul 2005 avand ca scop externalizarea activitatilor de achizitii din Europa, intr-o singura locatie-Bucuresti, astfel de departamente mai intalnindu-se si an alte cateva orase mai importante din Balcani sau din Africa.
Buyerul, este persoana responsabila de executarea contractelor negociate intre birouri sau fabrici P&G din Europa si furnizori, sa asigure realizarea achizitiilor prin operarea de sisteme care verifica plata la timp a facturilor, livrarea bunurilor, serviciilor catre fabrici sau birouri, sau de achizitii a materiei prime folosite in procesul de productie la nivelul mai multor tari .
Buyerul din Bucuresti ,cu alte cuvinte, este un intermediar intre personalul fabricii sau biroului P&G din Europa si furnizorii globali.
In momentul in care se decide (decizii luate de fabrica sau birouri ) cumpararea produselor sau serviciilor, care, ori vor intra in mod direct in procesul de productie ( se produc sampoane si se necesita componenta chimica), ori sunt necesare personalului birourilor ( pixuri, caiete, diferite traininguri.), aceste cereri denumite purchase requisition (PR) sunt trimise achizitorului din Bucuresti prin SAP, care ,la randul lui, le cumpara mai departe de la furnizori,
Inainte de a le cumpara insa, trebuie sa stie, de unde sa le cumpere, astfel ca odata cu cererea, buyerul primeste si o lista de furnizori preferati catre care va trimite o serie de cereri de cotatii. Cotatia primita care se dovedeste a fi mai avantajoasa ( pretul cel mai mic, livrat in cele mai avantajoase conditii) se va transforma intr-un purchase order(PO) sau comanda si se va retrimite furnizorului sub aceasta forma (de PO). Ultimul act in acest proces este ca vendorul (furnizorul) sa livreze, in termenii stabiliti, bunurile/serviciile catre fabrica si sa emita factura.
Fig:1.1 Schematizarea procesului
Sistemul SAP este sistemul care administreaza intreg acest proces, printre multe altele de altfel.
In SAP se primesc cererile (PR-urile), sunt inregistrati vendorii, se creaza cererile de cotatii si PO-urile, se vizualizeaza PO-urile si se fac schimbarile ce pot sa fi cerute intre timp ( anulari de comenzi, schimbari de pret, cantitate, data de livrare..) si toate aceste procese se realizeaza in timp real, de aceea, logarea la SAP se realizeaza numai daca exista o conexiune la internet.
In general un buyer e nevoit sa trimita in jur de 100 de astfel de cotatii pe zi, pe langa multe alte activitati si proiecte in care este implicat. Trimiterea unei cotatii nu e neaparat o munca dificila insa sunt numeroase ,se realizeaza intr-un timp indelungat, repetitiv ceea ce face acest proces sa devina un automatism destul de neagreat de catre buyer, astfel ca, prin aplicatia prezentata ulterior s-a dorit eliminarea acestor aspecte neplacute, dar mai mult de atat, sa ofere o baza de date sigura, rapida, eficienta si mult mai " user friendly".
1.4.2 Lucrul cu Cererile de Cotatii
Pentru a-si vedea cererile ( PR-urile) primite pe ziua respectiva buyerul va proceda in felul urmator:
Se va loga la sistemul SAP
1.4.3 Logarea la sap
Din fereastra sapului de logon se va alege boxul (client-ul) pe care utilizatorul respectiv lucreaza. Accesul este in functie de fabricile pentru care lucreaza, de site ( ex: Londra) de natura produselor comandate( servicii, produse, materii prime..).
La momentul angajarii, utilizatorul, va primi un access in sap pe anumite boxuri, accesul in alte boxuri fiind restrictionat. SAP Key User-ul departamentului este persoana calificata in a pune tikete pentru a cere accesul, deasemena este si persoana careia i se va sonstata eventualele erori ce pot sa apara in sistem.
Fig:1.2 Logare Sap
Un IT developer poate avea access in mai multe boxuri din SAP pentru a putea dezvolta si testa diferite aplicatii ce necesita acest access.
Dupa ce s-a facut logarea, utilizatorul va putea vedea pagina de start de unde mai departe poate intra in diferite tranzactii.
Fig.1.3 Meniu Sap
Tranzactiile la randul lor sunt restrictionate.
Unii buyeri pot schimba PO-urile, insemnand ca au access in "change mode" altii doar sa le vizualizeze "display mode", in cazul IT developeru-lui, are access in ambele.
1.4.4 Vizualizare PO
Pentru a putea vizualiza si schimba PO-urile se poate face in 2 moduri:
access rapid prin introducerea trazactiei "me22n"
Fig. 1.4 Introducere tranzactie
sau prin MENIU
1.5 Vizualizare meniu
Fig:1.6 Modul change a unui PO
1.4.5 Printare
Pentru a printa sau faxa documentul sunt cativa pasi de urmat:
Se alege "Messages" iar apoi ce se doreste: printare sau faxare:
Fig.1.7 Printare
Alegem in acest caz printarea si selectam cand sa fie si destinatia: in acest caz, imediat si local:
Fig.1.8 Finalizare Printare
Fig:1.9 PO printat
Acest PO printat este exact comanda trimisa catre furnizor, care fie e trimisa prin fax, email, sau pe website( Supplier Portal).
In aceasta comanda apar toate date de contact a persoanei care trimite comanda, date despre fabrica( unde trebuie sa ajunga comanda), date despre furnizor ,date despre produsele comandate( pret, cantitate, descriere) ,data de livrare si deasemenea termeni si conditii impuse de politica P&G.
Un buyer inainte de a creea un astfel de PO pe care urmeaza sa-l trimita furnizorului va verifica lista de cereri primite (PR-urile) de la fabrici ( de exemplu daca lucreaza pe site-ul UK ,va primi cereri din partea fabricilor din Londra, Manchester, Seaton, Nenagh sau Reading)
Pnetru a face asta va intra pe tranzactia me57
Fig1.10 assign and process
Aici va scrie codul fabricii pe care lucreaza ( 0336- este Manchester) ,purchasing groupul, care este un cod de identificare a buyerilor ce creaza PO-uri pe aceasta fabrica (1B7), iar in momentul in care va da RUN toate PR-urile ce ii corespund pe ziua respectiva vor aparea.
-Numarul ce e de forma 1001175809 este numarul de PR, de asemenea mai apar numarul pe care-l va avea viitorul PO(460007464), numarul de vendor (10021801) descrierea produsului, etc..
Fig:1.11 Lista PR-uri
Pentru a vedea detaliat fiecare PR in parte se selecteaza si se apasa enter
Fig:1.12 PR detaliat
Aceasta lista de asemenea poate fi salvata intr-un excel, tranzactia %pc face acest lucru, urmand sa se aleaga "spreadsheet".
Fig.1.13 Salvare format xls.
Urmatorul pas este sa se aleaga calea si denumirea fisierului:
Fig.1.14 alegerea caii de salvare fisier
Acesta a fost modalitatea prin care un utilizator putea vedea toate PR-urile ce-i corespundeau pe ziua respectiva.
Pentru a creea un RFQ( request for quotation) sau cerere de cotatie buyerul va trebuie sa procedeze in felul urmator:
Va intra in tranzactia me41 unde va introduce data cotatiei ( ziua curenta) data limita cand trebuie primita cotatia, numarul de PR si linia ( un PR poate avea mai multe linii, insemnand ca sub acelasi numar de cerere sunt mai multe produse comandate, acelasi lucru fiind valabil si pentru PO), purchasing organization si purchasing groupul ce se refera la identificarea persoanelor ce lucreaza pe fabrica respectiva.
Apasand enter se va intra in RFQ-ul respectiv si se va continua procesul unde, daca mai exista alte linii acestea se vor adauga, deasemenea se va adauga data de livrare, si in cele din urma numarul de vendor. In momentul in care numarul de vendor se adauga, in mod automat toate detalile despre acel vendor( denumire, adresa) vor aparea automat.
Dupa ce toti acesti pasi au fost urmati, dupa ce se salveaza va aparea numarul de cerere de cotatie :
Daca e printat aceasta va arata foarte asemanator cu un PO printat , diferenta este denumirea(Request for Quotation si nu Purchase Order) si in plus nu exista pret, pentru ca se asteapta raspunsul furnizorului care va face oferta cu pretul pe care-l practica.
Aceste cereri se trimit la toti vendorii preferati pe care buyerul ii are. Se asteapta primirea cotatiilor cu oferta cea mai buna. Dupa ce aceasta este primita , buyerul va creea purchase orderul ,destinat vendorului ales si-l va retrimite pentru ca in cele din urma sa se faca comanda care va urma sa fie livrata in termenii stabiliti la fabrica.
In tot acest timp buyerul va supraveghea situatia cotatiei (daca se primeste la timp), situatia comenzii, daca se va livra la timp.
Fig 1.15 creare RFQ
Fig.1.16: Introducerea datei de livrare
Fig.1.17: Introducerea nr. furnizorului
Fig.1.18 Model RFQ printat
Cererea de Cotatie poate fi trimisa catre furnizori, in mai multe feluri:
1. Prin Sap Email
2. Prin Sap Fax
3. Prin Efax
4. Prin Outlook Email
In toate cele 4 cazuri ,aceste RFQ-uri trebuiesc sa fie trimise una cate una, deorece fiecare trebuie creat in parte, in modul in care s-a aratat anterior, iar modalitatea preferata de trimitere este cea prin Outlook Email.
Prin aceasta metoda, odata cu RFQ-ul se mai pot trimite diverste atasamente(poza produsului, linkul catre site-ul furnizorului), emailul deasemenea se poate personaliza, oferindu-i acelui furnizor date si specificatii in plus.
Atasamentul ce se prefera sa fie trimis este RFQ-ul in format .pdf pentru ca aici sunt exact toate datele despre acea cerere in forma si detaliile cele mai bune.
Capitolul 2. Access si VBA
2.1 Notiuni introductive despre Ms Access.
Microsoft Access 2000 este un sistem de gestionare a bazelor de date relationale pe 32 de biti (RDBMS) pentru crearea de aplicatii clasice sau de tip client-server pentru baze de date pentru sistemele de operare Windows.
Principalul motiv al succesului programului Access este faptul ca aduce pe suprafata de lucru a mare parte din facilitatile sistemelor pentru baze de date relationale client/server, denumite si baze de date SQL. Access 2000 (si alte versiuni ) si Visual Basic 6.0 au amandoua capacitatea de a folosi controale ActiveX (cunoscute si sub vechea denumire de controale OLE) create de Microsoft, de alti programatori de module de extensie si de utilizatori. Access a fost proiectat in vederea crearii de aplicatii multiutilizator, in care fisierele bazelor de date sunt partajate in retea, iar Access foloseste un sistem de securitate complex pentru a impiedica persoanele neautorizate sa citeasca sau sa modifice bazele de date. Sistemul de securitate folosit in Access este modelat pe baza celui din Microsoft SQL Server. Access are o structura unica pentru baze de date care poate combina toate tabelele de date inrudite si indexurile, formularele, rapoartele si codurile VBA ale acestora intr-un singur fisier .mdb. In prezent exista o tehnica general acceptata pentru proiectarea bazelor de date(GADBDP), aceea de a folosi fisiere .mdb separate care contin obiecte de date si aplicatie; fisierul .mdb cu obiectul de aplicatie are legaturi la fisierul .mdb cu tabele de date. Access 2000 foloseste si un format sigur pentru fisiere, .mde, astfel ca puteti sa distribuiti aplicatiile Access fara sa permiteti accesul la codul-sursa VBA. Access poate importa date din si poate exporta date in cele mai cunoscute formate de fisier pentru baze de date si foi de calcul tabelar, precum si ca fisiere de text. De asemenea, Access poate atasa fisiere cu tabele FoxPro si Paradox la bazele de date si permite lucrul cu aceste fisiere in formularul lor nativ. De asemenea, puteti sa folositi programul Access pe statii de lucru care au rolul de clienti pentru servere de retea cu fisiere si baze de date in cadrul sistemelor client/server pentru baze de date. Ca atare, Access indeplineste toate cerintele pentru un sistem profesional de dezvoltare pentru lucrul cu baze de date client/server. Pentru a putea fi considerata un sistem complet pentru gestionarea bazelor de date relationale(relational database management system-RDBMS), o aplicatie trebuie sa poata efectua urmatoarele patru functii de baza distincte, fiecare avand un mod propriu de reprezentare in ochii utilizatorului:
Organizarea datelor implica crearea si manevrarea tabelelor care contin date intr-un format tabelar convenabil(cu linii si coloane), denumit modul de afisare Datasheet.
Legarea tabelelor si extragerea datelor implica legarea mai multor tabele prin relatii intre date, in vederea crearii unor tabele temporare, stocarea in memoria calculatorului sau in fisiere temporare pe disc, care contin datele alese de d-voastra. Access foloseste interogari pentru legarea tabelelor si alegerea datelor care trebuie stocate intr-un tabel temporar numit obiect Recordset. Un obiect Recordset cuprinde datele care rezulta din executarea interogarii; obiectele Recordset se numesc tabele virtuale pentru ca ele sunt stocate in memoria calculatorului, nu in fisiere de tip baza de date. Extragerea datelor limiteaza utilizarea obiectelor Recordset la anumite grupuri de date care indeplinesc criteriile stabilite de utilizator. Expresiile sunt folosite pentru calcularea valorilor cu datele respective(de exemplu, se poate calcula un total prin inmultirea pretului unitar cu cantitatea) si pentru afisarea valorilor calculate ca si cand ar fi un camp in unul din tabele.
Introducerea si editarea datelor inseamna crearea si implementarea unor formulare pentru afisarea, introducerea si editarea datelor ca alternativa la prezentarea tabelara. Formularele permit preluarea de la aplicatie a controlului asupra modului in care sunt afisate datele. Posibilitatea de tiparire a formularelor, de exemplu a comenzilor si facturilor, este in mod sigur o caracteristica foarte utila pentru utilizatori.
Prezentarea datelor impune crearea de rapoarte in care sa poata fi sintetizate informatiile din obiectele Recordset pe care le puteti vedea, tipari si publica pe Internet sau intr-un intranet. Capacitatea de realizare a unor rapoarte semnificative este scopul final al oricarei aplicatii pentru gestionarea bazeor de date.
2.1.1 Arhitectura Microsoft Access
O baza de date Access poate fi definita ca o colectie de obiecte: tabele (table), cereri de interogare (query), formulare (form), rapoarte (report), pagini Web (pages), comenzi macro (macro) si module (module). Trebuie subliniata diferenta majora care exista intre Microsoft Access si alte sisteme de gestiune a bazelor de date. Astfel, in Visual FoxPro, prin baze de dale (database) se inteleg doar acele fisiere in care sunt stocate datele.
. Tabela (Table) este un obiect definit de utilizator in care sunt stocate datele primare (expresia modelului relational).
Formularul (Form) este un obiect care permite introducerea datelor, afisarea acestora sau controlul intregii aplicatii.
. Interogarea (Query) este un obiect care permite vizualizarea informatiilor obtinute prin prelucrarea datelor din una sau mai multe tabele si/sau alte cereri de interogare.
. Raportul (Report) este un obiect care permite formatarea si tiparirea informatiilor obtinute in urma consultarii bazei de date sub forma de documente.
Pagina Web de accesare a datelor (Pages) reprezinta un obiect care include un fisier HTML si alte fisiere suport in vederea furnizarii accesului Ia date prin intermediul browser-elor Internet.
. Comanda Macro (Macro) reprezinta un obiect care contine o definitie structurata a uneia sau mai multor actiuni pe care Access le realizeaza ca raspuns la un anumit eveniment.
. Modulul (Module) reprezinta un obiect care contine proceduri definite de utilizator si scrise in limbajul de programare Visual Basic.
Pentru toate functiile de baza din Access exista cinci functii auxiliare:
Macrocomenzile (Macros) sunt serii de actiuni care realizeaza automatizarea operatiilor repetitive executate in bazele de date. Pentru a crea o macrocomanda in Access trebuie sa alegeti dintr-o lista de actiuni posibile actiunile in ordinea in care vreti sa fie efectuate de program. De exemplu, puteti sa folositi o macrocomanda pentru a deschide un raport, pentru a tiparii un raport, apoi pentru a inchide raportul respectiv. In versiunile anterioare ale programului Access, macrocomenzile au constituit in special elemente pentru automatizarea operatiilor in baza de date. In Access 2000, macrocomenzile sunt folosite in special pentru realizarea compatibilitatii cu bazele de date create in versiunile Access anterioare. Pentru bazele de date Access 2000, in vederea automatizarii actiunilor se vor folosi codurile Visual Basic for Applications(VBA).
Modulele sunt functii si proceduri scrise in limbajul de programare VBA. Functiile VBA sunt folosite pentru efectuarea calculelor mai complexe decat cele care pot fi exprimate printr-o serie de simboluri matematice conventionale sau pentru efectuarea de calcule care impun luarea de decizii. Subprocedurile VBA sunt scrise pentru efectuarea de operatii care depasesc posibilitatile unor actiuni standard executate prin macrocomenzi. Pentru a executa subprocedurile VBA, trebuie sa atasati subprocedura la anumite evenimente care au loc atunci cand un formular sau un raport este obiectul avtiv. In Access 2000, puteti sa executati procedurile VBA si direct din modulul acestora.
Securitatea este reprezentata de functii incluse ca optiuni in meniuri ti in subproceduri VBA. Cu ajutorul functiilor folosite intr-un mediu multiutilizator puteti sa le permiteti ale altor utilizatori sa va foloseasca bazele de date. Puteti sa permiteti accesul unor grupuri de utilizatori sau unor utilizatori individuali si puteti sa le limitati capacitatea de a vedea sau a modifica total sau partial tabelele din bazele de date.
Functia de tiparire va permite sa tipariti practic orice vedeti in ferestra programului Access. De pe bara cu instrumente puteti sa comandati tiparirea codurilor VBA, nu insa si a macrocomenzilor pe care le scrieti.
Functiile pentru publicare permit distribuirea informatiilor prin retele intranet de firma si in mediul public al Internet-ului, sub forma de pagini de Web. Access 2000 foloseste si pagini DAP(Data Access Pages), care va permit sa creati aplicatii pentru afisarea si actualizarea datelor in pagini care folosesc limbajele DHTML(Dynamic HTML) si XML (eXtensible Markup Language).
Deschiderea unei baze de date pune la dispozitia aplicatiei continutul acesteia prin fereastra Database. Puteti sa deschideti numai o singura baza de date intr-o sedinta obisnuita de lucru in Access. Scrierea codului VBA va permite sa lucrati cu tabele din mai multe baze de date deschise in Access folosind legarea(termenul folosit in Access 2000 pentru anexare) tabelelor din alte baze de date.
Deschiderea unui tabel determina afisarea continutului acestuia in modul de afisare Datasheet.
Deschiderea unei interogari determina deschidere tabelelor implicate, fara insa a le afisa. Access executa apoi interogarea in aceste tabele pentru a crea un obiect Recordset tabelar. Modificarile operate asupra datelor din obiectul Recordset determina operarea modificarilor in datele din tabelele asociate cu interogarea executata, daca obiectul Recordset este actualizabil.
Deschiderea unui formular sau a unui raport determina in mod automat deeschiderea tabelului sau a interogarii asociate cu acesta. Formularele si rapoartele sunt asociate, de regula, cu interogari, dar o interogare poate sa fie asociata si cu un singur tabel.
Inchiderea unei interogari determina si inchiderea tabelelor asociate.
2.1.1.1 Despre obiectele de tip tabel
Tabelele constituie obiectele fundamentale ale unei baze de date ACCESS. Intr-un tabel se stocheaza atat descrierea tabelei cat si inregistrarile de date. Gestiunea tabelelor (creare, modificare, vizualizare, stergere) a unei baze de date Access 2000 se poate realiza din sectiunea Tables a ferestrei bazei de date (Database Window)
Fig.2.1 Tabele in access
1. Crearea tabelelor
Un tabel se poate crea in mai multe moduri:
alegand comanda Table din meniul Insert;
prin actionarea butonului de comanda New din fereastra Databases (dupa ce s-a selectat sectiunea Tables);
Access va afisa pe ecran caseta de dialog de mai jos , care propune mai multe variante de descriere a structurii unui tabel.
Design View este echivalenta cu actionarea hyperlink-ului Create table in Design View.
Fig.2.2 Creare tabel
Utilizatorul stabileste absolut toti parametrii necesari pentru descrierea structurii unui tabel: numele campurilor, tipurile de date ale acestora, reguli de validare, etc. Fereastra Access de descriere a tabelei (figura de mai jos ) este formata din doua zone: zona a in care se definesc campurile din structura tabelei, si zona b in care sunt precizate proprietatile acestora.
Descrierea campurilor: Numele campului (Field Name);
Numele unui camp trebuie sa respecte urmatoarele reguli:
. Poate sa contina litere (majuscule sau minuscule, sau ambele tipuri), cifre si numeroase caractere speciale;
. Poate sa contina maximum 64 de caractere;
. Este interzisa utilizarea caracterelor: punct (.), semnul exclamarii (!), parantezele drepte ([]).
. Numele campului nu poate sa inceapa cu un spatiu.
In formarea numelui campului se recomanda:
. Sa nu se utilizeze caracterul spatiu; pentru imbunatatirea lizibilitatii numelui se poate inlocui spatiul cu caracterul de subliniere (_) sau se pot utiliza litere majuscule si minuscule in acelasi nume;
. acesta poate sa contina orice litera, cifra, spatii, etc.; caracterele interzise sunt: [],.!'
Tipul de date al campului (Data Type); utilizatorul are la dispozitie noua tipuri de date de baza (tabelul de mai jos), pentru unele dintre ele fiind disponibile subtipuri de date. In functie de necesitati; subtipurile se configureaza in zona de jos a ferestrei (sectiunea General);
Proprietatile campului (Field Properties) (Text, Memo, Number. DateTime, Curency,Autonumber, Yes/No, OLE Object, Hyperlynk, Lookup
Wizard)
Comentarii (Description), este o proprietate optionala, unde utilizatorul poate introduce sub forma de siruri de caractere diverse informatii cu privire la un camp.
In zona b a ferestrei (General si Lookup) se pot stabili valori pentru doua categorii de sproprietati:
Proprietati din categoria General (Field Size,Decimal Places,Format, Caption,Default Value)
Input Mask - stabileste un format (masca, sablon) de introducere a datelor pentru un anumit camp. La fel ca in cazul proprietatii Format, exista o serie de caractere prin care se stabileste acest format de introducere a datelor, in cazul in care se utilizeaza ambele proprietati, proprietatea Format are prioritate fata de proprietatea Input Mask.
Validation Rule - defineste o regula de validare pentru un camp, practic o expresie ce se va testa pentru continutul introdus intr-un camp. Regulile de validare se testeaza dupa introducerea unei valori intr-un camp sau in momentul in care se incearca salvarea unei inregistrari (in momentul in care se incearca introducerea unei inregistrari noi, la trecerea de la o inregistrare la alta, sau la salvarea explicita a acesteia) pentru campurile nevizitate de utilizator. Daca o regula de validare a unui camp nu se verifica, inregistrarea nu se poate salva decat daca se corecteaza continutul campului in asa fel incat sa se verifice regula de validare stabilita. Expresia pentru aceasta proprietate se poate scrie si in mod asistat cu ajutorul ferestrei Expression Builder. Numele campurilor dintr-o expresie Validation Rule trebuie scris intre caracterele []. O expresie Validation Rule la nivel de camp nu poate referi alte campuri, decat cel curent. Se pot utiliza functii Access, constante, operatori, etc.
Exemple de reguli de validare pentru un camp de tip Number, Integer:
. >100 and <=200 stabileste valorile posibile intre 101 si 200
. oNull sau is Not Null - campul trebuie sa contina o valoare.
Validation Text - defineste un mesaj de atentionare care va fi afisat in momentul in care regula de validare definita in proprietatea Validation Rule este incalcata.
Required - poate lua valoarea Yes sau No, corespunzatoare valorilor logice adevarat (True) sau fals (False) si stabileste daca valoarea unui camp este obligatoriu (Yes) de introdus sau nu (No).
2. Definirea cheii primare
Orice tabela trebuie sa posede o cheie primara (Primary Key), adica un camp sau un grup de campuri care identifica in mod unic fiecare inregistrare. Daca utilizatorul nu stabileste o cheie primara, Access stabileste una in mod implicit creand un camp de tip AutoNumber care va contine un numar unic pentru fiecare inregistrare. Desi Access creeaza in mod implicit o cheie primara, urmatoarele ratiuni recomanda utilizatorului sa defineasca o cheie primara:
. cheia primara este un index.
. indecsii realizeaza o clasificare a datelor dupa unul sau mai multe campuri ceea ce are drept consecinta cresterea vitezei de realizare a interogarilor.
. la fiecare adaugare a unei noi inregistrari, Access nu autorizeaza inregistrari duble pentru campul cheie primara.
. Microsoft Access afiseaza datele in ordinea cheii primare.
Crearea unei chei primare unice este denumita in lumea bazelor de date asigurarea integritatii de entitate.
Import Table, permite importul tabelei dintr-o alta aplicatie Access, Oracle, Excel, etc.
Link table, permite includere prin atasare (legare) dintr-o alta baza de date.
2.1.1.2. Despre obiecte de tip Formular
In cadrul aplicatiilor cu baze de date, tabelele sunt actualizate prin intermediul unor machete specializate numite formulare (forms). Formularele asigura:
a. Interfata prietenoasa cu utilizatorul final, realizata prin intermediul diferitelor controale (butoane, casete text, etc.) sau alte elemente grafice incorporate;
Actualizarea concomitenta a mai multor tabele prin intermediul subformularelor;
Reguli de validare suplimentare celor definite la nivelul tabelelor.
Formularele din Access creaza interfata cu utilizatorul pentru tabele, avand avantajul prezentarii datelor intr-un mod atragator si organizat. Formularele sunt compuse dintr-o colectie de elemente constructive individuale denumite controale sau obiecte de control. Formularele pot contine si subformulare. Formularele se pot crea in doua moduri: folosind Form Wizard sau prin proiectare cu Form Design.
Pentru a modifica aspectul formularului creat se poate alege optiunea Design View, pentru a deschide Form Design. Fereastra contine o bara cu instrumente "Toolbox", care permite adaugarea in formular a unor elemente de control.
1. Elementele ferestrei Form Design.
Sunt cinci sectiuni intr-un formular: Form Header (antetul formularului), Page Header (antetul paginii), Detail, Page Footer (subsolul paginii) si Form Footer (subsolul formularului).
Fereastra Form Design contine urmatoarele elemente principale:
bara cu instrumente Form Design
bara cu instrumente de formatare
rigla gradata verticala si orizontala
bara de derulare verticala si orizontala
bara Form Header care defineste inaltimea sectiunii care defineste antetul formularului; aceasta bara va fi afisata doar daca formularul contine un antet si un subsol.
Sectiunea Form Header contine text, imagini si alte controale in partea superioara a formularului. Ea apare numai pe prima pagina a unui formular cu mai multe pagini; celelalte pagini ale formularului pot contine optional o sectiune Page Header. (Sectiunile Page Header si Form Header nu sunt vizibile in modul de afisare Form). Pentru aplicarea acestor sectiuni se pot alege optiunile din meniul View, Form Header/Footer respectiv Page Header/Footer.
2. Prezentarea casetei cu instrumente Access. Controale in formulare.
Controalele sunt obiecte grafice (elemente vizuale) ce sunt incluse in formulare sau rapoarte, in scopul editarii/afisarii datelor sau executarii unor actiuni (ex.: etichete, casete text, butoane, etc.). Adaugarea controalelor se poate face numai in etapele de creare sau modificare a formularelor, astfel:
a) Din fereastra Toolbox se selecteaza butonul aferent controlului dorit;
b) Se descrie, cu ajutorul mouse-lui, o zona dreptunghiulara pe suprafata formularului, definind astfel pozitia si dimensiunea noului control.
Controalele pot fi clasificate in functie de urmatoarele criterii:
a. Rol :
Controale pentru editarea si afisarea datelor (ex.: casetele text, etichetele etc.);
Controale pentru executarea unor actiuni (ex :butonul de comanda);
Controale pentru afisarea graficelor (ex.: imagini, obiectele cadru etc.).
b. Sursa de date:
Controale legate (bounds) - sunt controale ce afiseaza sau editeaza datele din campuri (ex.: o caseta text ce va actualiza campul Data factura din tabela Factura)',
Controale nelegate (unbounds) - sunt independente de realizarile campurilor, asadar, nu permit actualizarea acestora, in general, din aceasta categorie fac parte controalele calculate (ex.: o caseta text ce va afisa totalul facturii), dar si controalele care, prin insusi specificul lor, nu pot fi atasate campurilor (ex.: butoanele de comanda, etichetele, cadrele etc.).
c. Structura:
Controale elementare (butoane, casete text, etichete etc.)
Controale container - inglobeaza alte controale (ex.: grup de optiuni, Control Tag etc.).
Firg2.3 Principalele controalele disponibile in fereastra Toolbox
Proprietatile controalelor
Proprietatile unui control sunt afisate in fereastra Properties, atunci cand controlul respectiv este selectat. Ca si in cazul formularelor, metodele aferente controalelor sunt grupate in patru categorii (Format, Data, Events, Other) si sunt disponibile numai prin intermediul macro-urilor sau modulelor VBA.
Cele mai uzuale proprietati sunt:
. Format - specifica modelul (masca} de afisare a datelor (numai pentru casetele text);
. Decimal Places - indica numarul de zecimale cu care vor fi afisate datele (numai pentru casete text);
. Caption - contine textul afisat de control (numai pentru controalele needitabile: etichete, butoane etc.);
. Visible - determina afisarea sau nu a controlului in timpul executiei formularului;
. Left - stabileste coordonata orizontala a coltului stanga-sus al controlului;
. Top - indica pozitia pe verticala a coltului stanga-sus;
. Width - stabileste latimea controlului;
. Height - stabileste inaltimea obiectului;
. Back Style - determina modul de afisare: control normal sau transparent;
. Back Color - stabileste culoarea de fundal a controlului;
. Special efect - specifica efectele tridimensionale ale controlului;
. Border Style - indica tipul linie folosit la trasarea bordurii controlului (transparent, continuu, punctat etc.);
. Border Color - determina culoarea bordurii;
. Border Width - grosimea bordurii;
. Fore Color - culoarea textului afisat de control;
. Font Name - tipul fontului aferent textului din control;
. Font Size - dimensiunea fontului;
. Picture - specifica numele si calea fisierului grafic ce va fi afisat in interiorul controlului (numai pentru butoane si controale de tip imagine);
. Text Align - stabileste modul de aliniere a textului in interiorul controlului.
2.1.1.3 Despre obiecte de tip Interogare
Interogarea unei baze de date inseamna regasirea si extragerea informatiilor stocate in aceasta. Pentru realizarea interogarilor SGBD Access pune la dispozitia utilizatorilor obiectele de tip cereri (Query). Rezultatul cererii se prezinta sub forma unei foi de raspuns dinamic care poarta numele de DynaSet. Foaia de raspuns dinamic (DynaSet-ul) nu mai exista fizic dupa inchiderea cererii. O cerere poate avea drept sursa de date unul sau mai multe tabele ale bazei de date sau chiar o alta cerere creata anterior. Interogarile reprezinta un instrument esential in lucrul cu orice sistem de gestiune a bazelor de date. Ele sunt folosite pentru selectarea inregistrarilor, actualizarea tabelelor si adaugarea de noi inregistrari intr-un tabel. Interogarile se folosesc cel mai frecvent pentru selectarea anumitor grupuri de inregistrari care indeplinesc anumite conditii. De asemenea ele pot fi folosite pentru combinarea informatiilor din diferite tabele .
Interogarile se pot crea cu ajutorul rutinei Simple Query Wizard sau prin proiectare in fereastra Query Design.
O cerere Access poate fi utilizata pentru:
regasirea si ordonarea datelor dupa anumite criterii;
efectuarea de calcule;
actualizarea bazei de date (prin cereri de tip actiune);
pregatirea datelor in vederea afisarii lor in formulare sau rapoarte;
1. Tipuri de interogari
Access permite crearea a patru tipuri de interogari:
Interogari de tip Select pentru extragerea datelor din unul sau mai multe tabele si de a le afisa in forma tabelara. Interogarile de tip Select nu permit actualizarea datelor selectate, ci doar vizualizarea lor. De obicei acest tip de interogare constituie o sursa de date pentru un raport sau formular.
Interogari de tip Crosstab pentru sintetizarea datelor din unul sau mai multe tabele ca foaie de calcul (asemanator cu foile de calcul Excel).
Interogari de tip Action pentru crearea unor noi tabele, sau pentru modificarea datelor dintr-un tabel existent. Exista urmatoarele categorii de interogari de actiune:
Interogari de tip Make Table care permit crearea de noi tabele prin extragerea informatiilor din tabelele existente in baza de date;
Interogari de tip Update care permit actualizarea (modificarea) datelor din tabelele existente fara a crea tabele noi sau inregistrari noi;
Interogari de tip Append care permit adaugarea de noi inregistrari intr-o tabela existenta
Interogari de tip Delete care permit stergerea unor inregistrari dintr-o tabela existenta functie de criteriile introduse de utilizator.
Interogarile de tip Parameter care folosesc aceeasi interogare de mai multe ori cu parametrii diferiti.
Operatii privind un obiect de tip interogare
Operatiile privind obiectele de tip cerere se refera la crearea, utilizarea (activarea interogarii si afisarea datelor) si respectiv modificarea acestora.
2.1.1.4 Despre Obiecte de tip Module si VBA
Modulele din Access sunt obiecte ale bazei de date care permit scrierea de rutine in limbajul Visual Basic pentru Access (VBA). In cadrul modulelor codul sursa este organizat in proceduri si functii, In general un modul are urmatoarea structura:
Declaratii
Procedura sau functie 1
Procedura sau functie n
Zona de declaratii este rezervata declararii variabilelor si constantelor accesibile pentru toate procedurile si functiile componente ale modulului si una sau mai multe proceduri sau functii.
Dupa apartenenta lor, modulele se pot grupa in urmatoarele categorii:
module globale sau standard - module ce constituie obiecte distincte in baza de date. Ele incluzand in zona de declaratii variabile si constante, precum si proceduri sau functii utilizate sau utilizabile de catre orice componenta a aplicatiei.
module atasate - module create automat la generarea de formulare sau rapoarte si atasate acestora. Toate declaratiile, procedurile si functiile asociate acestor module sunt recunoscute numai in cadrul lor. Procedurile pot fi de tip eveniment sau generale;
module clasa - cuprind de obicei proceduri si functii pentru crearea de obiecte noi.
Procedurile si/sau functiile pot fi asamblate in module in functie de cerintele programatorului. Altfel spus, o procedura si/sau o functie o data definita poate fi reapelabila din orice obiect al bazei de dale (care permite acest lucru), cu exceptia cazului in care au fost declarate Private.
Fig.2.4 Prezentare module
1. Editarea modulelor VBA
Pentru lucrul cu module se selecteaza eticheta din fereastra de baza Acces; In cazul in care baza de date are deja create niste obiecte de tip modul, in fereastra. Pentru a crea un obiect modul nou se aleg comanda Module din meniul Insert sau se activeaza butonul. New. Ca efect va fi afisat pe ecran fereastra de editare a modulelor.
Fig.2.5 Modul
Instructiunile in fereastra Module se scriu in limbajul VBA (Visual Basic Access), care este o varianta a limbajului Visual Basic dedicata componentei Access.
Din punct de vedere sintactic, scrierea rutinelor VBA se poate face cu caractere minuscul sau majuscule. Atat cuvintele cheie cat si cele utilizator sunt automat transcrise in forma in care au fost declarate, daca sunt scrise corect. Editorul are, de asemenea, facilitati de colorare a cuvintelor cheie, declaratiilor utilizator, frazelor eronate, comentariilor. Comentariile se introduc in VBA precedate de caracterul ''' (apostrof), care permite in acelasi timp autodocumentarea rutinelor si nu afecteaza cu nimic secventa de instructiunilor unde apar, ci este numai un text explicativ.
Pe rand se poate scrie de regula, o singura instructiune; daca se doreste continuarea ei pe mai multe randuri atunci se va utiliza liniuta de subliniere pentru a continua instructiunea pe randul urmator. Exista posibilitatea scrierii mai multor instructiuni pe acelasi rand, caz in care este necesara folosirea delimitatorului':'
2.2 Introducere in VBA
VBA este un mediu integrat de dezvoltare (Integrated Development Environment - IDE);
utilizeaza un limbaj deosebit de simplu pentru dezvoltarea aplicatiilor;
Conceptele de baza ale programarii in VBA sunt obiectul, proprietatea, metoda, evenimentul
Prin intermediul desfasuratorului de obiecte, sistemul VBA evidentiaza proprietatile si metodele posibile pentru un numit obiect. Afisarea este contextuala, adica are loc in momentul scrierii in VBA a elementelor care caracterizeaza un anumit context.
VBA afiseaza intr-un anumit context numai elementele (proprietati, metode, obiecte, tipuri de dale etc.) caracteristice acestuia. Utilizatorul trebuie doar sa aleaga elementul dorit, nemaifiind nevoie sa ii scrie denumirea completa de la tastatura, acest lucru permitand scrierea rapida de proceduri si functii. El nu trebuie sa retina cuvinte cheie (proprietati, metode, obiecte, tipuri de date etc.) asa cum sunt definite, unele dintre ele fiind destul de lungi, ci doar sa stie de existenta acestora.
Pe langa proprietati si metode, flecare tip de obiect are un numar prestabilit de evenimente posibile, dar cel putin unul.
Evenimentul este declansat de o actiune. Actiunea poate surveni din exteriorul sistemului (declansata de catre operator) sau declansata prin program. VBA combina deci elemente ale programarii orientate obiect cu elemente ale programarii orientate pe evenimente.
2.2.1 Elementele Limbajului VBA
Ca majoritatea limbajelor exista si aici tipuri de date. VBA accepta doua categorii de tipuri de date:
-standard (predefinite)
-utilizator
Tip de date |
Caracteristici |
Double |
Numar memorat pe 64 biti, virgula mobila, dubla precizie. Valori posibile: de la -1,797*10308 pana la +1,797*10308 |
Single |
Numar memorat pe 32 biti, virgula mobila, simpla precizie. Valori posibile; de la -3,4*1038 pana la +3,4*1038. |
Currency |
Numar memorat pe 64 biti. Sunt memorate 15 caractere la stanga virgulei si 4 caractere la dreapta virgulei. Valori posibile: -922337203685477,5808 pana la 922337203685477,5807 |
Byte |
Numar intreg pe 8 biti. Valori posibile: 0-255 |
Integer |
Numar intreg pe 16 biti. Valori posibile; -32768 pana la 32767 |
Long |
Numar intreg pe 32 biti. Valori posibile: -2147483648 pana la 2147483647 |
Boolean |
Poate contine valoarea logica True (adevarat -1) sau False (fals O) |
Date |
Poate contine dale calendaristice si timp. Se utilizeaza intre # |
String |
Sir de caractere. Poate contine maximum 2 la puterea 31caractere. Se utilizeaza intre ''. |
Variant |
Tip de date generic. O asemenea variabila se poate utiliza pentru orice tip de date. Practic toate variabilele utilizate pot fi declarate de tip Variant. Este recomandat totusi ca sa specificati tipul variabilei in momentul declararii pentru a nu fi create confuzii. |
Object |
Tip de date care refera un obiect. Pentru a asocia un obiect propriu-zis unei asemenea variabile trebuie sa se utilizeze si instructiunea Set (Vezi exemplele de la acest capitol) |
Pe langa tipurile de date predefinite, oferite de VBA, utilizatorul isi poate crea propriile tipuri de date. Acestea pot grupa intr-un singur tip de date mai multe tipuri de date diferite, care la randul lor pot fi predefinite si/sau definite de utilizator s.a.m.d.
Declararea unui nou tip de date se poate face numai la inceputul unui modul.
2. Variabilele. Declarare si utilizare.
Stim ca orice variabila se caracterizeaza prin numele de identificare, tipul de date asociat variabilei si domeniul de vizibilitate unde poate fi folosita variabila.
Domeniul lor de vizibilitate tine din momentul declararii in cadrul unei proceduri si/sau functii si pana la sfarsitul acesteia. Intr-o procedura si/sau functie o variabila poate fi declarata in orice loc.
Se pot face conversii implicite de date intre variabile de tip diferit cu conditia ca acestea sa fie suportate in acel moment. Variabilele VBA pot fi active:
- intr-o procedura sau functie;
- intr-un modul;
- in toate modulele (publice).
Constantele. Declarare si utilizare.
Constantele sunt nume semnificative care tin locul unor numere sau siruri de caractere care nu-si pot modifica valoarea pe parcursul executiei procedurii. Exista doua tipuri de constante si anume:
constante intrinseci sau definite de sistem care sunt furnizate de aplicatii sau controale;
constante simbolice sau definite de utilizator.
Numai constantele simbolice se declara si aceasta se realizeaza prin intermediul instructiunii Const conform sintaxei:
4. Operatorii si functii
De regula, o procedura, dupa ce primeste datele necesare, trece la prelucrarea lor. Comenzile speciale pentru operatiile cu datele din program se numesc operatori.
Operatorii acceptati de VBA sunt de trei categorii:
- matematici (^,- , *, / , Mod, +, &);
- de comparare (=, <>, <, >, <=, >=, Like, Is);
- logici (Not, And, Or, Xor. Eqv. Imp).
O functie este o secventa de instructiuni VBA care realizeaza un calcul si care returneaza intotdeauna o valoare. Deoarece functia returneaza o valoare, se poate considera ca ea este egala cu valoarea pe care o returneaza si, ca urmare poate fi utilizata in expresii mai complicate.
Functiile pot fi:
predefinite (standard)
definite de utilizator
Functiile predefinite (standard)
SGBD ACCESS dispune de un numar mare de functii intrinseci. Acestea pot fi utilizate ca atare, sau ca operanzi in diferite expresii. Dupa natura problemelor pentru care ofera solutii, functiile predefinite se pot grupa in mai multe categorii si anume:
- Functii pentru preluarea si afisarea datelor.
- Functii matematice
- Functii asupra sirurilor de caractere
- Functii pentru data si ora.
- Functii pentru conversii
- Functii pentru operatii financiare sau functii financiare
- Functii pentru calcule globale
- Functii pentru lucrul cu fisiere
[Private|Public] Function nume_functie [([ByRef|ByVal] param_1 as tip_date ,.)] [as tip_date]
[instructiuni]
[nume_functie = expresie]
[Exit Function]
[instructiuni]
[nune_functie = expresie]
End Function
Sintaxa: Exit Function - permite iesirea fortata dintr-o functie;
nume_functie = expresie, permite asocierea unui rezultat numelui functiei.
Acest rezultat va fi returnat in momentul terminarii executiei functiei. Pentru a nu genera erori, daca aceasta secventa nu este la sfarsitul functiei, dupa ea va trebui scris Exit Function.
Apelul unei functii se poate face astfel:
Variabila = nume_functie[(valoare_param_1, valoare_param_2..)]
5. Transmiterea argumentelor
Apelarea unor proceduri implica de regula transmiterea de valori prin intermediul unor variabile (parametri actuali, care pot diferi ca nume de parametri formali). Transmiterea argumentelor se poate face prin valoare si prin referinta.
Transmiterea prin valoare genereaza o copie a variabilelor utilizate ca argumente, astfel incat modificarile survenite asupra variabilei in procedura sa afecteze numai copia acesteia si nu variabila originala. Precizarea faptului ca transmiterea argumentelor prin valoare se face utilizand clauza ByVal inaintea argumentului.
Exemplu:
Function Impozit (ByVal sal_brut as Long)
Instructiuni
End Sub
Transmiterea argumentelor prin referinta este implicita. Accesul se face direct la variabila din memorie utilizata ca argument si in consecinta aceasta sufera modificarile ce survin in timpul executiei procedurii careia ii este transmisa.
6. Proceduri
O procedura reprezinta o serie de instructiuni executate ca un tot unitar si care realizeaza sarcini repetabile sau partajabile. Procedurile, fara modificari sau cu putine modificari, pot fi folosite in cadrul altor programe.
In VBA exista urmatoarele tipuri de proceduri :
proceduri Sub (subrutina) care pot fi proceduri eveniment sau proceduri generale;
proceduri Function (denumite de obicei functii si care au fost prezentate anterior );
proceduri tip proprietate.
Procedurile Sub
O procedura subrutina este o unitate de cod care executa o anumita sarcina ca raspuns la un eveniment (cazul procedurilor eveniment) sau la apelarea explicita (cazul procedurilor generale).
Procedurile generale cuprind, de regula, secvente de cod destinate a trata sau rezolva anumite probleme de interes general. De aceea, acest tip de procedura este de regula apelat din procedurile eveniment.
Procedurile eveniment sunt secvente de cod atasate evenimentelor ce pot interveni pe suprafata unui obiect. Ele sunt lansate in executie in mod automat ca reactie la aparitia evenimentului la care sunt atasate. Faptul ca procedura este strict legata de un obiect si un eveniment este relevat chiar in sintaxa de definire a procedurilor eveniment.
Sintaxa de definire a procedurilor generale:
[Private/Public][Static]Sub nume_procedura(argumente)
instructiuni
Unde:
private - defineste faptul ca procedura poate fi apelata doar in cadrul modulului atasat din care face parte.
public - atribuie procedurii caracterul de generalitate, ceea ce inseamna ca poate fi apelata si din alte module ale aplicatiei
static - declara toate variabilele definite in cadrul acesteia ca fiind statice (ele isi conserva valorile stocate in zonele de memorie rezervate lor si dupa executia procedurii).
Apelarea unei proceduri Sub depinde de locul unde a fost definita si de modul in care este utilizata in cadrul aplicatiei.
. daca apelul este in cadrul aceluiasi modul sintaxa folosita este:
Call nume_procedura(argumente)
sau
Nume_procedura argumente
2.3 Obiecte si colectii Access
MS Access pune la dispozitia programatorului o serie de obiecte si colectii predefinite, menite sa usureze munca acestuia in dezvoltarea de aplicatii. Colectiile contin obiecte cu aceleasi caracteristici. Obiectele si colectiile Access sunt organizate intr-o structura ierarhica de clase. Cele mai importante sunt:
Colectii tip Access:
Colectia |
Descriere |
|
Forms |
Contine toate formularele deschise |
|
Reports |
Contine toate rapoartele deschise |
|
Modules |
Contine toate modulele standard sau class deschise |
|
Controls |
Contine toate controalele din formularele sau rapoartele deschise la un moment dat |
|
Properties |
Contine toate proprietatile obiectelor de tip Form, Report sau Control deschise la un moment dat |
|
References |
Contine toate referintele active catre alte aplicatii sau librarii |
|
DataAccessPages |
Contine toate DataAccessPage ce sunt deschise intr-o baza de date Access(.mdb), sau proiect Microsoft Access(.adp) |
|
AIIForms |
Contine informatii despre formularele salvate in baza de date |
|
AIIReports |
Contine informatii despre rapoartele salvate in baza de date |
|
AIIDataAccessPages |
Contine informatii despre obiectele de tip DataAccessPage salvate in baza de date |
|
AIIMacros |
Contine informatii despre toate macrourile salvate in baza de date |
|
AIIModules |
Contine informatii despre toate modulele salvate in baza de date |
|
AIITables |
Contine informatii despre toate tabelele salvate in baza de date |
|
AIIQueries |
Contine informatii despre toate interogarile salvate in baza de date |
Proprietati:
. Application: permite accesarea obiectului Application (aceasta proprietate nu este prezenta la colectia References).
. Count: determina numarul de obiecte existente in colectie.
. Item: returneaza un membru al colectiei specificat prin index sau pozitia in cadrul colectiei.
Sintaxa: Obiect.Item (index)
Unde:
Obiect -este unul din colectiile enumerate mai sus.
Index- este o expresie numerica (un numar de la 0 la Count-1) sau o expresie text.
Parent: refera parintele controlului respectiv.
Metode:
. AddFromFile (pentru colectia References): creeaza o referinta la o librarie de tipuri (.olb si .tib)
Sintaxa: Set Obiect = References.AddFromFile (filename)
Unde:
Obiect - un obiect Reference.
Filename - numele fisierului
. Remove (pentru colectiile References si AccessObjectProperties): permite stergerea unui obiect din colectie.
Sintaxa: object.Remove Item
. ltem (pentru colectia References).
Obiecte tip Access:
Obiectul Application
Cand creezi o baza de data folosind Microsoft Access, se spune ca s-a creat o aplicatie. Pentru a identifica baza de date pe care o folositi sau care este deschisa, VBA pune la dispozitie obiectul APPLICATION. Acest obiect contine toate obiectele create sau folosite si care apartin bazei de date cu, care se lucreaza . Daca se doreste referirea in cod la baza de date curenta, puteti direct folosi aobiectul Application. Daca doriti sa va referiti la o baza de date alta decat cea deschisa, prima data trebuie sa se declare o variabila de tip Application. In MS Access, baza de date deschisa e identificata ca: CurrentDB object. Acest obiect este copilul obiectului Application. Obiectele ce apartin bazei de date sunt stocate intr-o colectie numita CurrentData, care este o proprietate a obiectului Application. Pentru a accesa obiectul CurrentData se va proceda in felul urmator:
Application.CurrentData
Daca se doreste referirea la un astfel de obiect din afara MS Access atunci trebuie calificat cu obiectul Access. De exemplu, dintr-o applicatie, precum Excel, pentru a construi o variabila care face referire la baza de date Access declaratia va arata in felul urmator:
Dim aplicatie_noua As Access.Application
Pentru a accesa din cod actiunile ce pot sa aiba loc se poate folosi obiectul DoCmd. Acest obiect are urmatoarele metode:
AddMenu |
ApplyFilter |
Beep |
CopyDatabaseFile |
CopyObject |
DeleteObject |
FindNext |
FindRecord |
GoToControl |
Hourglass |
Maximize |
Minimize |
OpenDiagram |
OpenForm |
OpenFunction |
OpenReport |
OpenStoredProcedure |
OpenTable |
PrintOut |
Quit |
Rename |
Restore |
RunCommand |
RunMacro |
SelectObject |
SendObject |
SetMenuItem |
ShowToolbar |
TransferDatabase |
TransferSpreadsheet |
CancelEvent |
Close | |
DoMenuItem |
Echo | |
GoToPage |
GoToRecord | |
MoveSize |
OpenDataAccessPage | |
OpenModule |
OpenQuery | |
OpenView |
OutputTo | |
RepaintObject |
Requery | |
RunSQL |
Save | |
SetWarnings |
ShowAllRecords | |
TransferSQLDatabase |
TransferText |
Librarii Aditionale:
MS Access vine cu cateva colectii de obiecte ce sunt folosite de obiectele native ale Accessului. Dar daca se doreste folosirea obiectelor ce nu sunt in aceasta colectie, trebuie sa le includeti in libraria aplicatiei ce contine respectivele obiecte.De exemplu daca doriti sa lucrari cu fisiere MS Excel trebuie sa includeti referinte catre librarii ce contin descrieri a obiectelor Excel. Se poate face asta din fereasta editorului VBA selectand Tools din Meniu si apoi References:
Fig.2.6 References
Tickuind o librarie , se va include in aplicatie si se pot folosi obiectele sale. Se pot include librariile atat pentru MS Excel cat si pentru MS Otlook
Proprietati:
Application: folosirea acestei proprietati permite accesul la proprietatile si metodele obiectelor continute de acest obiect.
CodeContextObject: folosirea acestei proprietati determina obiectul in care este executat macroul sau codul VBA.
Code Data: permite accesul la obiectul CodeData. Cu ajutorul acestei proprietati, se poate face referire la colectiile AIITables, AllQueries, AllViews, AllStoredProcedures, AllDatabaseDiagrams.
CodeProject: permite accesul la obiectul CodeProject. Cu ajutorul acestei proprietati, se poate face referire la colectiile AllForms, AllReports, AllMacros, AllModules, AllDataAccessPages, AccessObjectProperties.
CurrentObjectType: determina tipul obiectului activ din baza de date.
Setare |
Descriere |
AcTable(0) |
Obiectul activ este o tabela. |
AcQuery(1) |
Obiectul activ este o interogare. |
AcForm(2) |
Obiectul activ este formular. |
AcReport(3) |
Obiectul activ este un raport. |
AcMacro(4) |
Obiectul activ este un macro. |
AcModule(5) |
Obiectul activ este un modul. |
acDataAccessPage (6) |
Obiectul activ este un obiect DAP |
AcDiagram (8) |
Obiectul activ este o diagrama database |
acStoredProcedure (9) |
Obiectul activ este un obiect de tip stored procedure |
CurrentObjectName: determina numele obiectului activ.
MenuBar: specifica meniul folosit intr-o baza de date Access (.mdb), proiect Access (.adp), intr-un formular sau raport.
UserControl: determina daca aplicatia Microsoft Access este pornita de un User sau de o alta aplicatie.
Visible: permit ca un obiect form, report, DAP(DataAccessPage) sau un control sa fie vizibil sau nu.
Metode:
AccessError: retumeaza o expresie text, asociata cu o eroarea Microsoft Access sau cu o eroare ADO.
Comunicarea intre aplicatiile Office 2000
Pachetul Office 2000 produs de Microsoft s-a dorit a fi un instrument util si foarte performant
cu ajutorul caruia sa se poata realiza un numar mare de sarcini in cadrul biroului unei firme
sau chiar acasa. Cresterea popularitatii produsului Office se datoreaza, pe langa gradul sporit
de complexitate, facilitatii sale deosebite de a permite diferitelor aplicatii ce-l compun sa
comunice intre ele. Astfel, date ce se gasesc intr-o aplicatie Access pot fi transferate
(exportate) intr-un document Word in vederea realizarii unui document de sinteza. Odata cu
lansarea sistemului de operare Windows '95 a fost introdusa o noua facilitate Object Linking
and Embedding (introducerea si legarea obiectului) sau pe scurt OLE. OLE este o metoda de
transfer a informatiei intre diferite aplicatii Windows sub forma de obiecte. Metoda OLE
ofera un mare avantaj aplicatiilor realizate in ACCESS, putand fi create baze de date de tip
multimedia in care pot fi stocate fisiere audio (WAV, MID), fotografii si desene (BMP, TIF),
animatie si filme (AVI).
Access introduce 3 facilitati:
1. DDE - Dynamic Data Exchange - schimbul dinamic de date
2. ActiveX Objects - obiecte ActiveX
3. ActiveX Custom Controls - controale personalizate ActiveX
1) DDE - permite executarea unor functii, precum si transmiterea de date intre Access si orice
alta aplicatie Windows care suporta facilitatea DDE.
2) ActiveX - permite crearea unor anumite legaturi intre obiecte, precum si includerea lor in
cadrul bazelor de date Access (fotografii, grafice, foi de calcul.). Access poate lucra cu acele
sisteme de gestiune a bazelor de date care sunt compatibile cu standardul Open Database
Conectivity (ODBC), incluzand urmatoarele sisteme:
1. Microsoft SQL Server
2. Oracle
3. DB2
4. Ingres
Exportul de date:
Pentru a efectua un export de date dintr-o tabela vom folosi comanda File, Export: si se va
alege apoi tipul de fisier catre care se efectueaza exportul de date din tabela (.rtf, .xls, .htm).
Lucrul cu Ms Excel
Daca se doreste deschiderea unui fisier excel si modificarea datelor din acel fisier se poate folosi urmatorul cod:
Dim ExcelSheet as Object
Set ExcelSheet.Application
With excelsheet.application
.Visible=True
.Cells(1,1)="Test de excel"
.ActiveWorkbook.SaveAs "Excel test.xls"
.Quit
End With
Set Excelsheet=Nothing
2. Lucrul cu obiecte DAO (data access object)
Este o librarie publicata de Microsoft folosita pentru a creea si administra baze de date.
Biblioteca de tipuri Microsoft DAO ofera o cale de control a unei baze de date din orice aplicatie care suporta Visual Basic for Applications. Anumite obiecte DAO reprezinta structura bazei de date iar altele reprezinta datele insasi. Prin intermediul obiectelor DAO se pot crea si gestiona baze de date locale sau la distanta intr-o multitudine de formate, se poate lucra cu datele lor.
Obiectele DAO se utilizeaza pentru a lucra in mod programatic cu o baza de date. Principalele actiuni privesc:
crearea unei baze de date, modificarea structurii tabelelor, interogarilor, indexarilor si relatiilor,
regasirea, adaugarea, stergerea sau modificarea datelor din baza,
implementarea securitatii datelor,
lucrul cu date in diferite formate de fisiere si legarea tabelelor din alte baze de date la baza curenta,
conectarea la baze de date pe servere la distanta si construirea de aplicatii client/server.
Observatie. Pentru a utiliza obiectele DAO, trebuie ca la instalarea pachetului Microsoft Office sa se selecteze si boxa de control Data Access.
Obiectele DAO sunt organizate intr-o structura ierarhica. Obiectul DBEngine este de nivelul cel mai inalt si contine toate celelalte obiecte si colectii ale ierarhiei DAO. Urmatorul tabel contine o descriere sumara a obiectelor.
Obiect |
Descriere |
Connection |
Conectarea prin retea la o baza de date Open Database Connectivity (ODBC). |
Container |
Informatii de securitate pentru diferite tipuri de obiecte ale bazei de date. |
Database |
Baza de date deschisa. |
DBEngine |
Obiectul cel mai de sus al ierarhiei. |
Document |
Informatia de securitate pentru obiecte individuale din baza de date. |
Error |
Informatii de eroare privind accesul la date. |
Field |
Camp in obiecte TableDef, QueryDef, Recordset, Index, Relation. |
Group |
Contul grupului in baza curenta. |
Index |
Indexul tabelei. |
Parameter |
Parametru de interogare. |
Property |
Proprietate a unui obiect. |
QueryDef |
Definitia unei interogari salvate in baza de date. |
Recordset |
Multime de inregistrari definite de o tabela sau de o interogare. |
Relation |
Legatura (relatia) dintre doua campuri de tabel sau interogari. |
TableDef |
Definitia unei tabele salvate in baza de date |
User |
Contul utilizatorului in grupul de lucru curent. |
Workspace |
Sesiunea DAO activa. |
3. Proiectarea bazelor de date in Microsoft Access
Desi se pot crea baze de date prin VB cu DAO, uneori, pentru baze de date cu oarecare grad de permanenta, se poate alege varianta de a proiecta baza de date in mediul Access destinat pentru asemenea operatiuni si deschiderea bazei cu DAO din alta aplicatie care suporta Visual Basic.
La crearea unei baze de date in Access, urmatoarele lucruri sunt de retinut.
Cand se deschide un fisier .mdb creat in Access din alta aplicatie, nu se poate lucra cu forme, rapoarte, macro-uri sau module Access. Formele si rapoartele trebuiesc proiectate, deasemenea si codul VB, in aplicatia unde se lucreaza.
Daca se scrie cod pentru procesarea unei baze de date in Access, codul respectiv nu se va executa in mod necesar si la copierea in modulele altei aplicatii. Pentru executie trebuie, in acest caz, sa se elimine/inlocuiasca toate entitatile specifice Access-ului (obiecte, metode, proprietati sau functii).
In Access se utilizeaza functia CurrentDb pentru a returna o referinta la baza de date curent deschisa in fereastra Access. Se poate utiliza DAO pentru a lucra cu aceasta baza. Daca se copie acest cod in alta aplicatie care are Visual Basic, se va modifica textul sursa incat sa se utilizeze metoda OpenDatabase a obiectului Workspace.
Microsoft Access creeaza proprietati suplimentare ale obiectelor DAO. Atunci cand se formeaza o baza cu DAO in Visual Basic si aceasta baza este deschisa ulterior in microsoft Access, se pot observa si alte proprietati adaugate obiectelor. Aceste proprietati sunt si ele enumerate in colectia Properties a obiectului DAO.
Stabilirea unei referinte la biblioteca de obiecte DAO
Referinta se poate realiza in mod automat, de exemplu de catre Microsoft Access, sau manual prin succesiunea uzuala: Visual Basic Editor - meniul Tools - References - selectare Microsoft DAO 3.5 Object Library. Dupa stabilirea referintei se pot vedea obiectele DAO in Object Browser selectand DAO in lista Project/Library.
Fig.2.8 Referinta DAO
Se poate utiliza DAO pentru lucrul cu diferite formate de baze de date. Exista trei mari categorii de formate de baze de date accesibile prin DAO.
- Prima categorie este caracterizata de formatul Microsoft Jet. Se poate utiliza DAO cu toate bazele de date create cu Microsoft Jet, incluzand cele create in Microsoft Access, Microsoft Visual Basic, Microsoft Visual C++ si Microsoft Excel.
- A doua categorie este caracterizata de formatul ISAM instalabil. Un driver ISAM care se poate instala este un driver care ofera acces la formate de baze de date externe prin DAO si Microsoft Jet. La instalarea aplicatiei se poate cere instalarea oricarui driver pentru formatele:
Microsoft FoxPro
dBase
Paradox
Microsoft Excel
Microsoft Exchange/Outlook
Lotus 1-2-3
Date tabelare in fisiere HTML
etc.
- A treia categorie de formate de baze de date accesibile prin DAO este sursa de date Open Database Connectivity (ODBC). Sursele de date ODBC, cum ar fi Microsoft SQL Server 4.2 si mai mari, necesita un driver ODBC. Adesea o sursa de baze ODBC este pe un server de retea, adica ODBC este util pentru dezvoltarea aplicatiilor client/server.
5. Microsoft ActiveX Data Objects (ADO)
Microsot a creat DAO pentru a pune la dispozitie o librarie de programare pentru MS Access.
Pentru a facilita altor medii, inclusiv cele care nu apartin Microsoft, pentru a creea si administra baze de date ce pot comunica cu MS Access, compania a creat o librarie numita ActiveX Data Objects , or ADO.
Pentru a evita anumite isuuri legate de securitate microsoft a creat o librarie aditionala numita Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX), care trebuie sa fie referita inainte de a fi folosita in cod.
6. Referentierea obiectelor Access prin cod Visual Basic
Programul Access foloseste o multime de obiecte specifice doar acestui program. In consecinta constructiile prin care se refera aceste obiecte nu sunt elemente sintactice ale limbajului Visual Basic. Chiar si programatorii experimentati in Visual Basic trebuie sa se familiarizeze cu modul in care se pot referi obiectele Access in secvente de cod.
a) Referinte la formulare si rapoarte deschise
Programul Access tine evidenta tuturor formularelor si rapoartelor deschise sub forma a doua colctii, denumite Forms si Reports. Se subliniaza ca aceste colectii se refera doar la formularele si rapoartele deschise in momentul respectiv, nu si la cele deja salvate. Pentru referirea la un formular sau un raport deschis se va utiliza urmatoarea sintaxa:
Forms![Nume Formular]
respectiv
Reports![Nume Raport]
Adica numele colectiei Forms sau Reports este urmat de operatorul semn de exclamare (cunoscut si sub denumirea de operator bang) si in continuare intre paranteze patrate se trece numele formularului sau a raportului. Includerea acestora intre parantesele patrate este obligatorie doar atunci cand numele contine si spatii sau alte caractere speciale. De exemplu, pentru a construi o referinta la formularul frmFamilie si la raportul rptVanzari se va utiliza secventa:
Dim f As Form
Dim r As Report
Set f= Forms!frmFamilia
Set r= Reports!rptVanzari
b) Referinte la proprietatile si metodele formularelor si a rapoartelor deschise
Obiectele Form si Report au asociate diverse proprietati si metode. Sintaxa de referire la proprietatile acestor obiecte este urmatoarea:
Forms![NumeFormular].NumeProprietate
respectiv
Reports![NumeRaport].NumeProprietate
In cazul formularelor deschise in modul de afisare de tip formular, pentru citirea sau modificarea unei proprietati a formularului se poate utiliza si o referinta simplificata, folosind autoidentificatorul Me.
c) Referirea la controalele si proprietatile controalelor asezate pe un formular sau un raport
Pentru referirea unui control asezat pe un formular sau pe un raport se foloseste urmatoarea sintaxa generala:
Forms![NumeFormular]![NumeControl]
Pentru referirea unei proprietati a unui control asezat pe un formular sau pe un raport deschis se va utiliza urmatoarea sintaxa:
Forms![NumeFormular]![NumeControl].[NumeProprietate]
7. Asocierea de proceduri-eveniment formularelor, rapoartelor si controalelor
Aplicatiile realizate sub sistemul de operare Windows sunt executate prin intermediul evenimentelor. Astfel, de exemplu, efectuarea unui clic cu mouse-ul pe un buton de comanda sau trecerea de la un articol la altul al unui formular sunt evenimente.
Declansarea unui eveniment are ca efect executarea unui bloc de instructiuni din codul de program al aplicatiei . Blocul de instructiuni corespunzator unui eveniment al uni formular, numit procedura-eveniment, este desemnat printr-o construcite de forma:
Private sub Form_NumeEveniment(parametrul1,parametrul2,..)
a) Atasarea unei proceduri unui eveniment
Pentru a atasa o procedura unui eveniment corespunzator unui obiect (un formular, raport ori un control) se vor parcurge urmatoarele etape:
Se va deschide obiectul bazei de date in modul de proiectare (Design View) si se executa clic dreapta pe control. Din meniul contextual se va selecta optiunea Properties pentru a afisa grila de proprietati aferenta acestuia si se va alege sectiunea Event. Figura de mai jos ilustreaza modul de atasare a unei proceduri evenimentului OnClick pentru un buton de comanda.
Dupa alegerea evenimentului dorit din lista disponibila (in acest caz evenimentul OnClick) se va apasa butonul , actiune ce va conduce la afisarea casetei Choose Builder (figura alaturata).
Fig.2.3 Choose Builder
Se va opta pentru varianta Choose Builder si se va apasa butonul OK.
Ca urmare se va deschide fereastra editorului VBA ce va contine numele procedurii eveniment nou create urmand ca programatorul sa elaboreze procedura intre declaratiile Sub NumeProceduraEveniment End Sub inserate automat in momentul selectarii evenimentului
Dupa redactarea instructiunilor se va selecta din meniul File al editorului VBA optiunea Close&Return to Microsoft Access. In caseta de proprietati a obiectului pentru care s-au realizat operatiile anterioare va figura in dreptul evenimentului textul [Event Procedure] semnaland existenta unei proceduri eveniment. Este necesar sa remarcam ca numele procedurilor eveniment sunt intotdeauna formate din numele obiectului la care se adauga ca sufix numele evenimentului, la care raspunde (in cazul exemplului anterior procedura se numeste ButonExemplu_Click).
b). Tipuri de evenimente
Realizarea unei clasificari exhaustive a evenimentelor este extrem de dificila datorita complexitatii acestora si a faptului ca in multe cazuri un eveniment este disponibil pentru o gama larga de obiecte. Astfel o clasificare in functie de obiectele la care se refera (formulare, rapoarte, controale, sectiuni ale formularelor si rapoartelor) nu este utila, intrucat foarte multe dintre evenimente sunt comune.
Abordand evenimentele Access prin prisma modului de declansare se pot identifica doua categorii:
Evenimente declansate de utilizator. In aceasta categorie sunt incluse evenimentele ce raspund actiunilor efectuate cu mouse-ul (On Click, On Mouse Over), cele declansate de la tastatura (On Key Press, On Key Down) si toate celelalte evenimente survenite ca urmare a interactiunii directe cu utilizatorul: deschiderea ori inchiderea formularelor sau rapoartelor (On Open, On Close), actualizarea datelor (On Change, After Update, etc)
Evenimente declansate de program. Sunt evenimente care survin fara interventia directa si intentionata a utilizatorului. Fiind dictate de executia programului. In aceasta categorie se pot include evenimente precum On Error (survine in cazul aparitiei unei erori in derularea aplicatiei). evenimentul On Retreat (se produce in momentul in care Access revine la o sectiune anterioara a unui raport in timpul formatarii acestuia) sau On Timer care este declansat de ceasul intern al sistemului in momentul scurgerii unui interval de timp.
Privite prin prisma operatiilor in timpul carora sunt declansate evenimentele pot fi grupate in urmatoarele categorii:
Evenimente aferente operatiilor cu ferestre;
Evenimente aferente schimbarii focus-ului;
Evenimente aferente editarii datelor;
Evenimente ce survin in timpul operatiilor de tiparire;
Evenimente produse de la tastatura;
Evenimente aferente operatiilor de filtrare;
Evenimente aferente actiunilor efectuate cu mouse-ul;
SAP Scripting este un script ce face posibila legatura intre sistemul SAP si aplicatiile Office utilizand limbajul VBA.
Cu Sap GUI 6.20, SAP introduce un "scripting API": un obiect ce reprezinta o fereastra cu controalele sale la rulare. In mediul Windows API poate fi folosit din orice aplicatie ce suporta interfata de obiecte COM , in special din VBScript si limbajul JAVAScript . Acest model obiect permite sa se automatizeze toate actiunile utilizatorilor.
Cerinte:
SAP GUI 6.20 si variantele ulterioare
GuiXT 2004 Q2 2 si variantele ulterioare
Pnetru SAP kernel 3.1I-6.10: e necesar kernel patch
Pentru SAP kernel 6.20 si variantele ulterioare
E necesar activarea supportului scripting in sistemul SAP, si in SAP GUI options
Nu e posibil in ITS environment (SAP GUI for HTML)
SAP GUI (>6.20) scripting API: este un model de obiect ce reprezinta Sap Gui.
Inregistrarea unui script:
SAP GUI contine un mod de recordare ce poate genera un VBScript direct din actiunile noastre.
Fig.2.4 Inregistrarea unui script
Rezultatul ar fi:
If Not
IsObject(application) Then
Set SapGuiAuto = GetObject('SAPGUI')
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, 'on'
WScript.ConnectObject application, 'on'
End If
session.findById('wnd[0]').resizeWorkingPane 139,15,false
session.findById('wnd[0]/usr/cntlGRID1/shellcont/shell').currentCellRow
= 2
session.findById('wnd[0]/usr/cntlGRID1/shellcont/shell').selectedRows
= '2'
Script Development Tools
Aceasta optiune ajuta la identificarea obiectelor scriptabile din SAP GUI.
Ierarhia SAP GUI
Radacina- GuiApplication=procesul unde activitatea SAP are loc
GuiConnection= calculatorul-interactiunea server (logarea la sap, OpenConnection, openConnectionbyConnectionString)
GuiSession= specifice taskurilor ce trebuie sa fie executate
GuiMainWindow - e punctul de inceput de interactiune cu utilizatorul
SAP GUI modelul obiect
Basic Interfaces
Basic Interfaces sunt clase de proprietati si metode ce permit lucrul cu obiecte fara sa se stie tipul lor exact.
Application/Connection/Session
Function OpenConnection
Set AppSAP = CreateObject("SAPGUI.scriptingCtrl.1")
Set ConSAP = AppSAP.OpenConnection (CStr("F7P EU TS Prod"))
OpenConnection (descriptionStr, sync As Boolean, raise As boolean)
Function StartTransaction (EndTransaction)
session.startTransaction("zmr0')
Function getVKeyDescription (vKey As Long) As String
session.getVkeyDescription (3) <> sendVKey 0
Buttons & CheckBox
Declararea Functiilor
Logare la
SAP.Functions
Dim sapConn As
Object ' Declararea variant
Set sapConn = CreateObject('SAP.Functions') 'Creare obiect ActiveX
If
sapConn.Connection.Logon(0, False) <> True Then 'Try Logon
msgbox 'Cannot Log on to SAP'
end if
'Define function
Dim objRfcFunc As Object
Set objRfcFunc = sapConn.Add('RFC_READ_TABLE')
Capitolul 3
Descrierea Proiectului
Proiectul isi propune realizarea unei baze de date in vederea automatizarii unor actiuni repetitive cum ar fi crearea de cereri de cotatii.
In urma studiului realizat asupra activitatilor companiei s-a observat ca, in general o persoana lucreaza cu un numar de cateva zeci de RFQ'uri (cereri de cotatii) pe zi. Cererile se fac prin sistemul SAP prin proceduri nu atat de dificile dar numeroase, migaloase, consumatoare de timp.
Aceasta aplicatie a fost realizata cu scopul de a reduce, la mai mult de jumatate, timpul petrecut in creearea de RFQ-uri, buyerul astfel putandu-si aloca timp si altor activitati si proiecte. In acelasi timp, va oferi si o baza de data ce va centraliza toate intrarile respective, comentariile adaugate, modalitatea de trimitere, catre cine si cand s-a trimis acel RFQ, oferindu-se astfel posibilitatea crearii oricaror tipuri de rapoarte sau grafice de evaluare. De retinut este faptul ca utilizatorii finali nu vor avea access la tabelele sau queriurilor accesului si nici la partea de cod a aplicatiei, asta pentru a se evita modificarile neintentionate si eventualele pierderi de date importante.
RFQ-Database tool, este o aplicatie realizata in MS Access 2002(XP), ce foloseste limbajul de programare VBA si SAP scripting.
3.1.1 Structura Bazei de Date
Baza de Date contine 12 tabele dintre care 6 sunt tabele linkate la fisiere Excel.
Fig.3.1 Tabelele
Acestea sunt:
v Tabela admin care este o tabela linkata la un fiser Excel unde utilizatorul aplicatiei isi va introduce datele de access la SAP
v Tabela dbo_RFQ - este tabela de backup ce nu se va sterge niciodata si care va retine toate datele introduse prin rularea aplicatiei (date introduse din Sap) , datele introduse de utilizator(comentariile) si datele ce apar in urma folosirii aplicatiei (datele de contact, data trimiterii unui RFQ, modalitate de trimitere, etc.)
v Tabela dbo_RFQ_Backup- este o tabela linkata unde utilizatorul poate vedea arhiva datelor.
v Materials- tabela linkata unde sunt introduse date de contact si denumirea furnizorilor in functie de numarul de material al unei comenzi
v PVL - tabela linkata unde sunt introduse date de contact si denumirea furnizorilor in functie de numarul de material al unei comenzi
v PVL_and_Assign este o rezultatul unui Make Table query si va contine date din doua tabele in functie de anumite criterii
v req_numbers - este o tabela care va fi folosita pentru a memora numerele de PR-uri (cereri)
v RFQ- tabela principala pe care se va lucra si pe care utilizatorul o va putea vizualiza print-un Form.
Fig.3.2 Campurile tabelei
RFQ table contine 57 de campuri dintre care majoritatea sunt de tipul text sau number, cateva de tipul date/time ,unul de tip yes/no(pentru a se permite selectarile) si 3 chei primare astfel incat sa nu poata fi introdusa de mai multe de o singura data o inregistrare cu acelasi numar de PR, acelasi numar de linie de PR si acelasi Vendor(Furnizor).
v RFQ_Deadline- tabela linkata unde se va introduce numarul de zile in care se doreste primirea unui raspuns la cererea de cotatie
v Sap_Box- este o tabela care va contine denumirile de boxuri unde SAP-ul se va loga
Fig.3.3 Boxuri Sap
v upl_Assign_Process- tabela unde aplicatia va introduce datele din EBAN , o tabela din SAP care contine toate PR-urile persoanei respective
v Varianta- este numele variantei utilizatorului pe care lucreaza acesta
Diferenta dintre tabelele Materials si PVL este ca in primul tabel vor introduce date buyerii ce lucreaza pe businessul "Storeroom" iar in a doua tabela vor introduce date cei ce lucreaza pe "Expense".
Storeroom se ocupa cu achizitii de produse precum piese ce sunt necesare fabricilor si care se uzeaza dupa un anumit numar de procese, materia prima ce intra in mod direct in productie etc.
Pe expense lucreaza persoanele care se ocupa de achizitia de traininguri , servicii sau produse ce intra in mod indirect in productie.
2. Queriurile
Aplicatia contine 18 queriuri dintre care:
3 de append
7 de update
4 de delete
3 de select
1 de "make table"
Fig.3.4 Queriurile
Adding_15_to_del_date_exp- este un query apelat cu scopul de a modifica data de livrare a produsului in cazul expensului cu : data curenta+deadline+15zile
Fig.3.5 Structura query "Adding_15_to_del_date_exp"
RFQ.Material, se refera la numarul de material din tabela RFQ. Daca acest field este Null inseamna ca achizitia va fi de expense, si se doreste ca data de livrare sa se calculeze dupa formula de mai sus iar daca fieldul nu este Null (storeroom) atunci data de livrare va ramane neschimbata.
Append for Bakcup Excel- dupa cum sugereaza si numele, aceasta interogatie va trimite intreaga arhiva continuta de dbo_RFQ intr-un fisier Excel
Append_to_dbo_RFQ - va introduce in tabela dbo_RFQ datele existente in tabela PVL_and_Assign
Append_to_local_RFQ- inregistrarile din dbo_RFQ sunt introduse in tabela locala ( cea pe care efectiv se va lucra) dar cu 2 conditii:
- Doc_Type sa fie diferit de inregistrarea "PR_to_Po"
- Si fieldul Closed sa fie Null
Checking_for_doubles- acest query va verifica tabelele upl_Assign_Process si dbo_RFQ, legatura dintre tabele fiind intre campurile PR si linia PR-ului (Req_Num, Req_Item) iar acolo unde va intalni inregistrari comune va trece in campul Doc_Type din upl_Assign_Process textul: "Double", evitandu-se astfel multiplicarile de date.
Fig.3.6 Structura query "Checking_for_doubles"
Set_PR_turned_to_PO- Este o interogare prin care se va trece textul "PR_to_PO" la campul Doc_Type din tabela dbo_RFQ. Acest lucru se intampla in momentul in care se ruleaza partea de download iar datele noi difera de datele existente in dbo_RFQ, inseamnand ca, acele PR-uri au fost deja convertite in PO-uri si nu mai sunt in scopul nostru.
Fig.3.7 Structura query "Set_PR_turned_to_PO"
Update_dbo_RFQ- este un query apelat de fiecare data cand se inchide formul utilizatorului prin care se va updata tabela arhiva cu noile modificari aduse inregistrarilor, cum ar fi: data de creare a RFQ-ului, comentariile buyerului, numele si datele de contact a requisitionerului( persoana care pe expense plaseaza comanda), numele si datele de contact a furnizorului, modalitatea si data de trimitere a RFQ-ului.
Fig.3.8 Structura query "Update_dbo_RFQ"
Aplicatia are 3 formuri si un subform. Cele 3 formuri sunt:
-Formul Main
-Formul End-User
-Formul Download Data
3.1. Formul Main (Meniul Principal)
Fig.3.9 Meniu Principal
Acest form contine doua butoane; primul buton este destinat in scopul admin, folosit pentru a rula aplicatia si a obtine date noi din sistemul SAP iar cel de-al doilea buton va deschide formul pe care utilizatorul va lucra cu acele date.
3.2 Download Data
Fig.3.10 Download Form
3.3 Download PR'S
Evenimentul acestui button va deschide SAP-ul in tranzactia ME57 (de cereri) si folosind numele variantei pe care utilizatorul a inregistrat-o anterior intr-una din fisierele lincate la baza de date, va downloada PR-urile corespunzatoare intr-un fisier excel localizat pe c: sub numele de "me57.xls".
De aici va merge in tranzactia EBAN din SAP, va introduce ca date de intrare PR-urile din fisierul downloadat anterior (me57.xls) si va rezulta o tabela cu informatii suplimentare despre acele PR-uri necesare insa buyerului in creearea de cereri de cotatii. Tabela se va salva de asemenea intr-un fisier excel localizat pe C: cu denumirea "Eban.xls" din care programul va incepe sa citeasca datele si sa le introduca in tabela upl_Assign_Process din baza de date.
Pentru a se citi din exceluri s-a creat obiectul "Excel.Application" s-a deschis fisierul respectiv si folosind instructiunea SQL s-au introdus in tabelele din access informatiile necesare din celulele excelului.
3.4 Run Queries
Odata finalizata prima parte se poate utiliza acest buton care va actiona o serie de queriuri:
3.5 USER Database
Fig.3.11 User database
In acest form se vor gasi toate PR-urile ce au fost downloadate in pasii anteriori, 8 butoane de comanda prin care buyerii vor creea si trimite respectivele cereri de cotatii si alte cateva butoane de comanda si text boxuri prin care se va administra datele.
1.
Asa cum sugereaza numele, se va creea un RFQ care va fi trimis prin intermediul SAP-ului la numarul de fax pe care furnizoul il are inregistrat in acest sistem.
Rfq-ul va fi creat in tranzactia ME41, o tranzactie de creare de cereri de cotatii dupa care va fi transmis prin tranzactia me42 prin metoda de faxare.
Dupa ce RFQ-ul a fost creat si faxat se va primi mesajul "RFQ created and sent" iar campurile: , , vor avea inregistrari ca: data curenta, modalitatea de trimitere a RFQ-ului (in acest caz FAXED) si numarul de RFQ.
2.
Prin acest buton se va creea RFQ-ul ,urmand acelasi procedeu ca si in primul caz alegandu-se de data aceasta, optiunea de printare.
3.
RFQ-ul va fi creat ca in cazurile precedente iar transmiterea se va efectua prin modalitatea de Email a SAP-ului, unde se va folosi ca adresa de contact informatia gasita in campul Contact_Point. Dupa ce transmiterea s-a efectuat cu succes campul se va completa automat.
Aceasta parte este destinata trimiterii cererii de cotatii prin Outlook Email.
-Primul buton de comanda va creea RFQ-ul, dar fara sa-l trimita.
-Urmatorul,va trimite cererea prin Outlook ,oferind deasemenea posibilitatea de atasamente, pe langa scrisoarea ce vine automat din letter.doc, a 2 documente (pdf, picture, excel, etc) si a altor informatii suplimentare.
De mentionat este faptul ca aceste RFQ-uri se pot deasemenea creea odata; se pot selecta toate Pr-urile prin Flag All selection iar pogramul va sti sa le diferentieze pe business (storeroom sau expense) si sa creeze cererile.
Pentru storeroom va lua ca drept cheie primara vendorul iar pentru expense atat numarul de PR cat si numarul de vendor.
Odata creat se va completa automat numarul de RFQ, data si textul informativ: "RFQ created only" in campul corespunzator din baza de date.
In trimiterea emailului activand outlookul s-a creat obiectul : Outlook.Application unde To, CC, Subject, Body au fost initializate cu variabile ce au fost definite intr-o procedura anterioara in functie de cerintele utilizatorului.
Aceasta optiune este folosita pentru a trimite un reminder pentru furnizorii care inca nu au dat nici un raspuns cererii de cotatii trimise. Emailul va contine informatiile trecute in LETTERreminder.doc
Clear Up RFQ se foloseste daca se doreste inchiderea sau stergerea unei inregistrari din baza de date . Utilizatorul va primi un mesaj prin care este avertizat ca aceste inregistrari vor fi scoase din baza de date si se cere confirmarea.
Fig.3.12 Mesaj User
Aceste date sterse vor ramane in continuare in tabela de backup (dbo_RFQ) dar vor avea la campul Closed textul "Closed" pentru a nu mai fi introduse in tabela de lucru (RFQ).
-Prin acest button aplicatia se va loga la serverul site-ului P&G si va afla numele si adresele de email a tuturor angajatilor P&G (printre care si a requisitionerilor).
Aplicatia se gaseste intr-un dosar sub forma unui executabil cu denumirea: RFQ Database Tool.exe
Odata deschis executabilul, calea unde va fi instalat toolul trebuie sa ramana C: si se apasa Install.
Fig.3.13 Instalare aplicatie
Acel dosar va contine : aplicatia (se termina in .mdb) si alte doua dosare, LETTERS si RFQ-PDF.
Fig.3.14 Dosar aplicatie
Inainte de a folosi aplicatia
Trebuie sa se introduca denumirea variantei de SAP pentru a downloada PR-urile din tranzactia ME57, astfel ca toolul sa stie ce date sa foloseasca. Acest lucru se face in excelul : LETTERS Variant.xls
(.
Fig.3.15 Exemplu nume varianta
Fig.3.16 Assign and Process
Trebuie completate informatiile de logare la SAP in fisierul:"login.xls"
- Trebuie completat "deadline" , pentru RFQ in numar de zile incepand din ziua cand se va trimite RFQ-ul, in fisierul: "Deadline.xls"
- Fisierul PVL.xls trebuie updatat cu informatiile corespunzatoare. E foarte important ca Material_group, Vendor, si Plant sa NU fie nule. Daca o inregistrare dintr-o astfel de coloana lipseste, aplicatia va da o eroare.
Fig.3.17 PVL
Se va completa fisierul PVL.xls daca se lucreaza pe expense si fisierul Materials.xls daca se lucreaza pe storeroom. In ambele cazuri fisierul pentru care nu se lucreaza trebuie sa ramana gol , dar nu sters.
-Cand se va modifica unul din cele doua fisiere excel, la deschiderea excelului trebuie sa se activeze "Enable Macros".
-Campurile Materials si Plant trebuie sa fie de format text. Pentru a se converti in format text, se pot folosi butoanele ce se gasesc in acele fisiere (o celula care a fost schimbata intr-un format text va a vea semnul (') in fata si va fi de culoare verde). Butonul ruleaza un macro care va pune automat semnul (') in fata numarului de material.
Fig.3.18 Date Pvl
-Trebuie sa se completeze scrisoarea (Letter.doc) catre furnizor , ce va fi folosita cand se va trimite RFQ-ul prin Outlook, la fel si pentru scrisoarea de reminder (reminder.doc).
Pentru a trimite un email utilizatorul trebuie sa urmeze urmatorii pasi:
Primul mesaj care va aparea este: ; daca se doreste continuarea actiunii se confirma cu OK, daca se doreste anularea actiunii atunci se alege Cancel.
Un al doilea mesaj care va aparea este: Daca se doreste adauarea de informatii suplimentare emailului atunci se va alege Yes, daca nu se merge mai departe alegand No.
Este un imput box prin care se memoreaza la body-ul emailului si aceste informatii introduse.
Urmatorul mesaj este o cerere de confirmare pentru adaugare unui atasament (acceptate sunt maxim 2 atasamente)
Se poate folosi butonul si se vor trimite emailuri cu RFQ-ul in format PDF atasat automat.
Daca se verifica Sent Items in Outlook se poate vedea emailul trimis:
Fig.3.19 Email
Informatia "Request for Quotation" este luata din fisierul LETTERSLetter.doc
Daca se doreste trimiterea unui Efax din Outlook ,in Contact Point trebuie sa se scrie numarul de fax , care va fi transformat automat intr-o formula pe care toolul o va folosi sa trimita Efaxul.
3. Setari importante
Aplicatia functioneaza numai daca utilizatorul are instalata versiunea de MS Access XP sau 2002, altfel se va creea un conflict intre versiuni.
Trebuie schimbata data si regiunea din setarile calculatorului. Optiunea agreata este: English(United States). Altfel vor exista erori in citirea excelurilor.
Fig.3.20 Setare Limba si Data
In SAP la Profilul Utilizatorului trebuie schimbat formatul datei si notatia decimala:
Fig.3.21 Setare Data
Pentru a vedea boxurile de SAP deschise de catre VBA, in format normal din Control Panel se alege Sap Configuration si se adauga MSAccess la Aplication
Fig.3.22 Sap Configuration
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |