Tutorial SQL Server

September 2, 2017 | Author: marianbob | Category: N/A
Share Embed Donate


Short Description

Download Tutorial SQL Server...

Description

Episodul 1 – SQL Server 2000 si SQL Server 2005 Va propun ca pe parcursul a citorva episoade sa construim de la zero o aplicatie de gestionare a unei baze de date cu CD / DVD-uri, cu o structura relativ simpla, dar usor de extins de catre orice programator sau impatimit de baze de date, cu niste unelte care sint relativ la indemina. Vom folosi pentru acest tutorial ca suport al bazelor de date produsul SQL Server, dar pentru scopul aplicatiei versiunea free (da, scoate si Microsoft produse performante free !) a acestuia, MSDE (Microsoft Desktop Engine) este mai mult decit suficienta. Aceasta versiune free este disponibila pentru download de pe site-ul Microsoft. OBSERVATIE: versiunea MSDE a SQL 2005 a fost redenumita in Microsoft SQL Server Express Edition. Chiar daca tematica nu poate parea interesanta, ce se doreste prin intermediul acestor tutoriale este transmiterea unor principii de lucru, prezentarea utilitarelor cu ajutorul carora se pot implementa aceste principii si prezentarea unui rezultat intr-o forma primara care, evident, suporta multe imbuntatiri. Aceste imbunatatiri sint, insa, la latitudinea fiecaruia si depind de imaginatia si nevoile personale ale celui care dezvolta aplicatia. NOTA: Unele notiuni nu sint acoperite de acest tutorial. Se presupune ca cititorul are cunostinte elementare cu privire la infrastructura unei retele, administrarea unei retele care include un domeniu (permisiuni, useri, servicii, etc), administrarea la nivel de baza a unui server, moduri de autentificare. Prezentare generala a produselor si comparatii SQL Server 2000 a reprezentat un salt major in domeniul bazelor de date. Daca saltul de la SQL Server 6.5 la 7.0 a fost considerat de multi specialisti ca fiind unul semnificativ, saltul de la 7.0 la 2000 (sau versiunea 8) este la fel de important, din mai multe puncte de vedere. Cele mai importante aspecte au fost cele legate de securitate si performanta, zone in care s-au depus eforturi semnificative. Saltul de la SQL 2000 la SQL 2005 este, din nou, major si, pe mai multe planuri:  Mai multe editii (Express, Workgroup, Developer, Standard, Enterprise) fata de 4 (Desktop, Developer, Standard, Enterprise, Mobile) in SQL 2000  Notification Services  Integration Services  Reporting Services  Management tools – o integrare mai buna cu alte tool-uri de management ale MS (MOM, SMS)  Integrare puternica cu Visual Studio – interfata de administrare a fost, de fapt, complet rescrisa folosind VS si ofera acces la obiectele de administrare si implementare a bazelor de date prin intermediul VS  Relational Database – s-a optimizat mult database engine, s-a imbuntatit partea de securitate, suportul pentru date structurate si ne-structurate (XML)

Mai multe detalii despre diferente si imbunatatirile aduse in SQL 2005, se gasesc aici: http://www.microsoft.com/sql/prodinfo/overview/whats-new-in-sqlserver2005.mspx O vedere de ansamblu asupra produsului este disponibila aici: http://www.microsoft.com/sql/prodinfo/overview/default.mspx. SQL Server 2000 Standard Pasii pentru instalarea SQL Server pentru acest tutorial vor fi descrisi in episodul urmator. Ce dorim acum, este sa familiarizam putin cititorul cu unele facilitati ale SQL Server, referitor la optiunile de instalare. Aceste optiuni vor fi intilnite pe parcursul episodului 2, cind vom instala impreuna SQL Server 200 Standard Edition, dar as dori sa le clarificam aici, o data cu prezentarea succinta a citorva din facilitatile oferite de SQL Server. Instante diferite (sau mai multe servere intr-unul singur) Sa consideram urmatorul scenariu: avem SQL Server instalat pe un server si care ruleaza o baza de date de contabilitate. Dorim sa creem o copie a acestui server, pentru niste teste de optimizare a performantelor, dar nu dispunem de banii necesari achizitionarii unui server nou. Pe serverul curent, spatiul de pe hardisk nu este o problema, este un server cu 4 procesoare si memorie avem destula (comparativ cu specificatiile producatorului). Ce putem face este sa mai instalam o data SQL Server, ca o noua instanta (sau named instance). In acest fel, vom putea experimenta diferite setari la nivel de server (alocare de memorie, etc) fara a afecta functionarea celeilalte instante. Acest mod de lucru este posibil datorita faptului ca fiecare instanta ruleaza intr-un spatiu propriu de memorie si resurse hardware, fara sa afecteze celelalte instante daca se modifica setarile uneia din ele. Este ca si cum am avea inca un server fizic disponibil pe care sa rulam inca un SQL Server. Identificarea unui server SQL in retea, in scopul conectarii la acesta se face dupa numele NetBIOS asociat acestuia. In cazul in care avem mai multe instante SQL instalate pe acel server, identificarea acestora se va face dupa sablonul numeserver\numeinstanta. De exemplu, avem serverul cu numele SQLDBSRV01 si avem 2 instante SQL instalate pe acesta. Prima instanta, cea default, va fi identificata dupa numele NetBIOS al serverului, adica SQLDBSRV01. Instanta 2 cu numele CONTAB_DB, va fi putea fi accesata folosind identificatorul SQLDBSRV01\CONTAB_DB. SQL Server ruleaza ca serviciu in cadrul sistemului de operare. In cazul in care avem mai multe instante, fiecare instanta va crea propriul serviciu in cadrul sistemului de operare. Identificarea acestora se face similar cu identificarea instantelor, cu urmatoarea diferenta: numele serviciilor pentru instantele din exemplul de mai sus sint astfel – MSSQLServer si SQLServerAgent pentru instanta default si MSSQL$CONTAB_DB si SQLAgent$CONTAB_DB pentru instanta CONTAB_DB. Instalarea utilitarelor client Sa presupunem urmatorul scenariu: avem un server SQL (sau mai multe) dar nu avem access fizic la ele pentru a le administra. Putem instala numai utilitarele de administrare, asa-numitele Client Tools. Aceasta optiune este disponibila in faza de setup si va instala urmatoarele componente:  SQL Enterprise Manager (in cazul SQL 2000, despre care discutam)  SQL Query Analyzer

 SQL Books Online  Client Network Utility  Utilitarele linie de comanda (osql, etc) Avind aceste utilitare si detaliile de conectare la server la indemina, un administrator se va putea conecta la orice server ar avea nevoie pentru a efectua taskurile administrative de care este nevoie. Editiile SQL Server si alegerea unei editii Editiile SQL Server 2000 sint urmatoarele:  Desktop Engine (versiune free) sau MSDE  Developer Edition  Standard Edition  Enterprise Edition Exista inca o editie a SQL Server, mai putin folosita, si anume Personal Edition. Am avut ocazia, la un moment dat, sa instalez un Personal Edition, este o versiune limitata ca si facilitati, din ce teste am reusit sa fac in timpul avut la dispozitie, iar ca si pozitionare pe lista de editii, ar fi undeva intre Desktop Engine si Developer Edition. Exista limitari si diferente intre editiile SQL: la volumul de resurse hardware pe care le pot folosi, la dimensiunea bazelor de date (MSDE nu poate folosi baze de date mai mari de 2G), la utilitarele care se instaleaza o data cu fiecare editie (MSDE nu are Enterprise Manager) sau la performantele SQL in cazul bazelor de date mari. Mai multe detalii despre aceste diferente, puteti gasi in SQL Books Online, unde va sint prezentate diferentele dintre diferitele editii dpdv al facilitatilor incluse in fiecare dintre acestea. Descrierea componentelor  SQL Enterprise Manager (sau EM in unele documentatii) permite “inregistrarea” serverelor SQL intr-o lista de administrare disponibila unui administrator. Inscrierea serverelor in aceasta lista presupune ca userul respectiv are permisiuni pe acel server.  SQL Query Analyzer (sau QA) permite interogarea bazelor de date existente pe un server SQL folosind limbajul Transact-SQL (sau T-SQL).  SQL Books Online este documentatia SQL in format electronic. Contine 90% din informatiile necesare unui administrator sa-si faca munca in conditii optime.  Client Network Utility permite conifgurarea protocoalelor de retea pe care sa le utilizeze SQL Server pentru a permite conectarea clientilor la bazele de date gestionate de acesta.  Utilitarele linie de comanda (osql) permit interogarea bazelor de date din linia de comanda, folosind parametri pentru a specifica interogarea, numele serverului, numele bazei de date, etc. Mai multe detalii despre utilitarele linie de comanda se gasesc in SQL Books online. Conceptul de baze de date relationale Conceptul de baze de date relationale este indeobste cunoscut. Tot mai des putem auzi sintagme de genul “Nu va gasesc in baza de date”, “Nu avem produsul asta in baza de date”. As dori sa fac o clarificare importanta, dupa parerea mea, pentru ca acest termen, de baza de date, este destul de larg. Bazele de date,

conform definitiei largi, sint o colectie de date, inregistrari, care pot fi parcuse secvential sau dupa un alt algoritm si care permit stocarea, regasirea si procesarea datelor conform unor nevoie specifice. Bazele de date relationale difera putin de aceasta definitie, prin extinderea acesteia si anume prin introducerea termenului de relational. De exemplu, in Excel exista conceptul de database pe o foaie de calcul. Dar nu este neaparat relationala, sau nu este relationala 100%. SQL si alte motoare de baze de date folosesc relationarea pentru optimizarea bazelor de date. Sa luam un exemplu. Avem 100 de CD-uri si am vrea sa le ordonam cumva, intr-o baza de date. Asociat unui CD, avem o serie de atribute: casa de discuri, an aparitie, gen muzical, artist, etc. Aceasta baza de date o putem dezvolta si implementa foarte simplu si rapid si in Excel, cu toate detaliile. Ce se intimpla insa, cind casa de discuri este scrisa gresit la 25 de CD-uri ? Sau genul muzical ? Trebuie parcurse toate inregistrarile si corectate manual. Insa, folosind relatiile, in loc sa stocam textul explicit al, sa luam un exemplu, numelui casei de discuri, stocam un cod al acestei case de discuri in tabela de CD-uri, iar in baza codului, regasim numele acesteia, dintr-o tabela “relationata” prin intermediul codului. Folosind aceasta abordare, schimbam doar numele casei de discuri in acea tabela cu casele de discuri, iar interogarea noastra va afisa numele corect la toate inregistrarile, cu o singura modificare. In imaginea de mai jos este afisat, schematic, exemplul de mai sus:

Diagrama 1 – Tabela cu CD-urile (structura partiala) – Fara relatii, cu atributele in text clar

Diagrama 2 – Tabela cu CD-urile (structura partiala) – Cu relatii spre tabele auxiliare, de unde se preiau textele asociate atributelor unui CD Din diagrama 2 se poate vedea destul de usor faptul ca daca dorim sa schimbam ceva in denumirile unor genuri muzicale sau ale unor case de discuri, sau sa adaugam niste atribute asociate acestor 2 tabele este mult mai usor decit in prima varianta. Aceasta abordare are si unele dezavantaje (orice moneda are 2 fete), dar aceste dezavantaje sint “umbrite”, ca sa zicem asa, de usurinta in administrare. Acest proces de separare a datelor se numeste normalizare. Nu vom intra in detalii care tin de acest proces, pentru ca nu face obiectul acestui tutorial, dar se gasesc destule articole pe net care explica in detaliu si pe intelesul tuturor ce presupune normalizarea bazelor de date si avantajele pe care aceasta le aduce. In episodul 2 al acestui tutorial vom trece la instalarea SQL Server 2000 Standard Edition si MS-Access, urmind ca de la episodul 3 sa trecem la exercitiul practic propus.

Autor Alin Selicean

Tutorial Sql Server - Partea 3

Adaug Episodul 3 – Dezvoltarea aplicatiei

Pentru dezvoltarea aplicatiei, vom elabora un set minim de specificatii, care ne vor ajuta sa parcurgem impre urmatoarele etape, critice, si intilnite in toate etapele dezvoltarii unei baze de date. Inainte de intra in detalii, un lucru important: inainte de a intreprinde orice actiune cu privire la designul unei baze de date trebuie inte natura datelor care vor fi stocate in aceasta baza de date. Daca datele in sine (ca si semnificatie) sint relativ c sa discutam despre natura datelor (sau tipul lor).

OBSERVATIE: Scopul acestui exercitiu nu este de a avea aceasta aplicatie gata in n zile si sa fie mai sim complicata. La o prima vedere, poate ca structura pe care am ales-o pare mai complicata decit este nevoie as vrea sa se retina din acest exercitiu este logica folosita pentru a ajunge la o structura sau alta, concept metodologia, etc. Am incercat sa materializez anumite concepte abstracte: flexibilitatea aplicatiei pe terme optimizarea datelor, etc. Daca am reusit sau nu, asta ramine la aprecierea fiecaruia din voi.

Dintre celelalte aspecte care trebuie luate in calcul la designul unei baze de date, cele mai importante ar fi ur

1. Securitatea datelor – aplicatia rulind pe local si datele nefiind critice, aspectul securizarii accesului la vom mai discuta. Oricum, securitatea datelor este un subiect atit de vast, incit ar putea face obiectul u separat (si, probabil, ca asa va si fi la un moment dat) 2. Utilizarea preponderenta a bazei de date (pentru actualizari sau pentru rapoarte), dpdv al performante 3. Constringeri de spatiu / resurse hardware 4. Arhitectura aplicatiei (aplicatie distribuita, web, baza de date distribuita, etc)

Nu vom intra in amanunte pe aceste subiecte, din lipsa de spatiu. Dar acestea nu trebuie uitate de nici un dez consultant cind propune / dezvolta o solutie pentru clientii sai. Ca si date de pornire, pentru aspectele mai sus mentionate, vom presupune urmatoarele: 1. 2. 3. 4.

Nu se doreste securizarea datelor, datele nefiind confindentiale sau critice Baza de date va fi o baza de date de uz personal, deci performanta nu este un criteriu critic Baza de date va ajunge la o dimensiune suportabila pe un calculator de uz personal Baza de date va fi utilizata local, pe un calculator de uz personal, interfata de exploatare va fi dezvolt facilitatile oferite de MS-Access 2003

Cerintele aplicatiei

Ca si minimum, aplicatia trebuie sa permita stocarea in baza de date a urmatoarelor detalii despre CD / DVD

         

Titlul discului Standard disc (audio, mp3, divx, dvd, etc) Anul de aparitie Casa de discuri / casa de “filme” (Paramount, etc) Artist (in cazul audio, mp3 sau unde e cazul) Gen muzical / gen film Disc propriu (propriu vs imprumutat) Data cumpararii / imprumutarii Data returnarii Persoana (care ne-a imprumutat sau careia i-am imprumutat)

In acelasi timp, dorim ca aplicatia sa ne permita sa stim ce CD-uri / DVD-uri am imprumutat, de la cine si ci returnate; in aceeasi ordine de idei, dorim sa stim ce CD-uri / DVD-uri avem imprumtate, cui si pina cind.

Natura datelor Dupa cum se observa din descrierea cerintelor de mai sus, majoritatea datelor folosite sint de tip data calend de tip caracter. Natura datelor afecteaza si tipul de data pe care urmeaza sa-l folosim in SQL Server. Foarte p Server permite ca pentru acelasi cimp sa avem mai multe optiuni dintre care sa alegem. Astfel, pentru un cim in functie de valorile pe care le determinam ca vor fi stocate in acel cimp, putem opta intre mai multe feluri d numerice: tinyint, smallint, int, bigint, numeric si real (cu zecimale si nivele de precizie), bit, etc. Mai multe data types se gasesc in SQL Server Books Online, cu cautare pe keyword-ul data types si selectind in lista d sectiunea Overview.

Ca si concluzie, intelegerea naturii datelor vehiculate si determinarea plajei de valori pe care urmeaza sa o st cimp anume este critica pentru faza de design a bazei de date si ne poate aduce un plus de performanta si o “ de spatiu necesar pe disc. O data facut designul unei baze de date cu privire la acest aspect, prea multe modi mai pot face, fara a afecta negativ partea de dezvoltare a aplicatiei care urmeaza sa foloseasca baza de date.

Aceste tipuri de date reprezinta o caracteristica importanta, in ceea ce priveste spatiul necesar, si anume fapt care pot fi stocate in aceste cimpuri pot avea lungimi variabile, aspect deloc de neglijat in cazul cimpurilor c date de tip sir de caractere (dar si in cazul cimpurilor cu date de tip intreg, in acest caz insa cistigul de spatiu putin evident). Aceasta facilitate ne permite sa “economisim” spatiu fizic pe disc, in cazul in care acest aspec constringere. Ca si best-practice, este bine de stiut acest aspect si indusa obisnuinta folosirii cimpurilor cu lu variabila. Poate parea un amanunt, dar cind vorbim de baze de date mari, acest “amanunt” devine important.

Sa luam un exemplu, si anume un cimp ale carui date pot avea lungimi diferite, cu un maxim de 50 de caract minim de 3 caractere. O plaja larga de valori (80%) pot avea lungimi de aproximativ 20 – 25 de caractere (v calcul o medie de 23 de caractere), 5% vor avea lungimea minima (adica 3 caractere) iar restul de 15% vor a maxima (adica 50 caractere). Numarul maxim de inregistrari in aceasta tabela a fost determinat la aproximat de inregistrari. Ca sa se poata vedea mai bine diferenta, vom folosi tabela de mai jos (calculele sint aproxima Cimp cu lungime fixa 2.000.000 x 50 bytes = 100.000.000 bytes = 100Mbytes (aprox)

Cimp cu lungime variabila 1.600.000 (80%) x 23 bytes = 36.800.000 bytes = 36.8Mbytes (aprox) 100.000 (5%) x 3 bytes = 300.000 bytes = 0.3Mbytes (aprox) 300.000

Total: 100M

(15%) x 50 bytes = 15.000.000 bytes = 15Mbytes (aprox) Total: 36.8 + 0.3 + 15 = 52.1M

Dupa cum se poate vedea din tabelul de mai sus, prin simpla folosire a unui tip de data sau a altuia se pot rea “economii” importante de spatiu. Aceasta economie este obtinuta in mod nativ, datorita modului in care SQL trateaza aceste tipuri de date. In exemplul nostru, daca in baza de date avem de stocat 3 bytes, SQL Server v spatiul de care e nevoie (3 bytes) in loc sa aloce 50 bytes. Acest tip de data este identificat in SQL Server su varchar (variable character). Mai multe detalii despre tipurile de date veti gasi studiind SQL Books online, c keyword-ul “data types”.

Aceasta economie se traduce in final prin performante imbunatatite, cerinte de administrare mai scazute, cer mai reduse. Din aceasta cauza, alegerea unui tip de data sau a altuia, poate avea un impact major pe termen l prima vedere, acest aspect poate parea un amanunt. Sa continuam si sa discutam putin despre tabelele care vor compune baza noastra de date.

Vom avea nevoie de o tabela care sa contina numele caselor de discuri sau, in cazul DVD-urilor, a caselor d filme, cu structura urmatoare: Cod casa de discuri, numeric, identity Denumire casa de discuri, varchar(50)

Vom mai avea nevoie de o tabela care sa contina diferitele standarde de discuri (mp3, audio, etc), cu urmato structura: Cod standard, numeric, identity Denumire standard, varchar(50)

Vom mai avea nevoie de o tabela care sa contina diferitele genuri muzicale sau de filme (hip-hop, R&B, dra urmatoarea structura: Cod gen muzical, numeric, identity Denumire gen muzical, varchar(50)

Vom mai avea nevoie de o tabela care sa contina un fel de agenda cu datele de contact ale persoanelor care n imprumutat discuri sau carora le-am imprumutat noi discuri. Aceasta tabela va trebui sa ne ofere, ca un mini urmatoarele detalii: numele persoanei, adresa completa, numar de telefon si adresa de email. Pentru acesta, p urmatoarea structura: Cod persoana, numeric, identity Nume persoana, varchar(50) Adresa, varchar(100) Numar de telefon, varchar(20) Adresa email, varchar(30)

Cele de mai sus, sint doar tabelele auxiliare care vor fi folosite de catre aplicatie. Tabela urmatoare contine d ale aplicatiei, si anume colectia de discuri. In aceasta tabela, vom memora, in loc de denumirea in clar a genu muzicale sau a numelor caselor de discuri sau de filme, codul asociat acestora, pentru a permite modificarea acestor detalii in tabelele care contin aceste detalii, fara sa afectam tabela de discuri. Structura pe care v-o propun pentru aceasta tabela este descrisa in imaginea de mai jos:

Toate tabelele definite pina acuma, le-am definit cu ajutorul Microsoft Visio 2003 for Enterprise Architects. poarta numele de “modelare” si are unele avantaje deloc de neglijat. Cel mai important este faptul ca permite structurii bazei de date pina cind se ajunge la un model stabil, functional, care sa acopere toate nevoile aplica clientului. Toate acestea fara sa lucram inca cu SQL Server sau sa scriem o singura linie de cod in TransactAccess. Microsoft Visio 2003 for Enterprise Architects (disponibil in pachetul Microsoft Visual Studio 2003 Architect) ofera aceasta facilitate si in plus, cind totul este gata, prin conectori ODBC se poate conecta la ser dorit si sa creeze baza de date conform modelului construit de noi.

Pentru a definitiva modelul bazei de date, vom trece la modelarea relatiilor dintre tabele. Voi lasa schema sa la sine si vom vedea in lectiile urmatoare cum ne vom folosi de aceste relatii.

Pentru a va usura munca, va voi oferi pentru download scriptul SQL care va va crea baza de date, la finele a Desi, de preferat ar fi, dpdv al scopului acestui tutorial, sa creati baza de date manual, din Enterprise Manage

Obiectele unei baze de date Intr-o baza de date, datele sint stocate in tabele. Pe linga aceste tabele, intr-o baza de date SQL mai gasim si cum ar fi: views (sau vederi), users (userii care au acces la baza de date respectiva), stored procedures (sau p stocate – bucati de cod sau instructiuni Transact-SQL proiectate sa execute anumite operatii bine determinat

Obiectele unei baze de date se pot vedea in imaginea de mai sus. Imaginea de mai sus afiseaza, de fapt, tipur care pot fi definite in cadrul unei baze de date. Le vom lua, pe scurt, pe rind pe fiecare din ele:  Diagrams – contine diagramele care reprezinta schematic legaturile dintre tabelele bazei de date  Tables – contine tabelele care, la rindul lor, contin datele utile ale bazei de date  Views – contine definitia vederilor (sau a interogarilor salvate) folosite de aplicatie pentru a interoga baz  Stored Procedures – contine definitiile procedurilor stocate folosite pentru a efectua anumite operatii pr asupra datelor si / sau a tabelelor din baza de date  Users – contine utilizatorii care au permisiuni (pe diferite nivele) in cadrul bazei de date curente  Roles – contine grupurile de utilizatori pre-definiti in cadrul SQL Server si in cadrul bazei de date. Aces contin permisiuni predefinite care se pot aplica userilor pentru accesul la date  Rules – contine regulile de validare a datelor de la nivelul bazei de date. Regulile de validare a datelor se implementa pe 2 nivele (cel putin), si in cazul nostru mai specific, la nivelul tabelelor (la nivel declarativ al t la nivelul interfetei utilizator (asa numita validare pe client). Avantajele folosirii validarii la nivelul bazei de principal la capitolul performanta (clientul nu mai trebuie sa faca validarile, deci va rula mai rapid, validarile merg mai rapid datorita resurselor hardware mai mari, etc).  Defaults – contine definitiile valorilor implicite definite de utilizator pentru baza de date. Aceste default la definirea tabelelor la specificarea valorilor implicite care sa fie introduse in tabele cind utilizatorul, prin in

oferita, nu furnizeaza toate datele pentru a actualiza tabelele. Vom vedea in cadrul exercitiului practic utilita defaults.  User Defined Datatypes – am discutat putin mai sus despre tipurile de date. Aici se pot defini tipuri de d cerintelor sau specificului aplicatiei sau a bazei de date.  User Defined Functions – contine definitiile functiilor definite de dezvoltator / implementator si care fu diferite operatii asupra datelor sau a altor obiecte ale bazei de date  Full-Text Catalogs – contine cataloagele full-text existente in cadrul bazei de date. Aceste cataloage con sistem cu privire la indecsii full-text. Un exemplu de indecsi full-text si o baza de date care foloseste acest ti ar fi o baza de date cu CV-uri, cind se doreste cautarea in cadrul acestor CV-uri dupa cuvinte cheie.

Din pacate, nu avem mai mult spatiu la dispozitie pentru a detalia aceste obiect, dar pentru cei interesati, SQ Books Online contine detalii despre aceste tipuri de obiecte.

Noi vom merge mai departe cu exercitiul practic si vom trece la definirea tabelelor bazei de date, folosind SQ Enterprise Manager. Voi exemplifica practic cum se creeaza tabela tbl_Colectie, urmind ca pe baza definitiilor de mai sus pentru tabelelor, sa creati tabelele auxiliare. Creerea diagramei va incheia lectia de azi, urmind ca in partea a 4-a sa lucrul in MS-Access.

Creerea tabelelor folosind Enterprise Manager Pentru creerea tabelelor, vom incepe prin a creea baza de date. Modul in care SQL Server gestioneaza bazele face obiectul acestui tutorial, dar foarte pe scurt, lucrurile se intimpla in felul urmator. Fiecare baza de date a componente: fisierele cu date (sau data files) si log-ul operatiilor (sau transaction log). Data files contin tabe celelalte obiecte dintr-o baza de date. Transaction log-ul contine un istoric al modificarilor efectuate asupra d Dimensiunea acestui istoric variaza la fiecare baza de date, in functie de nevoile specifice ale acestei baze de

Ca si functionare, orice modificare se doreste a fi operata asupra datelor, se inregistreaza intii in transaction o scriere fizica pe disc) si abia apoi trimisa spre executie. SQL Server lucreaza la nivel de tranzactii. Adica o asupra datelor se considera un bloc unitar, care se executa integral cu succes sau nu se executa deloc (un exe update asupra unor inregistrari urmat de un insert de inregistrari noi, insert care este conditionat de primul up executa ambele instructiuni cu succes ori deloc). Este “treaba” aplicatiei sa detecteze erorile tranzactionale s aceste erori. Acesta este, foarte schematic, modul in care lucreaza SQL Server. Fiecare din cele 2 componente (data files si transaction log) sint formate din 1 sau mai multe fisiere pe disc. extensia MDF iar transaction log-ul are extensia LDF.

In cele ce urmeaza, vom creea o baza de date in care vom trece la creerea tabelelor necesare aplicatiei noastr

Se lanseaza Enterprise Manager, se expandeaza in lista serverul curent si se da click dreapta pe Databases, c Database.

Se completeaza numele bazei de date. Click pe tab-ul Data Files.

Se mareste dimensiunea implicita la 10MB, se lasa restul optiunilor cu valorile implicite si click pe tab-ul Tr Log.

Se lasa valorile implicite si click pe OK. SQL Server va crea baza de date dupa care ar trebui sa vedem acea de date in Enterprise Manager.

In stinga vedem baza de date ITZone creata anterior, iar in partea dreapta, sint afisate containerele pentru ob aceasta baza de date. Expandind baza de date, aceleasi containere apar si in partea stinga.

Vom trece acum la creerea tabelelor. Pentru exemplificare, vom crea impreuna tabela centrala a aplicatiei, tb Creerea restului tabelelor o las pentru voi ca exercitiu.

Cu baza de date ITZone selectata si expandata, click dreapta pe containerul Tables si selectata optiunea New

Completate detaliile conform imaginii de mai jos si apoi salvata tabela cu numele tbl_Colectie.

Simbolul cheitei galbene din dreptul cimpului DiscID arata faptul ca acel cimp este index primar in tabela no “Bifele” din coloana “Allow Nulls” specifica faptul ca in acele cimpuri se permite ca utilizatorul sa nu speci valoare cind se introduc valori noi sau se face un update.

Similar cu acest ecran, se vor crea tabelele auxiliare ale aplicatiei noastre. Descrierile acestora sint in acest tu

Pentru mai multe detalii privitor la fiecare din optiunile disponibile in Table Designer puteti accesa SQL BO Online).

Pentru comoditate, am inclus scriptul care creeaza baza de date si tabelele necesare. In acelasi script sint crea indecsii necesari ordonarii datelor in forma dorita de noi. Pentru rularea acestui script, se procedeaza astfel: Se download-eaza scriptul si se salveaza intr-un folder in care este accesibil pentru SQL Server. Dupa aceas lanseaza SQL Query Analyzer.

Click pe OK

Meniul File, Open… si navigat pina in folderul in care este salvat scriptul si selectat acel script.

Dupa ce scriptul este afisat pe ecran, va trebui modificata calea unde sa fie stocate pe disc fisierele MDF si L bazei de date (zona highlight din script).

Modificati textul highlight sa pointeze spre un folder pe calculatorul unde ruleaza SQL Server si apoi click p Run Script (incercuit in imaginea de mai sus) pentru a rula scriptul. Dupa rularea scriptului, daca nu au aparut probleme, SQL Query Analyzer va afisa mesajele:

Iar in folderele mentionate in script, vor aparea urmatoarele fisiere:

Dupa rularea scriptului, in Enterprise Manager va aparea noua baza de date si obiectele definite in aceasta.

Se observa tabelele create in urma rularii scriptului. Apasa aici pentru a downloada scriptul

Concluzie Desi s-ar mai putea discuta mult la acest capitol, sa nu uitam ca SQL Server este un produs cu o arhitectura c functionalitate mult peste scopul acestui tutorial. Daca ar fi sa discutam in detaliu despre un anumit subiect a Server, am putea lejer sa acaparam tot spatiul de care dispune ITZone. In plus, exista tone de informatie disp online atit pe site-ul Microsoft (www.microsoft.com/sql) cit si pe diferite forumuri specializate pe SQL Serv de interes online: TechNet, MSDN. Sau, un simplu Google pe “sqlserver” si va va afisa o lista considerabila online despre SQL Server.

Las ca si exercitiu pentru voi creerea unei diagrame a bazei de date proaspat create de noi. Puteti folosi sche dintre tabele prezentata mai sus folosind Visio. Voi publica in partea a 4-a diagrama, pentru ca fiecare din vo verifica. Pina atunci, va doresc toate cele bune.

Puteti adauga comentarii sau pune intrebari pe tema acestui tutorial aici: http://www.itzone.ro/forum/viewtopic.php?p=157#157

Auto

Tutorial Sql Server - Partea 4

Autor A

Adaug Episodul 4 – Dezvoltarea aplicatiei

Dupa ce in episoadele anterioare ne-am familiarizat cu SQL Server si am creat fundatia pe care vom constru episodul de fata, vom incerca sa facem primii pasi in construirea elementelor din care va fi compusa, in final Insa, inainte de orice, asa cum v-am promis in episodul 3, vom finaliza diagrama bazei de date.

Aveti mai jos diagrama realizata folosind mecanismele oferite de SQL Server si pasii necesari pentru a o obt In Enterprise Manager, conform imaginii, click dreapta pe container-ul Diagrams si selectata optiunea New Diagram…

Se va lansa wizard-ul Create Database Diagram.

Click pe Next.

Selectata tabela in jurul careia vom construi aplicatia, tbl_Colectie. Bifati optiunea Add related tables autom lasati valoarea 1 la How many levels of related tables ?. Semnificatia pasilor de mai sus este urmatoarea: se tabela “centrala” a aplicatie si specificam wizard-ului faptul ca dorim ca odata cu tabela selectata sa fie inclu relationate cu tabela selectata. Conform designului nostru, tabela tbl_Colectie este relationata cu toate celela avem, in cazul nostru, un singur nivel de relationare (adica tabelele relationate nu au alte tabele relationate c Click pe Add.

Dupa cum se vede in imaginea de mai sus, wizard-ul a adaugat automat toate tabelele relationate cu tabela se Click pe Next.

Click pe Finish.

Si avem rezultatul wizard-ului. Dupa cum se vede, in baza relatiilor definite de noi in faza de design, wizard reprezentat grafic aceste relatii.

Cu un click dreapta pe oricare din “liniile de relatie”, SQL Server va afisa un meniu contextual, in care daca optiunea Properties, vom putea edita detaliile relatiei dintre tabele:

Nu vom intra in toate detaliile disponibile in aceasta fereastra, insa va invit pe cei interesati sa le descoperiti. detalia, dintre toate, doar doua optiuni importante si utile: Cascade Update Related Fields si Cascade Delete Records. Cele 2 optiuni devin disponibile cind se bifeaza casuta Enforce relationship for INSERTs and UPD doua optiuni, cind sint activate, permit propagarea modificarilor pe cimpurile care stau la baza relatiei dintre tabelele relationate, respectiv stergerea inregistrarilor din tabelele relationate. De mentionat faptul ca modifi respectiv stergerile, se propaga de sus in jos (de la tabela spre care este semnul cheitei spre tabela care are as “infinit”). Aceste 2 optiuni ajuta la implementarea asa-numitului mecanism de integritate relationala a datelo mecanism nu este implementat, pot aparea inregistrari orfane in tabela tbl_Colectie (inregistrari cu codul cas fara corespondent in tabela tbl_CaseDeDiscuri).

Daca ati ajuns la aceeasi diagrama, va felicit. Pe ceilalti ii felicit pentru rabdarea de care au dat dovada astep publicat acest episod si au la indemina pasii necesari obtinerii diagramei.

Sa trecem acum la MS-Access. MS-Access, pe linga modul standard de lucru (baze de date in format MDB) posibilitatea stocarii si accesarii datelor pe un server SQL. Acest mod de lucru ofera mai multe avantaje deci (standard dpdv al MS-Access), si anume:

1. Putere mai mare de calcul – datele sint procesate pe server, care dispune de putere mai mare de calcu 2. Usurinta in dezvoltarea de aplicatii – se modifica doar partea care afiseaza si proceseaza datele, fara structura in care sint stocate datele 3. Structura datelor se modifica intr-un singur loc, nu pe fiecare client care foloseste aceste date. Pe par se modifica doar partea dezvoltata in MS-Access.

Pentru a beneficia de acest mod de lucru, vom incepe dezvoltarea aplicatiei noastre, lansind MS-Access si se optiunea File, New….

In New File Panel (partea din dreapta a ecranului), se va selecta optiunea “Project using exiting data…”.

Se va specifica locatia si numele sub care se va salva aplicatia noastra pe disc. Click pe Create.

Se va afisa o noua fereastra in care urmeaza sa specificam detaliile de conectare la serverul SQL pe care sint datele. Completati in fiecare cimp datele specifice contextului vostru. Eu voi include datele conform context voi furniza, acolo unde este cazul, detaliile necesare.

Pasul 1, Select or enter a server name, se specifica sau selecteaza din lista, numele serverului SQL pe care es configurata baza de date. In cazul nostru, serverul este LONDON.

Pasul 2, selectarea unui mod de autentificare. Despre modurile de autentificare am putea scrie destul de mult scurt, SQL Server poate folosi serviciile de autentificare oferite de un domain controller din retea (daca retea configurata pe domenii) sau poate folosi mecanisme proprii de autentificare a userilor. In mediul de lucru pe folosesc pentru teste, dispun de un domain controller, astfel incit am ales modul de autentificare integrat (si mai multe avantaje dpdv al securitatii). Daca nu se dispune de un domain controller, se va specifica un user parola valida, definite pe SQL Server. Pentru detalii despre cum se creeaza un user SQL, va stau la dispoziti

Pasul 3, selectarea unei baze de date. Se va selecta din lista bazelor de date disponibile pe serverul selectat la baza de date care ne intereseaza (ITZone, in cazul meu). Daca ati atribuit alt nume bazei de date, selectati ba creata de voi pentru acest tutorial.

OBSERVATIE: Userul selectat (in cazul in care ati selectat modul de autentificare SQL) trebuie sa ai baza de date dorita. Pentru detalii, va stau la dispozitie pe forum.

Dupa completarea acestor pasi, click pe Test Connection. Daca totul a fost ok, veti primi urmatorul mesaj. D ajut sa treceti peste acest obstacol pe forum ca apoi sa puteti continua.

Click pe OK ca sa inchideti mesajul afisat si apoi din nou pe OK pentru a inchide fereastra cu parametri de c

Dupa citeva secunde, SQL Server va afisa o fereastra similara cu cea de mai jos. Pentru cei care au mai lucra Access, aceasta seamana cu ce au mai intilnit pina acum in MS-Access. Dar asemanarile sint doar aparente. diferente majore, atit in ce se afiseaza, cit si in “comportamentul” MS-Access.

Va las pe fiecare in parte sa descoperiti asemanarile si diferentele MS-Access fata de modul “standard”, con interesului fiecaruia dintre voi.

Vom continua cu explicarea elementelor MS-Access afisate si disponibile in acest mod de lucru:  Tables – contine tabelele definite in baza noastra de date. Nu trebuie uitat ca aceste tabele exista pe serv in Access.  Queries – contine definitiile interogarilor definite de noi, pentru a accesa si manipula datele din tabele. E echivalentul Views din MS-Access “standard”. Tot in acest container sint stocate si definitiile functiilor si pr stocate (sau stored procedures).  Database Diagrams – optiune inexistenta in aceasta forma in MS-Access “standard”. In locul acestei op optiunea Relationships.  Forms – aceeasi functionalitate ca si in MS-Access “standard”. Aici vom crea interfata prin intermediul manipula datele din tabelele noastre.  Reports – definitiile rapoartelor dorite de noi vor fi stocate in acest container.  Pages – acest container stocheaza definitiile paginilor de acces direct la date. Sint echivalentul functiona ASP si este o facilitate existenta si in MS-Access “standard” si permite publicarea unor pagini html si asp de pe un intranet.  Macros – contine definitiile unor colectii de comenzi predefinite si salvate de executie prestabilita de no atinge un scop.

 Modules – contine cod VBA asociat formurilor si celorlalte obiecte definite in aplicatia noastra.

Ce este important de retinut este faptul ca nu toate obiectele din MS-Access cu care urmeaza sa interactionam fi stocate in Access. O parte din acestea urmeaza sa fie create prin intermediul tool-urilor disponibile in MSvor fi salvate si stocate in SQL Server. Altele, cum ar fi rapoartele, formurile sau codul VBA (Macro-urile), in MS-Access. Este treaba MS-Access sa pastreze intacta legaturile dintre obiectele stocate pe SQL Server s in structurile specifice MS-Access. Ca si pasi imediat urmatori, vom efectua urmatoarele: 1. Definirea formurilor principale (afisarea datelor de interes, operatii asupra datelor primare) 2. Definirea formurilor secundare (editare detalii, tranzactii cu elementele din colectia de discuri, etc) 3. Definirea rapoartelor

Formurile le vom defini in baza cerintelor. Astfel, vom avea nevoie de:

1. un form care sa afiseze colectia integrala de discuri si care sa ofere acces la urmatoarele operatii: 1. editarea detaliilor asociate unui disc / titlu 2. generarea unei tranzactii cu titlul respective 2. un form care sa ofere acces la tabele catalog ale aplicatie: 1. casele de discuri 2. genurile musicale 3. standarde 4. agenda 3. un form care sa permita accesul la rapoartele definite ale aplicatiei si care sa permita selectarea como interfata aplicatiei, a unui raport spre a fi tiparit sau afisat pe ecran

Acestea ar fi, in linii mari, formurile de care am avea nevoie. Pe masura ce vom avansa cu lucrul, vom desco avea nevoie de unele formuri de acces rapid la date sau care sa permita adaugarea rapida, pe moment, de noi in anumite tabele ale bazei de date. Aceste formuri, de care sigur ne vom lovi, vor fi necesare pentru a imbun de ergonomie si rapiditatea in utilizare a aplicatiei, in ansamblul ei. Sa presupunem urmatorul scenariu: sinte de inregistrare a unui nou titlu in baza de date. Aveti discul in fata si ce ar trebui sa faceti ?

1. Sa va asigurati ca in tabela de case de discuri exista o inregistrare care sa corespunda cu ce gasiti pe d respectiv 2. Sa va asigurati ca in tabela de genuri muzicale sau filme exista o inregistrare potrivita cu genul discu 3. Sa va asigurati ca in tabela de standarde exista o inregistrare etc etc etc

Abia dupa ce pasii de mai sus (pentru simplitate nu i-am inclus pe toti) vor fi parcursi, veti putea trece la ada efectiva a noului titlu in baza de date. Dar pe masura ce tabelele asociate tabele “centrale” se vor inmulti, ma

de detaliere al datelor, pasii de mai sus vor fi tot mai multi. Puteti elimina acesti pasi premergatori, prin ofer facilitati de adaugare rapida de inregistrari in tabele respective.

Pentru a ne usura munca, vom incepe cu creerea diagramei si in MS-Access. Diagrama creata la inceput este SQL Server si nu este accesibila din MS-Access.

Pentru aceasta, in Access, dam click pe Database Diagrams si apoi dublu-click pe Create database diagram i

Selectam tabela tbl_Colectie si, pe rind, fiecare din celelalte tabele. Dupa aceasta, click pe butonul Close.

Ar trebui sa obtinem aceeasi diagrama ca si in SQL. Inchidem si salvam diagrama creata.

In Access, in Database Window, ne va aparea diagrama creata si salvata in pasii de mai sus.

In episodul urmator, vom incepe creerea formurilor principale. Pina atunci, va stau la dispozitie pentru intreb forumul asociat acestui tutorial.

Autor A

Tutorial Sql Server - Partea 6

Autor Alin Selic

Ultimul comentariu: "Unul dintre cele mai cuprinzatoare tutoriale de mssql"

Adauga comen Toate comentariile

Episodul 6 - Adaugarea functionalitatilor necesare Continuam dezvoltarea aplicatiei noastre cu extinderea formului principal prin adaugarea functionalitatilor necesare.

Practica m-a invatat ca e bine sa atribui nume sugestive diferitelor componente ale oricarui proiect care acce nominalizarea obiectelor si ca atribuirea acestor nume sa se faca in baza unui sablon. Asa ca, in timp, mi-am dezvoltat obieciul de a atribui nume pentru fiecare obiect definit in Access (si nu numai, dar luam acum in discutie acest aspect numai) in functie de tipul obiectului. Astfel, pentru un ListBox prefixul este lst, pentru combo-box prefixul este cbo si asa mai departe. Va puteti stabili singuri acest tip de regula, dar ideea este sa respectati aceasta regula intotdeauna, indiferent de amploarea proiectului. In timp, uitati amanuntele si la o eventuala depanare a aplicatiei sau un eventual upgrade sau modificare, va va fi greu daca nu aproape impos sa va amintiti logica in diferitele locuri ale aplicatiei.

In aceasta idee, vom avea urmatoarele obiecte in formul principal:  lstCDList – lista de cd-uri  btnAdd – butonul de adaugare  btnEdt – butonul de editare  btnDel – butonul de stergere  btnRpt – butonul pentru acces la rapoarte  btn_Iesire – butonul de inchidere a aplicatiei (il vom lasa cu nume diferit ca sablon de restul, pentru simp motiv ca deja e configurat cu un event si nu-l mai modificam)

Numele obiectelor se schimba in panoul Properties, tabul Other. Cateva cuvinte despre acest panou, Properti Fiecare obiect definit in aplicatia noastra, are asociate niste proprietati. Aceste proprietati depind de tipul obiectul si sunt impartite pe categorii (si afisate fiecare in tab-ul propriu). Aceste tab-uri sunt:  Format – proprietati care afecteaza formatarea obiectului la afisare  Data – proprietati legate de datele manipulate prin intermediul acelui obiect (control)  Event – proprietati legate de diferitele evenimente aparute in aplicatie si cum reactioneaza "controlul” respectiv la acel eveniment  Other – alte proprietati, specifice tipului de obiect in cauza  All – toate proprietatile de mai sus, indiferent de categorie, grupate alfabetic

Am mentionat termenul de evenimente (sau events) care apar in aplicatie. Foarte sumar, aceste evenimente ( events) sunt generate in parte de Windows, in parte de Access. Evenimentele sunt "semnale” emise de Wind si de Access prin care "semnalizeaza” faptul ca, de exemplu, s-a apasat un buton al mouse-ului, s-a apasat o tasta, s-a schimbat valoarea unui control (un checkbox, de exemplu) si altele. Aplicatia, prin intermediul actiunilor pe care le specificam la tabul Event, reactioneaza conform specificului event-ului in cauza. De exemplu, putem specifica faptul ca la fiecare click de mouse in lista de discuri (lstCDList) sa fie actualizate, partea dreapta, detaliile relativ la inregistrarea selectata prin acel click. Evident, fiecare event interceptat de Access se refera la eventuri care "tin” de Access. Este treaba Windows-ului sa gestioneze corect aceste aspe si nu vom insista deloc in aceasta directie.

Vom modifica acum, proprietatile obiectelor din formul principal dupa cum se poate vedea in imaginile care urmeaza.

Autor Alin Selic Tutorial Sql Server - Partea 7 (episodul 1)

Autor Alin Seli

Adauga comen Am ajuns cu aplicatia intr-un stadiu aproape de final. Mai avem de facut urmatoarele: 1. 2. 3. 4.

Creat raportul mentionat in finalul partii a 6-a a tutorialului Creat formul prin intermediul caruia vom oferi acces la rapoartele predefinite Testata aplicatia in ansamblu Concluzii

Creerea raportului Sa incepem prin a genera raportul nostru. La acest capitol, trebuie sa incepem cu citeva detalii.

Un raport contine 2 componente distincte: a) sursa datelor care furnizeaza datele care urmeaza a fi prezentat raport si b) raportul in sine care prin prisma designului sau, prezinta datele furnizate conform unei structuri s unei logici specifice acelui raport. Sursa datelor poate fi o tabela (cu sau fara criterii de filtrare sau ordonare datelor) sau o interogare mai complexa a tabelelor (cu scopul de a oferi spre afisare date din mai multe tabel Raportul in sine nu este altceva decit o definitie stocata in baza de date, definitie care este “interpretata” la ru time si rezultatul acestei “interpretari” este afisat in formatul definit.

Acestea fiind lamurite, sa trecem la definirea structurii datelor care urmeaza a fi afisate. Pentru aceasta, sa ne reamintim putin cele spuse despre raport in partea 6. “Inainte de a incheia partea a 6-a a tutorialului nostru, sa incercam sa ne definim un raport pe care sa-l generam in ultima parte a tutorialului. Acest raport ne dorim sa includa toate inregistrarile care reprezinta discuri date imprumut unor terti, cu toate detaliile asociate acestor discuri (titlu, data estimata a returului, e Totodata, dorim ca in acest raport sa fie evidentiate separat discurile a caror data de returnare e depasita ( de data generarii raportului).” Din cele de mai sus reiese ca vom avea nevoie de 2 criterii de departajare a datelor. Unul este indicatorul de propriu si celelalt, mai mult de evidentiere, data returnarii, in cazul in care discul este dat sau luat imprumut.

Pentru aceasta, ne vom folosi de o functie care intoarce ca rezultat un set de inregistrari care sa contina datel tabelele noastre, cu criteriile mentionate mai sus gata calculate.

Datorita unor incompatibilitati dintre MS Access si SQL Server la capitolul interpretarea codului Transact-S vom genera functia necesara raportului in SQL Enterprise Manager. Pentru a defini aceasta functie, parcurgem pasii descrisi in cele ce urmeaza:

In Enterprise Manager, expandata lista pina ajungeti la containerul Stored Procedures. Click dreapta pe aces selectata optiunea New Stored Procedure… Introducem urmatorul cod in fereastra afisata:

CREATE PROCEDURE dbo.prc_Raport @p_Data as smalldatetime AS BEGIN DECLARE @dData AS smalldatetime IF @p_Data = NULL SET @dData = @p_Data ELSE SET @dData = GetDate() SELECT dbo.tbl_Colectie.Titlu, dbo.tbl_Colectie.An, dbo.tbl_Colectie.NumeArtist, dbo.tbl_Colectie.DiscPropriu, dbo.tbl_Colectie.DataCumpararii,

dbo.tbl_Colectie.DataReturnarii, DATEDIFF(d,@dData,dbo.tbl_Colectie.DataReturnarii) AS 'Intirziere', dbo.tbl_Standarde.DenumireStanda dbo.tbl_GenuriMuzicale.DenumireGen, dbo.tbl_CaseDeDiscuri.DenumireCasa, dbo.tbl_Agenda.Nume, dbo.tbl_Agenda.Adresa, dbo.tbl_Agenda.Telefon, dbo.tbl_Agenda.Email, CASE dbo.tbl_Agenda.AgendaID WHEN NULL THEN CASE dbo.tbl_Colectie.DiscPropriu WHEN 1 THEN 'Disc propriu' ELSE 'Disc X' END ELSE CASE dbo.tbl_Colectie.DiscPropriu WHEN 1 THEN 'Date imprumut' ELSE 'Luate imprumut' END END AS Categorie, CASE dbo.tbl_Agenda.AgendaID WHEN NULL THEN 'Nul' ELSE 'Not nul' END AS 'Agenda ID' FROM dbo.tbl_Colectie INNER JOIN dbo.tbl_CaseDeDiscuri ON dbo.tbl_Colectie.CasaID = dbo.tbl_CaseDeDiscuri.CasaID INNER JOIN dbo.tbl_GenuriMuzicale ON dbo.tbl_Colectie.GenID = dbo.tbl_GenuriMuzicale.GenID INNER JOIN dbo.tbl_Standarde ON dbo.tbl_Colectie.StandardID = dbo.tbl_Standarde.StandardID LEFT OUTER JOIN dbo.tbl_Agenda ON dbo.tbl_Colectie.AgendaID = dbo.tbl_Agenda.AgendaID END GO In final, ar trebui sa obtineti urmatoarea functie:

Citeva cuvinte despre aceasta bucata de cod. Aceasta functie ne va returna inregistrarile din baza de date, cu anumite detalii asociate, calculate. Functia primeste ca parametru o data de referinta (@p_Data as smalldatet fata de care se vor calcula zilele de intirziere in returnarea discurilor (atit pentru cele luate imprumut, cit si p cele date imprumut). Aceasta data trebuie transmisa intr-un format recunoscut de SQL.

Se mai afiseaza detalii de genul “Disc propriu”, “Dat imprumut” sau “Luat imprumut”. Acestea sint de fapt categoriile pe baza carora sint grupate inregistrarile (asta era si o cerinta a raportului, daca ne amintim). Ace informatie este calculata in constructia de mai jos:

CASE dbo.tbl_Agenda.AgendaID WHEN NULL THEN CASE dbo.tbl_Colectie.DiscPropriu WHEN 1 THEN 'Disc propriu' ELSE 'Disc X' END ELSE CASE dbo.tbl_Colectie.DiscPropriu WHEN 1 THEN 'Date imprumut' ELSE 'Luate imprumut' END END AS Categorie,

Nu vom intra in detalii privind aceasta constructie, vom spune doar ca in cadrul unei instructiuni SELECT p folosi cuvintul-cheie CASE pentru a testa valoarea unui cimp si in functie de valoarea acestuia, sa operam ni schimbari sau sa efectuam niste calcule pe care sa le afisam in locul valorii efective a cimpului testat. Pentru multe detalii despre CASE, va invit sa consultati sistemul de help al SQL, SQL Books Online. Comutam in MS Access pentru a vedea procedura nou creata:

Procedura va aparea in containerul Queries din MS Access. Cu un dublu-click pe aceasta procedura, vom ob setul de inregistrari dorit:

Trebuie introdusa data de referinta. Click pe OK dupa ce ati introdus data si obtinem inregistrarile, ca in imaginea urmatoare:

OBSERVATIE: Daca doriti efectuarea de modificari in codul functiei descrise pina acum, nu folositi Access pentru ca altereaza functionalitatea. Exista incompatibilitati in modul de tratare a valorilor NULL intre Acce SQL.

Avem sursa datelor pentru raport. Putem trece la designul raportului. Pentru aceasta, parcurgem urmatorii pa Accesam containerul Reports.

Dublu click pe Create Report by using Wizard. Selectam din lista afisata de wizard elementul Procedure: prc_Raport si adaugam toate cimpurile afisate in stinga, cu click pe butonul > >.

Click pe Next.

Grupam datele pe cimpul Categorie, cu dublu click pe acel cimp. Rezultatul ar trebui sa fie similar cu cel ilu mai sus. Click pe Next.

Pentru a evidentia discurile cu zile de intirziere, specificam faptul ca dorim sortarea datelor pe cimpul Intirzi in mod descrescator, similar imaginii de mai jos:

Click pe Next.

Facem setarile referitoare la aspectul paginii similar cu cele de mai sus. Click pe Next.

Selectam stilul Corporate, click pe Next. NOTA: Puteti alege orice alt stil, va afecta doar aspectul raportului si continutul. Click pe Next.

Dam un nume raportului nostru: rpt_RaportGeneral. Click pe Finish. Pentru ca era selectata optiunea Preview the report, sintem rugati sa introducem data de referinta:

Si obtinem raportul nostru:

Nu prea arata bine, asa ca va trebui sa-l cosmetizam putin. Pentru aceasta, intram pe raportul nostru in modu Design, cu click pe butonul evidentiat in imaginea de mai sus cu un cerc rosu. Apare fereastra de mai jos:

Incepem sa modificam proprietatile raportului: Caption = Raport colectie Auto Center = Yes Titlu = Raport colectie

Pentru restul detaliilor (aramjare in pagina, setari de imprimanta, etc), am sa va las pe fiecare in parte sa va aranjati si sa va setati raportul conform dorintelor proprii. Eu am sa va prezint, ca si model, raportul in forma finala, asa cum l-am imaginat si aranjat eu. Referitor la posibilitatile de aranjare a cimpurilor pe raport, va stau la dispozitie pe forum. Si acum, sa trecem mai departe cu dezvoltarea aplicatiei noastre. Ansambluri Imobiliare, blocuri noi, anunturi imobiliare la Imobiliare-Rezidentiale.ro case / vile noi * apartamente de vanzare * apartamente noi Vitan * apartamente noi Drumul Taberei

Autor Alin Seli Tutorial Sql Server - Partea 7 (episodul 2)

Autor Alin Selic

Adauga coment

Crearea formului de acces la rapoarte Vom trece la creerea unui form de acces la rapoarte, din interfata, care sa fie activat la apasarea butonului Rapoarte din formul principal. Pentru inceput, vom crea formul cu controalele necesare, apoi vom trece la popularea acestui form cu datele relevante.

Click pe Create form in Design View.

Dimensionati formul afisat implicit pina ajunge la dimensiuni similare cu cele de mai sus. Vom avea nevoie urmatoarele controale:  Un Listbox pentru a afisa o lista cu rapoartele predefinite din aplicatie  Un buton pentru preview  Un buton de abandon si revenire in formul principal Le inseram pe rind si obtinem un aspect si continut al formului similar cu cel de mai jos:

Schimbam numele acestor controale, astfel:  Listabox = lstRaport  Preview = btnPreview  Abandon = btnCancel Eticheta listei o editam si trecem textul Rapoarte disponibile:

Urmeaza sa afisam numele rapoartelor predefinite in aplicatia noastra. Pentru aceasta, avemnevoie de doua coloane. Una in care sa includem numele raportului, asa cum l-am salvat in aplicatie, iar in cealalta sa afisam numele raportului, pe larg. Pentru aceasta, activam tab-ul Data si editam astfel: Proprietatea Row Source Type, trecem pe Value List:

Proprietatea Row Source:

Trecem urmatoarele valori: “rpt_RaportGeneral”,”Raport general”; (exact asa cum sint trecute aici, cu ; final care este delimitatorul de rind afisat in lista). In tab-ul Format, editam proprietatile conform imaginii de mai jos:

In combobox-ul de sus selectam item-ul Form:

Si modificam proprietatile afisate conform imaginii de mai jos:

In tab-ul Other:

Setam Allow Design Changes pe Design View Only. Urmeaza sa setam actiunile care sa fie intreprinse cind sint apasate butoanele incluse in form. Click dreapta pe butonul Abandon si selectata optiunea Build Event:

Selectam Code Builder si editam codul conform imaginii de mai jos:

Inchidem Visual Basic editor-ul si revenim in formul nostru. Click dreapta pe butonul Preview, Build Event, Code Builder si includem urmatorul cod:

Aici sint necesare citeva precizari. In bucata de cod de mai sus, ne-am folosit de un obiect special, Me. Acesta defineste elementul Access cure in cazul nostru formul curent. Odata scris in Visual Basic, sint afisate toate elementele definite in cadrul obiectului curent plus cele identificabile in cadrul aplicatiei (sa nu uitam ca in Access si implicit in VBA se poate lucra cu obiecte). Din lista afisata, puteti selecta controlul cu numele “lstRaport” care identifica lista c rapoartele definite in aplicatie. Daca ne amintim, in aceasta lista am inclus 2 coloane, in care am inclus astfe coloana 1 numele sub care este salvat raportul in baza de date, in coloana 2 o descriere generica a raportului respectiv. Ca si rezultat, sintaxa de mai sus, preia din controlul lstRaport valoarea din coloana 1 (adica nume sub care este salvat raportul in baza de date) si o returneaza Access pentru ca acesta sa identifice univoc rapo dorit pentru a-l afisa. Modul de afisare este specificat prin parametru acViewPreview. Inchidem si salvam formul:

Si acum sa facem o proba a formului creat pina acum.

Dupa cum se poate vedea, aplicatia lanseaza raportul dorit in executie si raportul respectiv asteapta ca param data de referinta la care se doreste raportul. In aceasta fereastra avem 2 optiuni: introducem manual o data calendaristica valida sau selectam din lista disponibila valoarea .

Selectind valoarea aplicatia va lua in calcul data curenta din sistem. In cazul in care se va selecta valoarea , aplicatia va genera un mesaj de eroare, pentru ca nu este specificata o valoare implicita pentru acest paramet

Oricare din variantele de mai sus este aleasa, aplicatia va afisa raportul pe ecran, existind posibilitatea tiparir acestuia.

Las la latitudinea fiecaruia dintre voi re-designul raportului, pentru ca dupa cum se vede, linia de detaliu nu incape pe o singura pagina.

Autor Alin Selic

Tutorial Sql Server - Partea 7 (episodul 3)

Autor Alin Selic

Ultimul comentariu: "Nu stiu de ce setari este nevoie pentru ca o baza de date creat in Access care functioneaza pe SQL server sa functioneze in reteaua locala??? Ma poate ajuta cineva Multumesc anticipat pentru idei."

Adauga coment Toate comentariile

Testarea aplicatiei Acum sa testam aplicatia. Aici am sa va las pe fiecare in parte sa faceti acest test. Eu am sa evidentiez direct unele lipsuri, pe care le-am lasat intentionat la urma. De ce ? Pentru ca am dorit sa evidentiez importanta analizei din mai multe puncte de vedere: functionalitati, interfata (formul principal), implementarea functionalitatilor in diferite locuri in cadrul aplicatiei. Deficienta majora a aplicatiei o reprezinta faptul ca nu exista formuri de actualizare a datelor statice (gen cataloage) care sa fie afisate in combobox-urile corespunzatoare. Aceasta lipsa este evidenta in formul de editare / adaugare discuri.

Intrebarea apare cind incercam sa modificam, de exemplu, genul unui disc si genul dorit nu este regasit in lis afisata.

Cum corectam aceasta deficienta ? Putem adauga, linga fiecare lista de acest tip, cite un buton care sa active un form de actualizare a tabelelor care contin datele respective. Formurile necesare vor trebui sa permita atit adaugarea rapida de date, cit si editarea datelor existente.

Sint necesari trei pasi majori: 1) modificarea designului formului de editare / adaugare a unui titlu, 2) creerea cite unui form de adaugare rapida a datelor dorite specific fiecarui combobox si 3) creerea unui form general care sa contina tabelele cu datele existente pentru a putea fi modificate. Va voi prezenta modul de creere a formului general si a unui form de adaugare rapida si va las cu titlu de exercitiu creerea celorlalte formuri.

Autor Alin Selic

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF