Datu bāzes tehnoloģijas



Datorzinātnes un Informācijas tehnoloģijas fakultāte

Mācību kurss

Datu bāzes tehnoloģiju pamati

6. praktiskais darbs

Programmēšana datu bāzes serverī

Students: .................................

Pasniedzējs: .............................

20013. gads

ANOTĀCIJA

Darbā ir realizēta datu izgūšanu no ārējiem datu avotiem (MS Excel un MS Access), izmantojot ADO tehnoloģiju.

Darbā ir aprakstīta iespēja izveidot standarta, ka arī dinamiskas formas MS Access vidē. Tā pat ir aprakstīta iespēja, kā ar VisualBasic valodu ir iespējams uzrakstīt šāda veida programmas, jeb formas, kā pieslēgties dažādām datu bāzēm un ka ar ADO tehnoloģijas palīdzību ir iespējams veikt datu izgūšanu no pieslēgtajiem datu avotiem. Papildus ir pievienota iespēja izgūt meta datus.

Darbu izpildīju MS Access un MS Excel 2003 vidēs, ar Windows XP Proffesional operētājsistēmu.

Darba saturā ir 34 attēli, 3 tabulas, 5 nodaļas, secinājumi, saturs un literatūras avoti. Kopumā darbs ir izklāstīts 45 lappusēs.

SATURS

1. UZDEVUMA NOSTĀDNE 4

2. DATU AVOTI UN TO IZVEIDE 5

2.1. Datu bāze MS ACCESS vidē 5

2.2. Datu bāze MS Excel vidē 7

3. ADO TEHNOLOĢIJA un VBFA 8

3.1. VBFA 8

3.2. ADO 11

3.3. ADO objektu modelis 12

3.3.1. Objekts Connection 12

3.3.2. Objekts Command 13

3.3.3. Objekts Parameter 13

3.3.4. Objekts Recordset 13

3.3.5. Objekts Field 14

3.3.6. Objekts Error 15

3.3.7. Objekts Property 15

3.4. ADO izmantošanas iespējas 15

4. FORMU UN MODUĻU IZVEIDE 17

4.1. Galvenā forma 18

4.2. Pogu un teksta lauku apstrāde 24

4.2.1. Opciju poga 24

4.2.2. Poga „...” 25

4.2.3. Poga „Refresh Data” 27

4.2.4. Saraksta lauks „Field list” 28

4.2.5. Saraksta lauks „Table list” 29

4.2.6. Poga „Get Data” 30

4.2.7. Poga „Clear All” 30

4.3. Datu izgūšana 31

4.4. Datu attēlošana 32

5. DATU IZGŪŠANAS PIEMĒRI 36

5.1. Dati no MS Access datu bāzes 37

5.2. Dati no MS Excel elektroniskās grāmatas 41

SECINĀJUMI 44

IZMANTORIE AVOTI 45

1. UZDEVUMA NOSTĀDNE

o Izveidot vienu formu ar elementiem, kuros lietotājs var ievadīt kritērijus datu izlasei no ārējām datu bāzēm;

o Realizēt datu izgūšanu MS Access datu bāzēm, MS Excel grāmatām;

o Jāizveido lietojums (Forma - sākums, apmaiņa, forma - beigas), lai griestos, ievadītu SQL komandas un iegūtu atbildi no dažādiem datu avotiem;

o Jāizveido lietojums (Forma1 Forma2), lai no datu avotiem iegūtu meta datus (Tabulu nosaukumi, lauku nosaukumi);

o Izgūtos datus attēlot dinamiskā formā;

o Realizēt datu izgūšanu izmantojot SQL vaicājumu;

o Izmantot ADO objektu tehnoloģiju.

DATU AVOTI UN TO IZVEIDE

2.1. Datu bāze MS ACCESS vidē

Tā kā definētā datu bāzes struktūra atbilst tādai, kādu to izveidoju 2.laboratorijas darbā, ņemšu šo pašu, jau pirms tam izveidoto datu bāzi MS Access vidē ar Case rīka Power Designer 11 palīdzību.

Minētās datu bāzes nosaukums ir „Autostāvvietas” un tajā ir 3 tabulas ar sekojošiem kolonnu nosaukumiem:

o Autostāvvietas (skat. 2.1.1.att.)

▪ Autostāvvietas ID

▪ Autostāvvietas nosaukums

▪ Autostāvvietas telefons

▪ Autostāvvietas adrese

▪ Autostāvvietas E-pasts

▪ Vietu skaits

▪ Darbinieku skaits

▪ Dibināšanas datums

o Klienti (skat. 2.1.2.att.)

▪ Klienta ID

▪ Klienta vārds

▪ Klienta uzvārds

▪ Klienta adrese

▪ Klienta telefons

▪ Klienta dzimums

o Mašīnas (skat.2.1.3.att.)

▪ Mašīnas ID

▪ Mašīnas numurs

▪ Mašīnas marka

▪ Mašīnas izlaiduma gads

▪ Mašīnas krāsa

[pic]

Starp šīm tabulām, protams, ir arī attiecīgās saites (skat. 2.1.4.att.):

➢ Saite 1 pret daudziem starp Autostāvvietas un Klienti;

➢ Saite 1 pret daudziem starp Klienti un Automašīnas;

Kā redzams, šo datu bāzi un līdz ar to arī datu bāzes tabulas, var droši izmantot arī piektajā laboratorijas darbā, ko arī darīšu.

2.2. Datu bāze MS Excel vidē

Tā kā nevienā no iepriekšējiem darbiem nebija jāizveido tabulas MS Excel vidē, tad to izdarīsim tagad.

Nolēmu izveidot vienkāršu tabulu (par autostāvvietas automašīnām), jo šajā darbā ir svarīgi nevis mācēt izveidot lielu datu bāzi MS Excel vidē, bet gan svarīga ir spēja importēt šos datus uz MS Access, lai varētu no dotās tabulas izgūt datus.

Tātad, izveidoju vienkāršu tabulu (skat. 2.2.1.att.).

[pic]

2.2.1.att. Vienkārša tabula „AUTO” MS Excel vidē

Šai tabulai izveidoju sekojošus laukus:

o Automasinas_ID – automašīnas identifikācijas numurs (lauks ar tipu NUMBER);

o Marka – automašīnas marka (lauks ar tipu TEXT);

o Izlaiduma_gads – automašīnas izlaiduma gads (lauks ar tipu NUMBER);

o Krasa - automašīnas krāsa (lauks ar tipu TEXT).

Izveidotai tabulai devu arī nosaukumu. To var izdarīt iedalot visu izveidoto tabulu ar visiem tās laukiem un virs tabulas laukā „Name Box” ierakstot tabulas nosaukumu (skat.2.2.2.att.). Izveidotai tabulai devu nosaukumu AUTO.

[pic]

2.2.2.att. Tabulas nosaukuma definēšana

Tabulai dot vārdu var arī citā veidā: izvēloties MS Excel galvenajā izvēlnē Insert ( Name ( Define, kur atvērtajā logā ir jāuzraksta tabulas vārdu un tabulas teritorijas robežas.

ADO TEHNOLOĢIJA un VBFA

3.1. VBFA

Lai strādātu ar ADO(Active Data Object) objektiem, MS Access’ā, tiek izmatota programmēšanas valoda Visual Basic(VBA). Programmas kods tiek ierakstīts moduļos.

Ir pieci moduļu veidi:

1. Standartmoduļi - lieto funkcijas definēšanai.

2. Formu moduļi – moduļi kuri ir orientēti uz formas notikumiem.

3. Formas īpašība -norāda vai formai var būt piesaistīti moduļi.

4. Pārskatu moduļi - moduļi kuri ir orientēti uz pārskata notikumiem

5. Klases moduļi - lieto objektu, to īpašību un metožu veidošanai.

Moduli var iekļauj sevi:

• mainīgus(objektus)

• procedūras

• funkcijas

Ir divi veidi ka var definēt mainīgos Access programmā:

• standarta definēšana: Dim Mainigais As Datu_tips

• ar speciālus simbolus: Mainigais$ = Vērtība

1. tabula

VBA datu tipi

|VBA datu tipi |

|Datu tipa apzīmējums |Definētājsimbols |Datu tips |

|Byte |Nav |Baits |

|Integer |% |Vesels skaitlis |

|Boolen |Nav |Loģiskais tips |

|Long |& |Garais veselais skaitlis |

|Single |! |Reāls skaitlis |

|Double |# |Reāls skaitlis ar dubultprecizitāti |

|Currency |@ |Naudas |

|String |$ |Teksta virkne |

|Date |Nav |Datums |

|Variant |bez definējuma |Jebkurš tips |

Var ierobežot piekļuvi mainīgajiem. To var izdarīt ar specialiem parametriem:

• Privat - mainīgs ir pieejams tikai procedūrā, kur tas tiek izveidots

• Public - mainīgais ir pieejams arī citās procedūras.

Objektu definēšana ir līdzīga mainīgu definēšanai. Lai izveidotu jaunu objektu tiek lietota komanda New:

Set Mainīga New Objekta_tips

Piešķirt vērtību objektam var ar komandas Set palīdzību:

Set Mainīga = Vērtība

Konstantas var definēt ar komandas const palīdzību:

const Konstante = Vērtība

Procedūras definējums un izsaukums:

Sub Procedūras_nosaukums(Formālo_parametru_saraksts) Komandas

End Sub

Call Procedūras_nosaukums (Faktiskie_parametri)

Funkcijas definējums izsaukums:

Function Funkcijas_nosaukums (Formālo_parametru_saraksts)

Komandas

End Function

Mainīgā_nosaukums = Funkcijas_nosaukums(Faktiskie_parametri)

Masivu definēšana:

Dim Masīvs (Elementu_Skaits) As Elementu_tips - viendimensiju masīvs

Dim Masīvs (Elements_n To Elements_m) As Elementu_tips – masīva elementu definēšana no Elements_n līdz Elements_m

Dim Masīvs (Elementu_Skaits_n, Elementu_Skaits_m, Elementu_Skaits_k) As Elementu_tips – daudzdimensiju masīva definēšana.

Dinamisko masīvu definēšana:

Dim Masīvs() As Datu_tips – masīva definēšana

ReDim Preserve Masivs (Elementu_Skaits_n, Elementu_Skaits_m, Elementu_Skaits_k) – izveidot masīvu

ReDim Masivs (1, 2, 3) - izveidot masīvu

Saliktas datu struktūras definēšana:

Type Nosaukums

Mainīgā_nosaukums As Datu_tips

Mainīgā_nosaukums As Datu_tips

...

End Type

Iezīmes un pārejas:

On Error GOTO Iezīme

...

Iezīme:

...

Funkcija IIF:

IIF (nosacījums; nosacījums izpildās: vērtība; nosacījums neizpildās: vērtība)

Konstrukcija If ... Then ...Else ...End If:

If nosacījums Then

komandas izpildās, ja nosacījums izpildās

Else

komandas izpildās, ja nosacījums neizpildās

End If

Konstrukcija If ... Then ...ElseIf ...End If:

If nosacījums1 Then

darbības komandas izpildās jā nosacījums1 izpildās

ElseIf nosacījums2 Then

darbības komandas izpildās, ja nosacījums1 neizpildās, bet izpildās nosacījums2

End If

Konstrukcija Select Case ... End Select:

Select Case mainīgais

Case vērtība, vērtība

komandas izpildās jā mainīgais ir vienāds ar kādu no vērtībām

Case vērtība To vērtība

komandas izpildās jā mainīgais ir vienāds ar kādu vērību no intervāla

Case Else

Komandas izpildās ja ne izpildās iepriekšējas nosacījumi

End Select

Cikli For … Next tiek lietoti objektiem un kolekcijām

Cikls For Each elements In grupa

komandas

Exit For

komandas

Next elements

For Skaitītājs = Sākuma_vērtība To Beigu_vērtība Step Soļa_vērtība

komandas

If nosacījums

Exit For

End If

komandas

Next Skaitītājs

Cikli Do While ... Loop:

Do While nosacījums

komandas

If nosacījums

Exit Do

End If

komandas

Loop

Do

komandas

If nosacījums

Exit Do

End If

komandas

Loop While nosacījums

Lai piesaistītos Excel darba grāmatai, pievienojoties ir jānorāda papildus īpašība Exended Properties, kas norāda, ka pievienošanās notiek Excel datubāzei. Šeit atkarībā no faila, kuram mēs gribam pievienoties vajag norādīt šī faila identifikatoru. Identifikatori doti tabulā:

2.tabula

Piesaistes identifikatori

|Datubāze |Norādāmā vērtība |

|dBASE III |dBASE III; |

|dBASE IV |dBASE IV; |

|dBASE 5 |dBASE 5.0; |

|Paradox 3.x |Paradox 3.x; |

|Paradox 4.x |Paradox 4.x; |

|Paradox 5.x |Paradox 5.x; |

|Excel 3.0 |Excel 3.0; |

|Excel 4.0 |Excel 4.0; |

|Excel 5.0/Excel 95 |Excel 5.0; |

|Excel 97 |Excel 97; |

|Excel 2000 |Excel 8.0; |

|HTML Import |HTML Import; |

|HTML Export |HTML Export; |

|Text |Text; |

|ODBC |ODBC; |

| |DATABASE=database; |

| |UID=user; |

| |PWD=password; |

| |DSN=datasourcename; |

3.2. ADO

ADO (ActiveX Data Objects) ir Microsoft jaunākais augsta līmeņa Interfeiss, kurš ir domāts sniegt ārējo datu manipulēšanu (un piekļuvi pie tiem) iespējas klienta lietojumam. ADO ir programmas līmeņa interfeiss pie OLE DB (Object Linking and Embedding Data Bases). Šīs interfeiss ir ļoti ērts un spēcīgs. ADO un OLE DB kopā veido Universālu Datu Pieejas tehnoloģiju – UDA (Universal Data Access). Neskatoties uz to, ka ADO ir OLE DB augstāka programmas līmeņa interfeiss, ADO izmanto OLE DB kā datu gādnieku (uz doto momentu tas ir pārsvarā Relāciju Datu Bāzes provaideri, kaut gan jau sāk parādīties datu gādnieki nerelāciju datu avotiem un elektronisku pastu sistēmām). ADO tehnoloģija mantoja labākas īpašības no DAO, RDO un citam datu pieejas tehnoloģijām. Ir vērts atzīmēt, ka korporācija Microsoft atklāti apgalvo, ka tuvākajos laikos ADO aizvietos lielu daļu no tagad izmantojamiem datu pieejas tehnoloģijām, tajā skaita arī Microsoft produkti – DAO un RDO.

Modulis sastāv no:

1. apraksta daļas (declarations) – mainīgo un konstanšu definējumi. Manīgie var būt lokāli (private) un globāli (public).

2. apakšprogrammu (procedūru) definējumiem;

3. funkciju definējumiem.

Procedūras definējums:

Sub Procedūras_nosaukums

Komandas

End Sub

Procedūras izsaukums:

Call Procedūras_nosaukums (Faktiskie parametri)

Piemēram: Call Somefunc(mainiīgais1,mainīgais2,..., mainīgaisN)

Funkcijas definējums:

Function Funkcijas_nosaukums (Formālo_parametru_saraksts)

Komandas

End Function

Funkcijas izsaukums:

Mainīgā_nosaukums = Funkcijas_nosaukums(Faktiskie_parametri)

3.3. ADO objektu modelis

ADO sastāv no sekojošiem pamat komponentiem. To skaits ir daudz mazāks par DAO un RDO komponentu skaitu, kas padara ADO tehnoloģiju vienkāršāku, salīdzinājumā ar DAO, RDO u.c. Kā arī mazu ADO objektu un kolekciju skaitu dēl to ir viegli izmantot interneta lietojumos.

Ir četras kolekcijas:

▪ Fields;

▪ Parametrs;

▪ Errors;

▪ Properties.

Galvenā no tiem ir Properties, jo tā iekļauj sevi tos komponentus, kurus neizmantojot nav iespējams tikt pie ārējiem un iekšējiem datiem. Tie ir aprakstīti 2.tabulā:

3.tabula

ADO objektu apraksts

|Objekts |Apraksts |

|Connection |Ar šī objekta palīdzību tiek izveidots savienojums starp lietojumu un datu avotu. |

|Command |Izmantojot šo objektu, tiek izpildītas dažādas komandas, kuras datu avots ir spējīgs izpildīt. |

|Parameter |Ar šī objekta palīdzību tiek veidoti objekta Command parametri, lai izpildītu parametriskos vaicājumus. |

|Recordset |Ar šī objekta palīdzību notiek visa veida darbības ar datiem. |

|Field |Izmantojot objektu Field, iespējams strādāt ar objekta Recordset laukiem |

|Error |Ar šī objekta palīdzību iespējams apstrādāt kļūdas, kas radušās darbā ar datu avotu. |

|Property |Izmantojot objektu Property, iespējams definēt jaunas objekta īpašības. |

3.3.1. Objekts Connection

Kā parāda objekta nosaukums, izmantojot šo objektu, tiek izveidots savienojums (connection) starp lietojumu un datu avotu. Ar objekta metodes Execute palīdzību iespējams izpildīt dažāda veida komandas. Ja komandas rezultāts ir rindu kopa, automātiski tiek izveidots objekts Recordset, kas satur šo rindu kopu. Ja rezultāts ir sarežģītāks, nepieciešams izveidot jaunu objektu Recordset, jāsasaista tas ar attiecīgo objektu Connection un jāatver kursors.

Objekta īpašības ļauj definēt dažādus savienojuma parametrus: pievienošanās rindu (connection string), komandas izpildes un savienojuma nodibināšanas maksimālo pieļaujamo laika intervālu, savienojuma datu avotu, kursoru atrašanās vietu (klienta vai servera pusē), datu pieejas tiesības.

Objekta metodes paredzētas komandu izpildīšanai, savienojumu izveidošanai un pārtraukšanai, kā arī transakciju veikšanai.

Datu avota pieejas nodrošinātāju iespējams norādīt dažādos veidos: definējot īpašību Provider, veidojot atbilstošu pievienošanās rindu vai pat, izmantojot metodi Open. Nodrošinātājs pēc noklusēšanas ir MSDASQL (Microsoft OLE DB provider for ODBC).

Svarīgākās no objekta Connection īpašībām:

Pievienošanās rinda — ConnectionString

Nosaka kursoru atrašanās vietu — CursorLocation

Nosaka iespējas rediģēt datus — Mode

Nosaka izmantojamo OLE DB nodrošinātāju — Provider

Nosaka, vai vaicājums vēl tiek izpildīts — StillExecuting

Vaicājuma tips — Type

Svarīgākās no objekta Connection metodēm:

Transakcijas uzsākšana — BeginTrans;

Transakcijas apstiprināšana — CommitTrans;

Transakcijas atsaukšana — RollbackTrans;

Asinhroni izpildītu metožu Execute vai Open atcelšana — Cancel

Vaicājuma, SQL izteiksmes vai glabājamās procedūras izpildīšana — Execute

Savienojuma nodibināšana ar datu avotu — Open

Saglabā objekta Recordset (sk. tālāk) saturu failā — Save

3.3.2. Objekts Command

Ar objekta Command palīdzību tiek veidoti vaicājumi un citas komandas, ko var izpildīt datu avots. Šis objekts ADO modelī nav obligāts, jo daudzi datu avoti neuztur komandu izpildīšanu, taču šāds objekts eksistē, lai to varētu izmantot datu avoti, kas spēj izpildīt komandas.

Komandas var būt gan vienkārši SQL vaicājumi, gan datu avota glabājamo procedūru izsaukumi. Komandas var tikt izpildītas, izmantojot metodi Execute vai arī izveidojot objektu Recordset un sasaistot to ar attiecīgo objektu Command, kad tiek atvērts kursors.

Objekts Command satur objektu Parameter kolekciju. Ja datu avots spēj apstrādāt komandas ar parametriem, kolekcija Parameters saturēs vienu objektu Parameter katram parametram.

Svarīgākās no objekta Command īpašībām:

Norāda objekta aktīvo savienojumu ar datu avotu — ActiveConnection

Komandas teksts — CommandText

Komandas tips — CommandType

Nosaka komandas izpildes stāvokli — State

Svarīgākās no objekta Command metodēm:

Atceļ komandas izpildi — Cancel

Izveido objektu Parameter (sk. tālāk) — CreateParameter

Komandas izpildīšana — Execute

3.3.3. Objekts Parameter

Ar šī objekta palīdzību tiek veidoti objekta Command parametri, lai izpildītu parametriskos vaicājumus.

Svarīgākās no objekta Parameter īpašībām:

Nosaka parametra veidu — Direction

Objekta vērtība — Value

3.3.4. Objekts Recordset

Šis objekts ADO objektu modelī ir vissarežģītākais. Galvenokārt tas ir tādēļ, ka tas veic visas darbības, kas saistītas ar kursoru apstrādi. Lai gan tas ārēji izskatās līdzīgs attiecīgajiem objektiem iepriekš izstrādātajos objektu modeļos, tomēr tas satur virkni uzlabojumu, piemēram, ir likvidēti nevajadzīgi elementi un mainītas dažas noklusētās vērtības, kas bija nepieciešams sakarā nelietderīgu veco vērtību lietošanu jaunajās tehnoloģijās.

Tas sastāv no rindām un laukiem līdzīgi tabulai. Tas var saturēt arī datus no nerelāciju datu avota, jo ADO ir balstīts uz OLE DB, kas spēj piekļūt datiem jebkurā datu avotā, tai skaitā arī nerelāciju datu bāzēs. Izmantojot objektu Recordset iespējams veikt datu buferizāciju, rediģēšanu un veikto izmaiņu nosūtīšanu datu avotam. Rindu kopu, kuru satur objekts, iespējams gan pārlūkot, gan kārtot, kā arī veikt dzēšanas, pievienošanas un rediģēšanas operācijas.

Lai gan objekts Recordset ir cieši saistīts ar objektu Connection, ne vienmēr nepieciešams veidot objektu Connection, lai strādātu ar rindu kopu. Iespējams izveidot tikai objektu Recordset un ar to strādāt. Taču tas nenozīmē, ka objekts Connection netiek izveidots. Tas tiek izveidots, jo tomēr ir nepieciešams savienojuma ar datu avotu nodrošināšanai, taču tas nav tieši redzams un nav nepieciešamības to atsevišķi definēt un izveidot.

Svarīgākās no objekta Recordset īpašībām:

Tekošā ieraksta numurs — AbsolutePosition

Norāda aktīvo savienojumu ar datu avotu — ActiveConnection

Nosaka, vai tekošā ieraksta pozīcija atrodas pirms pirmā ieraksta — BOF

Nosaka, vai tekošā ieraksta pozīcija atrodas aiz pēdējā ieraksta — EOF

Ieliktnis, ar kura palīdzību iespējams identificēt katru ierakstu — Bookmark

Nosaka kursoru atrašanās vietu — CursorLocation

Nosaka kursora tipu — CursorType

Nosaka tekošā ieraksta modificēšanas iespējas — EditMode

Definē filtru — Filter

Nosaka maksimālo ierakstu skaitu — MaxRecords

Ieraktu skaits — RecordCount

Definē vienu vai vairākus laukus, pēc kuriem ieraksti tiek šķiroti — Sort

Nosaka objekta datu avotu — Source

Svarīgākās no objekta Recordset metodēm:

Jauna ieraksta pievienošana — AddNew

Atceļ izdarītās izmaiņas — Cancel

Izveido objekta dublikātu — Clone

Tekošā ieraksta vai ierakstu grupas dzēšana — Delete

Tekošā ieraksta modificēšana — Edit

Tekošā ieraksta pozīcijas maiņa — Move, MoveFirst, MoveLast, MoveNext, MovePrevious

Tiek atvērts kursors — Open

Objekta satura atjaunināšana, atkārtojot bāzes vaicājuma izpildi — Requery

Saglabā objekta saturu failā — Save

Objekta indeksa pārmeklēšana — Seek

Izdarīto ieraksta izmaiņu saglabāšana objektā — Update

Veic izdarīto izmaiņu saglabāšanu pakotnes veidā — UpdateBatch

3.3.5. Objekts Field

Izmantojot objektu Field, iespējams strādāt ar objekta Recordset laukiem. Iespējams nolasīt gan to vērtības, gan tipu un lielumu. Visi objekta Recordset objekti Field veido kolekciju Fields.

Svarīgākās no objekta Field īpašībām:

Lauka faktiskais garums — ActualSize

Lauka definētais garums — DefinedSize

Lauka vērtība pirms izmaiņu izdarīšanas — OriginalValue

Lauka tips — Type

Lauka vērtība — UnderlyingValue

3.3.6. Objekts Error

Ar šī objekta palīdzību iespējams apstrādāt kļūdas, kas radušās darbā ar datu avotu. Šis objekts arī nav obligāts, jo to nepieciešams lietot tikai tad, ja vienas darbības izpildes laikā var rasties vairākas kļūdas uzreiz. Šādas situācijas biežāk var rasties sistēmās, kas veidotas pēc klienta/servera principa. Piemēram, transakcija sastāv no vairākām komandām. Ja šīs transakcijas izpilde bijusi neveiksmīga, nepieciešams identificēt tās komandas, kuras ir izraisījušas kļūdas. Tāpēc informācija par transakcijas kā tādas neveiksmīgu izpildi nav pietiekama.

Svarīgākās no objekta Error īpašībām:

Kļūdas apraksts — Description

Kļūdas numurs — Number

Objekts vai lietojums, kas ģenerējis kļūdu — Source

3.3.7. Objekts Property

Katram objektam piemīt savas īpašības. Izmantojot objektu Property, iespējams definēt jaunas objekta īpašības. Ar šī objekta palīdzību OLE DB nodrošinātāji pievieno ADO objektu modeļa objektiem jaunas īpašības.

Svarīgākās no objekta Property īpašībām:

Īpašības tips — Type

Īpašības vērtība — Value

3.4. ADO izmantošanas iespējas

ADO tehnoloģija tika radīta kā universāls līdzeklis datu izguvei no visdažādākajiem datu avotiem. Tā dod iespēju piekļūt datiem gan relāciju, gan nerelāciju datu avotos. Galvenais priekšnoteikums datu izguves iespējamībai ir OLE DB nodrošinātāja eksistence attiecīgajam datu avotam, jo ADO izmanto OLE DB tehnoloģiju datu izguvei. Faktiski ADO ir OLE DB patērētājs.

ADO ir veidots kā iepriekšējo datu izguves tehnoloģiju labāko īpašību apvienojums. Tādēļ tas tāpat kā RDO uztur iespēju asinhroni izpildīt vaicājumus un nodibināt savienojumus ar datu avotiem, spēj apstrādāt notikumus un izpildīt glabājamās procedūras. Savukārt datu rediģēšana un pārmeklēšana tiek realizēta līdzīgi kā DAO. Arī ieliktņu realizācijas mehānisms ir līdzīgs DAO izmantotajam mehānismam. Protams, arī ADO spēj apstrādāt vairākas kļūdas, kas radušās vienas darbības rezultātā.

Galvenās ADO priekšrocības salīdzinājumā ar DAO un RDO tehnoloģijām ir spēja apstrādāt ne tikai relāciju datus, bet arī nerelāciju. Piemēram, daudzdimensiju datu bāzes datus, e-pasta sistēmu datus, CAD/CAM sistēmu datus un daudzu citu datu avotu datus. Mūsdienās nepieciešamība apstrādāt nerelāciju datus aizvien pieaug, jo informācijas plūsmas organizācijās un uzņēmumos kļūst aizvien sarežģītāka un nevienmērīgāka.

Vēl viena ADO tehnoloģijas priekšrocība ir tās optimizācija darbam Internet tīklā. Piemēram, objektu modeļa vienkāršība samazina nepieciešamos atmiņas resursus, kas ir kritisks raksturlielums Internet lietojumam ar potenciāli iespējamu lielu skaitu lietotāju.

Taču ADO tehnoloģijas pārsvars pār citām datu izguves tehnoloģijām ir izveidojies pamazām un ADO pirmās versijas nebija tik spēcīgas kā DAO tehnoloģija tai pat laikā. Tikai ADO 2.1 versija tika papildināta ar ADOX (ActiveX Data Objects Extensions for DDL and Security) — ADO tehnoloģijas paplašinājums, kas ļāva ne tikai izveidot jaunu datu bāzi un pievienot tai jaunas tabulas, bet arī regulēt lietotāju un to grupu atļaujas veikt dažādas operācijas ar datu bāzi. ADO 2.6 versija ir papildināta ar jaunu paplašinājumu — MD (Multidimensional), kas uztur darbu ar daudzdimensiju datu avotu.

Iespēja lietot šādus paplašinājumus paver iespējas ADO tehnoloģiju uzlabot un modernizēt atkarībā no nepieciešamības, nepārveidojot tehnoloģiju kā tādu.

FORMU UN MODUĻU IZVEIDE

Galveno formu un funkcijas es izveidoju atsevišķā MS Access projekta failā MY_db5.adp, kuru nepiesaistīju nevienam serverim. Pēc tam, kad projekta fails tika izveidots un saglabāts, datubāzes izvēlnē izvēlējos iedaļu Modules, kurā izvēlējos iespēju New. Pēc šīs darbības atveras jauns logs (skat. 4.1.att.)

[pic]

4.1.att. Visual Basic For Aplications logs

Visas funkcijas un procedūras es uzrakstīju ar iekšējo MS Access programmēšanas valodu VBFA (Visual Basic for Aplications).

Integrētā Visual Basic vidē ir iespējams veikt to pašu, ko jebkurā citā programmēšanas vidē. Kodu uz sintakses kļūdām pārbauda kompilējot. Lai kompilētu kodu no galvenās izvēlnes jāizvēlas Debug ( Compile (skat. 4. 2.att.). Pēc kompilācijas ar dzeltenu tiek attēlotas visas kļūdas un tiek izvadīts kļūdas ziņojums, kāpēc kļūda ir radusies.

[pic]

4. 2.att. Koda kompilēšanas darbība

Kad kodi ir nokompilēti, ir jāpalaiž izveidotais kods. To izdara izvēloties no augšējās rīku joslas Run ( Run Sub/UserForm, vai arī jānospiež taustiņš „F5” (skat. 4. 3.att.).

[pic]

4. 3. Koda palaišana

Tāpat kā citās programmēšanas vidēs, arī šeit ir iespējams pieslēgt arējas bibliotēkas. To dara no galvenās izvēlnes izvēloties Tools –> References. (skat. 4.4.att.)

[pic]

4.4.att. Ārējo bibliotēku pieslēgšana

Aplūkojot pieejamās bibliotēkas, secināju, ka visas nepieciešamās jau ir pieslēgtas.

4.1. Galvenā forma

Tagad, kas esam iepazinušies ar to, kā strādāt VBFA vidē, varam sākt galvenās formas izveidi.

Jau atvērtajā jaunajā VBFA logā ierakstam formas izveides kodu (skat. 4.1.1.att.).

[pic]

4.1.1.att. Galvenās formas izveides kods

Tagad sniegšu šī koda attēlojumu, kā arī centīšos to nedaudz komentēt.

Option Compare Database

‘Formas veidošana

Sub Jaunas_formas_veidosana()

Dim main_forma As Form

‘”Sablons_F" ir speciāli izveidota forma, lai norādītu formas noformējumu (arī satāvdaļas:Header,Footer, ...)

Set main_forma = createForm(, "Sablons_F")

main_forma.Caption = "mainform"

DoCmd.Save , "mainform"

DoCmd.OpenForm "mainform", acDesign

DoCmd.Maximize

‘formai noņemam navigācijas pogas, uzdodam formas platumu, noņemam skreollera pogas, ierakstu kontroles pogas, u.c.

.RecordSelectors = False

.NavigationButtons = False

.ScrollBars = Neither

.DividingLines = False

.AutoResize = True

.AutoCenter = True

.BorderStyle = 1

.ScrollBars = 0

.ControlBox = False

.width = 6150

‘uzstādam formai augstumu

Forms!mainform.Section(acDetail).height = 7500

‘Sākam elementu veidošanu formā

Dim elem_0 As Control

‘Formas virsraksts

Set elem_0 = CreateControl("mainform", acLabel, acDetail, "", "SQL REDAKTOR", _

1500, 150)

elem_0.Name = "Virsraksts"

‘Virsrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With elem_0

.width = 3300

.height = 500

.ForeColor = 12615680

.FontName = "Abduction II"

.FontSize = 14

End With

Dim opt_gr As Control

‘opciju grupas rāmītis

Set opt_gr = CreateControl("mainform", acOptionGroup, acDetail, "", "", _

260, 650, 5400, 300)

opt_gr.Name = "dbTypeFrame"

Dim m_elements_1 As Control

‘uzraksts

Set m_elements_1 = CreateControl("mainform", acLabel, acDetail, "", "Local Data Base", _

2500, 700)

‘Uzrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With m_elements_1

m_elements_1.Name = "T_1"

.ForeColor = 12615808

.FontName = "Umbra TL Baltic"

.FontSize = 8

.width = 1500

.height = 300

End With

Dim m_elements_2 As Control

‘opciju poga

Set m_elements_2 = CreateControl("mainform", acOptionButton, acDetail, "", "", _

2300, 700)

m_elements_2.Name = "OptionServer"

Dim m_elements_3 As Control

‘uzraksts

Set m_elements_3 = CreateControl("mainform", acLabel, acDetail, "", "Data Base", _

300, 900)

m_elements_3.Name = "T_2"

‘Uzrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With m_elements_3

.FontName = "tabor handwriting"

.ForeColor = 8388608

.FontSize = 12

.width = 1000

.height = 500

End With

Dim m_elements_4 As Control

‘teksta ievades lauks

Set m_elements_4 = CreateControl("mainform", acTextBox, acDetail, "", "", _

300, 1200, 4900, 300)

m_elements_4.Name = "path"

‘uzstādam, ka sakumā lauks nebūs aktīvs

With m_elements_4

.Enabled = no

End With

Dim poga_search As Control

‘poga „...”

Set poga_search = CreateControl("mainform", acCommandButton, acDetail, "", "", _

5300, 1200, 500, 320)

poga_search.Name = "Browse"

With poga_search

.Caption = "..."

.Enabled = no

End With

Dim poga_refresh As Control

‘poga „refresh data”

Set poga_refresh = CreateControl("mainform", acCommandButton, acDetail, "", "", _

1500, 2100, 1500, 320)

poga_refresh.Name = "refresh"

With poga_refresh

.Caption = "Refresh Data"

‘uzstādam, ka poga nav aktīva

.Enabled = no

End With

Dim poga_execute As Control

‘poga „Get data”

Set poga_execute = CreateControl("mainform", acCommandButton, acDetail, "", "", _

3200, 2100, 1500, 320)

poga_execute.Name = "execute"

With poga_execute

.Caption = "Get Data"

‘uzstādam, ka poga nav aktīva

.Enabled = no

End With

Dim meta As Control

‘uzraksts

Set meta = CreateControl("mainform", acLabel, acDetail, "", "META DATA", _

2400, 2600)

meta.Name = "meta"

‘Uzrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With meta

.ForeColor = 12615808

.FontName = "Ace Crikey"

.FontSize = 12

.width = 1500

.height = 300

End With

Dim metatab As Control

‘uzraksts

Set metatab = CreateControl("mainform", acLabel, acDetail, "", "Table list", _

1200, 3000)

metatab.Name = "metatab"

‘Uzrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With metatab

.FontName = "tabor handwriting"

.ForeColor = 8388608

.FontSize = 12

.width = 1000

.height = 300

End With

Dim listbox_1 As Control

‘saraksta izvēles lauks

Set listbox_1 = CreateControl("mainform", acListBox, scDetail, "", "", _

300, 3400, 2700, 1500)

listbox_1.Name = "tableList"

‘uzstādām, ka saraksts būs neaktīvs un lauka vērtības tips būs „Value list”, kā arī fontu un izmēru

With listbox_1

.Enabled = no

.FontName = "Caxton Bk TL"

.FontSize = 10

.RowSourceType = "Value list"

End With

Dim metafield As Control

‘uzraksts

Set metafield = CreateControl("mainform", acLabel, acDetail, "", "Field list", _

4000, 3000)

metafield.Name = "metafield"

‘Uzrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With metafield

.FontName = "tabor handwriting"

.ForeColor = 8388608

.FontSize = 12

.width = 1000

.height = 300

End With

Dim listbox_2 As Control

‘saraksta izvēles lauks

Set listbox_2 = CreateControl("mainform", acListBox, scDetail, "", "", _

3100, 3400, 2700, 1500)

listbox_2.Name = "fieldList"

‘uzstādām, ka saraksts būs neaktīvs un lauka vērtības tips būs „Value list”, kā arī fontu un izmēru

With listbox_2

.Enabled = no

.RowSourceType = "Value list"

.FontName = "Caxton Bk TL"

.FontSize = 10

End With

Dim m_elements_5 As Control

‘uzraksts

Set m_elements_5 = CreateControl("mainform", acLabel, acDetail, "", "SQL QUERY", _

2500, 5000)

m_elements_5.Name = "T_3"

‘Uzrakstam definējam augstumu, platumu, teksta krāsu, fontu un izmēru

With m_elements_5

.ForeColor = 12615808

.FontName = "Ace Crikey"

.FontSize = 12

.width = 1500

.height = 500

End With

Dim m_elements As Control

‘teksta ievades lauks

Set m_elements = CreateControl("mainform", acTextBox, acDetail, "", "", _

300, 5400, 5500, 1500)

m_elements.Name = "querry"

‘uzstādām ievades lauka fontu un izmēru

With m_elements

.FontName = "Caxton Bk TL"

.FontSize = 10

End With

Dim poga_clear As Control

‘poga „Clear all”

Set poga_clear = CreateControl("mainform", acCommandButton, acDetail, "", "", _

1500, 7000, 1500, 320)

poga_clear.Name = "clear"

With poga_clear

.Caption = "Clear All"

End With

Dim poga_exit As Control

‘poga „Exit”

Set poga_exit = CreateControl("mainform", acCommandButton, acDetail, "", "", _

3200, 7000, 1500, 320)

poga_exit.Name = "exit"

With poga_exit

.Caption = "Exit"

End With

'izveidojam notikuma procedūruu pogai „Exit”

Dim m_modulis As Module

Dim m_1 As Long

Set m_modulis = main_forma.Module

m_1 = m_modulis.CreateEventProc("Click", poga_exit.Name)

' Izpildāmā koda ierakstīšana notikumu procedūrā

m_modulis.InsertLines m_1 + 1, "DoCmd.Close , , acSaveYes"

ClickEventProc = True

'Izsaucam pogas "Clear" notikuma procedūru

m_1 = m_modulis.CreateEventProc("Click", poga_clear.Name)

m_modulis.InsertLines m_1 + 1, "call clear_button()"

ClickEventProc = True

'Izsaucam pogas "..." notikuma procedūru

m_1 = m_modulis.CreateEventProc("Click", poga_search.Name)

m_modulis.InsertLines m_1 + 1, "call browse_button()"

ClickEventProc = True

'Izsaucam pogas "Get Data" notikuma procedūru

m_1 = m_modulis.CreateEventProc("Click", poga_execute.Name)

m_modulis.InsertLines m_1 + 1, "call execute_button()"

ClickEventProc = True

'Izsaucam tabulas lauku saraksta dubultklikšķa notikuma procedūru

m_1 = m_modulis.CreateEventProc("DblClick", listbox_2.Name)

m_modulis.InsertLines m_1 + 1, "call fieldList_dbl_button()"

ClickEventProc = True

'Izsaucam opciju pogas notikuma procedūru

m_1 = m_modulis.CreateEventProc("GotFocus", m_elements_2.Name)

m_modulis.InsertLines m_1 + 1, "call OptionServer_button()"

ClickEventProc = True

'Izsaucam pogas "Refresh Data" notikuma procedūru

m_1 = m_modulis.CreateEventProc("Click", poga_refresh.Name)

m_modulis.InsertLines m_1 + 1, "call refresh_button()"

ClickEventProc = True

'Izsaucam tabulas saraksta klikšķa notikuma procedūru

m_1 = m_modulis.CreateEventProc("Click", listbox_1.Name)

m_modulis.InsertLines m_1 + 1, "call tableList_button()"

ClickEventProc = True

'Izsaucam tabulas saraksta dubultklikšķa notikuma procedūru

m_1 = m_modulis.CreateEventProc("DblClick", listbox_1.Name)

m_modulis.InsertLines m_1 + 1, "call tableList_dbl_button()"

ClickEventProc = True

End Sub

Pēc koda nokompilēšanas un palaišanas atveras galvenā formā, ko esam izveidojuši ar koda palīdzību (skat. 4.1.2.att.). Var redzēt, ka neviena no pogām, ar kuru palīdzību varētu sākt veikt darbu nav aktīva, kamēr netiks nospiesta opciju poga, lai tiktu izvēlēts darbs ar lokālo datu bāzi. Šāda aisardzība ir uzlikta tādēļ, ja lietotajs netīšām nevarētu sakt nepareizu darbību ar formu.

Veidojot galveno formu, esmu izveidojuši arī pogu notikumu procedūru izsaukumus. Pašas pogu un lauku notikumu procedūras iesvietoju citā modulī, ko aprakstīšu tālāk.

[pic]

4.1.2.att. Galvenā forma

4.2. Pogu un teksta lauku apstrāde

Ka jau minēju iepriekš, tad pogu izsaukšanas procedūras ir izveidotas formas veidošanas modulī. Tālāk aprakstīšu pašas pogu procedūras.

4.2.1. Opciju poga

Līdz ar opcijas pogas iezīmēšanu, formā notiek dažādas darbības:

Public Sub OptionServer_button()

Forms("mainForm").path = ""

‘pogas „Get data” un „Refresh data” joprojām ir neaktīvas

Forms("mainForm").controls("refresh").Enabled = False

Forms("mainForm").controls("execute").Enabled = False

‘saraksta izvēles lauki joprojām ir neaktīvi

‘dzēšam atsevišķu elementu saturu, ja kaut kas ir ievadīts

For i = Forms("mainForm").tableList.ListCount - 1 To 0 Step -1

Forms("mainForm").tableList.RemoveItem (i)

Next i

For i = Forms("mainForm").fieldList.ListCount - 1 To 0 Step -1

Forms("mainForm").fieldList.RemoveItem (i)

Next i

Forms("mainForm").tableList.Enabled = False

Forms("mainForm").fieldList.Enabled = False

Forms("mainForm")("querry") = ""

‘poga „...”un arī teksta logs kļūst par aktīviem, lai lietotājs var izvēlēties datu avotu, no kura tiks izgūti dati

Forms("mainForm").controls("Browse").Enabled = True

Forms("mainForm").controls("path").Enabled = TrueEnd Sub

Tātad, pēc tam, kad tiks izvēlēta opciju poga, aktivizēsies poga „...” un teksta lauks, kur tiks attēlots ceļš līdz datu bāzei (skat. 4.2.1.1.att.). Tagad var sākt strādāt ar „sql redaktoru”.

[pic]

4.2.1.1.att. Galvenās formas izmaiņas pēc opciju pogas izvēles

4.2.2. Poga „...”

Nospiežot doto pogu atveras faila atvēršanas dialoga logs, ar kura palīdzību lietotājs var nokļūt kādā mapē un atrast nepieciešamo datu avotu. Faila dialogs pēc noklusējuma parāda visus atbalstītos failus – MS Access datu bāzes un MS Excel grāmatas. Te var izvelēties arī iespēju apskatīt atsevišķi tikai pieejamos *.mdb failus, vai *.xls failus (skat. 4.2.2.1.att.).

[pic]

4.2.2.1.att. Datu avota izvēle

Kad ir izvēlēts fails, spiežam Open un fails tiek atvērts. Data base laukā ir norādīts ceļš līdz datu bāzei (skat. 4.2.2.2.att.).

[pic]

4.2.2.2.att. Ceļš līdz vēlamajai datu bāzei

Pogai „...” ir piekārtota notikumu apstrādes procedūra. Šajā gadījumā kā notikums ir ņemts peles klikšķis uz elementa:

Public Sub Browse_button()

Dim dialog As FileDialog

‘izveidots Mainīgais ar tipu FileDialog no bibliotēkas „Microsoft Office 11.0 Object Library”, kas atver faila atvēršanas dialoga logu

Dim i As Integer

Dim j As Integer

Set dialog = Application.FileDialog(msoFileDialogOpen)

‘Dialogam piešķitam failu atvēršanas dialoga tipu

dialog.Filters.clear

‘dzēšam visus filtrus, kuri atpazīst failu veidu pēc faila paplašinājuma

dialog.AllowMultiSelect = False

‘neļaujam atvērt vairākus failus vienlaicīgi

dialog.Title = "Open File..."

‘ iedodam dialoga logam nosaukumu

dialog.Filters.Add "All files", "*.mdb; *.xls", 1

‘Kā pamata filtrs tiek izveidots filtrs – All files. Šis filtrs atpazīst tikai *.mdb un *.xls failus

dialog.Filters.Add "MS Excel book", "*.xls", 2

‘Tiek izveidots filtrs, kurš atpazīst tikai *.xls failus

dialog.Filters.Add "MS Access database", "*.mdb", 3

‘Tiek izveidots filtrs, kurš atpazīst tikai *.mdb failus

dialog.FilterIndex = 1

‘pēc noklusējuma tiek uzstādīts pirmais filtrs (All files)

Forms("mainForm").path.Enabled = True

‘aktivizē datu bāzes īsceļa teksta lauks

If dialog.Show = -1 Then

‘ja tiek parādīts dialogs

Forms("mainForm").path = dialog.FilterIndex

‘teksta laukam ‘path’ piešķiram vērtību, kas ir vienāda ar izvelēta filtra numuru

Forms("mainForm").path.SetFocus

Forms("mainForm")!path = dialog.SelectedItems(1)

‘Piešķiram teksta laukam ‘path’ pilnu ceļu uz failu

Forms("mainForm").controls("refresh").Enabled = True

‘aktivizē pogu „Refresh data” un atstāj neaktīvu pogu „Get data”

Forms("mainForm").controls("execute").Enabled = False

‘saraksta izvēles lauki paliek neaktīvi

‘dzēšam atsevišķu elementu saturu, ja kaut kas ir ievadīts

For i = Forms("mainForm").tableList.ListCount - 1 To 0 Step -1

Forms("mainForm").tableList.RemoveItem (i)

Next i

For i = Forms("mainForm").fieldList.ListCount - 1 To 0 Step -1

Forms("mainForm").fieldList.RemoveItem (i)

Next i

Forms("mainForm").tableList.Enabled = False

Forms("mainForm").fieldList.Enabled = False

Forms("mainForm")("querry") = ""

End If

End Sub

Tātad, pēc tam, kad ir izvēlēts datu bāzes fails, teksta laukā ‘path’ parādās ceļā līdz datu bāzei. Lauku manuāli mainīt nav iespējams, tajā tikai var redzēt ceļu līdz datu bāzei. Tāpat aktivizējas arī poga „refresh data”, kuru nospiežos, tiks attēloti izvēlētā datu avota meta dati.

4.2.3. Poga „Refresh Data”

Nospiežot šo pogu tiek izgūti meta dati no izvēlētā datu avota. Tiek atteloti tabulu nosaukumi un lauki, kuri atrodas datu avotā. Poga kļūst aktīva tikai pēc tam kad ir izvēlēts attiecīgais datu avots, izmantojot pogu „...”. Nospiežot pogu „Refresh data” nostrādā notikumu apstrādes procedūra uz peles klikšķi uz elementa:

Public Sub refresh_button()

On Error GoTo errProc:

‘Ja ir kļūda, tad pāriet uz errProc

Dim database As New ADOX.Catalog

‘izveidots mainīgais ‘database’ ar tipu ADOX.Catalog

Dim table As New ADOX.table

‘izveidots mainīgais ‘table’ ar tipu ADOX.table, mainīgais ir ADOX tabula

Dim extension As String

Dim tmpString As String

Dim i As Integer

Dim server As String

‘izveidoti vairāki mainīgie ar tipu simbolu virkne (String)

For i = Forms("mainForm").tableList.ListCount - 1 To 0 Step -1

Forms("mainForm").tableList.RemoveItem (i)

Next i

‘ar ciklu tiek dzēsts tabulas saraksts saturs (tableList)

tmpString = Forms("mainForm").path

‘simbolu virknei ‘tmpString’ piešķir teksta lauka ‘path’ saturu

extension = Right(tmpString, 3)

‘simbolu virknei ‘extension’ piešķir datubāzes paplašinājumu

If (extension = "mdb") Then

database.ActiveConnection = "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & tmpString & ";"

‘datu bāzei pārbauda datu bāzes nosaukuma paplašinājumu, ja tas ir mdb, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 netiek padoti papildus parametri. Kā standarta parametrs tiek padots ceļš līdz datu bāzei

For i = 0 To database.tables.Count - 1

Set table = database.tables(i)

Forms("mainForm").tableList.AddItem Item:=table.Name

Next i

Forms("mainForm").controls("execute").Enabled = True

Forms("mainForm").tableList.Enabled = True

‘pievieno tabulas tabulu sarakstam

Else:

If (extension = "xls") Then

database.ActiveConnection = "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & tmpString & ";Extended Properties = Excel 8.0;"

‘pārbauda datu bāzes nosaukuma paplašinājumu, ja tas ir xls, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 tiek padosi papildus parametrs – Excel 8.0, kas norāda, ka datu bāze ir MS Excel grāmata. Kā standarta parametrs tiek padots ceļš līdz datu bāzei.

For i = 0 To database.tables.Count - 1

Set table = database.tables(i)

If Left(table.Name, 5) "Sheet" Then

Forms("mainForm").tableList.AddItem Item:=table.Name

End If

Next i

Forms("mainForm").controls("execute").Enabled = True

Forms("mainForm").tableList.Enabled = True

‘pievieno tabulas tabulu sarakstam

End If

End If

Exit Sub

errProc:

MsgBox "Unable to connect data source!", vbCritical, "Data source error"

Exit Sub

‘ja kļūda, tad tiek izvadīts paziņojums

End Sub

4.2.4. Saraksta lauks „Field list”

Tātad, saraksta lauks „Field list” satur izvēlētas tabulas lauku sarakstu. Izvēloties attiecīgo tabulu no Table list, tabulu lauku sarakstā, parādās attiecīgās tabulas Field list. Tabulas lauku saraksta notikumu apstrādes procedūra apstrādā dubultklikšķa notikumu uz jebkura saraksta elementa. Pēc dubultklikšķa attiecīgā lauka nosaukums parādās SQL vaicājuma ievades logā. Šādi tiek nodrošināts tas, ka lietotājam nav obligāti manuāli jāievada lauka nosaukums, rakstot vaicājumu. Lietotājam vienkārši ir jānovieto kursors SQL vaicājuma teksta lauka vēlamajā vietā un pēc tam ar dubultklikšķi jānoklikšķina uz attiecīgā lauka nosaukumu un lauka nosaukums parādīsies kursora vietā SQL vaicājuma laukā.

Private Sub fieldList_dbl_button()

Dim sqlString As String

‘pievieno lauka nosaukumu teksta logā, kur tiks ievadīts vaicājums

SQL = Forms("mainForm").fieldList.ItemData(Forms("mainForm").fieldList.ListIndex)

Forms("mainForm")("querry") = Forms("mainForm")("querry") & " " & SQL

End Sub

4.2.5. Saraksta lauks „Table list”

Šis formas elements satur izvēlētās datu bāzes tabulu sakrakstu. Izvēloties attiecīgo tabulu no Table list, Field list parādās tabulu lauk. Izvēloties citu tabulu mainās lauki. Tabulas saraksts nodrošina divu notikumu apstrādi – klikšķa un dubultklikšķa apstrāde un elementa. Ja klikšķina vienreiz, tad Field list parādās iezīmētās tabulas lauki, ja divreiz, tad attiecīgās tabulas nosaukums tiek pievienots SQL vaicājuma ievades teksta laukā.

Viens klikšķis:

Public Sub tableList_button()

Dim database As New ADOX.Catalog

‘izveido mainīgo ‘database’, kurš būs ADOX katalogs

Dim table As New ADOX.table

‘izveido mainīgo ‘table’, kurš būs ADOX tabula

Dim i As Integer, j As Integer

Dim extension As String

Dim tmpString As String

Dim server As String

‘izveido vairākus mainīgos ar tipu simbolu virkne

tmpString = Forms("mainForm").path

‘piešķir mainīgajam ceļu uz datu bāzi

extension = Right(tmpString, 3)

‘piešķir mainīgajam datu bāzes paplašinājumu

For i = Forms("mainForm").fieldList.ListCount - 1 To 0 Step -1

Forms("mainForm").fieldList.RemoveItem (i)

Next i

‘dzēš elementa Field list saturu

If (extension = "mdb") Then

database.ActiveConnection = "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & tmpString & ";"

‘pārbaudīta datu bāzes nosaukuma paplašinājumu, ja tas ir mdb, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 netiek padoti papildus parametri. Kā standarta parametrs tiek padots ceļš līdz datu bāzei

Else:

If (extension = "xls") Then

database.ActiveConnection = "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & tmpString & ";Extended Properties = Excel 8.0;"

‘pārbaudīta datu bāzes nosaukuma paplašinājumu, ja tas ir xls, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 tiek padosi papildus parametrs – Excel 8.0, kas norāda, ka datu bāze ir MS Excel grāmata. Kā standarta parametrs tiek padots ceļš līdz datu bāzei

End If

End If

‘Field list pievieno izvēlētās tabulas laukus

For i = 0 To database.tables(Forms("mainForm").tableList.ItemData(Forms("mainForm").tableList.ListIndex)).Columns.Count - 1

Forms("mainForm").fieldList.AddItem database.tables(Forms("mainForm").tableList.ItemData(Forms("mainForm").tableList.ListIndex)).Columns(i).Name, i

Next i

‘aktivizē Field list

Forms("mainForm").fieldList.Enabled = True

End Sub

Divi klikšķi

Public Sub tableList_dbl_button()

Dim sqlString As String

‘pievieno tabulas nosaukumu teksta logā, kur tiks ievadīts vaicājums

SQL = Forms("mainForm").tableList.ItemData(Forms("mainForm").tableList.ListIndex)

Forms("mainForm")("querry") = Forms("mainForm")("querry") & " " & SQL

End Sub

4.2.6. Poga „Get Data”

Nospiežot šo pogu tiek izgūti meta dati no datu avota. Meta dati tiek izgūti izmantojot SQL vaicājumu, kurš tiek nolasīts no SQL vaicājuma ievades lauka. Pēc noklusējuma poga ir neaktīva. Poga „Get data” kļūst aktīva tikai pēc tam, kad ir iegūti visi nepieciešamie meta dati – tabulas nosaukumi un tabulu lauku nosaukumi (Table list un Field list). Nospiežot pogu „Get data” nostrādā notikumu apstrādes procedūra uz peles klikšķi uz elementa. Pēc pogas nospiešanas uz ekrāna tiek izvadīta rezultātu forma, kura satur SQL vaicājuma rezultātu.

Public Sub execute_button()

Dim records As ADODB.recordSet

‘definē mainīgo ar tipu ADODB rakstu kopa

If (Forms("mainForm").querry "") Then

‘ja vaicājums ir ievadīts, tad tiek izpildītas

Set records = getExternalData.getDatabases(Forms("mainForm").path, Me.querry)

displayData.createResForm records

‘rakstu kopas mainīgajam ‘records’ piešķir rakstu kopu, kuru nolasa no datu bāzes Forms("mainForm").path. Tiek nolasīti tie raksti, kuri atbilst vaicājumam Forms("mainForm").querry

Else: MsgBox "Query not entered", vbCritical, "SQL error"

‘ja nav ievadīts vaicājums – izvada paziņojumu

End If

End Sub

4.2.7. Poga „Clear All”

Šīs pogas nospiešana dzēš saturu visos laukos un forma nonāk sākumstāvoklī (t.i. tiek dezaktivēti vairāki lauki, kā bija sakumā). Pogai ir viena notikumu apstrādes procedūra uz peles klikšķa uz elementa:

Public Sub clear_button()

Forms("mainForm").path = ""

‘dzēš teksta lauku ‘path’

Forms("mainForm").controls("refresh").Enabled = False

Forms("mainForm").controls("execute").Enabled = False

‘deaktivē pogas

For i = Forms("mainForm").tableList.ListCount - 1 To 0 Step -1

Forms("mainForm").tableList.RemoveItem (i)

Next i

For i = Forms("mainForm").fieldList.ListCount - 1 To 0 Step -1

Forms("mainForm").fieldList.RemoveItem (i)

Next i

‘dzēš elementus Table list un Field list

Forms("mainForm").tableList.Enabled = False

Forms("mainForm").fieldList.Enabled = False

‘deaktivē Table list un Field list

Forms("mainForm")("querry") = ""

‘dzēš vaicājumu

End Sub

Vēl ir poga „Exit”, kuru nospiežot, tiek aizvēra MS Access vide. Tā tika definēta formas izveides modulī, kur arī to aprakstīju.

Atlikušajā SQL ievades teksta laukā ir jāievada vaicājums, jo lai izgūtu datus no datu avotiem tiek izmantots SQL vaicājums, kurš tiek nolasīts tieši no šī teksta lauka.

Kad ir definēta notikumu apstrāde, tad var sākt datu izgūšanas funkciju rakstīšanu.

4.3. Datu izgūšana

Datu izgūšanas funkcijas izvietoju cita modulī, kurš nav saistīts ne ar formas izveidi, ne ar pogu apstrādi. Šāda moduļu izveides kārtība ļauj ērtāk orientēties izveidotajos failos un kodos.

Datu izgūšanas modulī izvietoju funkciju, kura iegūst ADODB rakstu komu, kura pēc tam tiks parādīta formā kā rezultāts. Funkcijai, kā parametrus, nodevu izvēlētās datu bāzes atrašanās ceļu, kā arī ievadīto vaicājumu.

Public Function getDatabases(path As String, SqlQuerry As String) As ADODB.recordSet

On Error GoTo errProc:

‘ja ir kļūda, tad pāriet uz errProc

Dim databaseConnection As New ADODB.Connection

‘piešķir mainīgajam ‘databaseConnection’ tipu ADODB savienojums

Dim recSet As New ADODB.recordSet

‘definēs mainīgo’ recSet’ ar tipu ADODB rakstu kopa

Dim extension As String

Dim server As String

‘definē mainīgos ar tipu simbolu virkne

extension = Right(path, 3)

‘piešķir mainīgajam’ extension’ datu bāzes faila paplašinājumu

If (extension = "mdb") Then

databaseConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & path & ";"

‘pārbauda datu bāzes nosaukuma paplašinājumu, ja tas ir mdb, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 netiek padoti papildus parametri. Kā standarta parametrs tiek padots ceļš līdz datu bāzei . Šajā gadījumā tiek nevis izveidots savienojums, bet gan tiek atvērts savienojums

Else:

If (extension = "xls") Then

databaseConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & path & ";Extended Properties = Excel 8.0;"

‘ pārbauda datu bāzes nosaukuma paplašinājumu, ja tas ir xls, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 tiek padosi papildus parametrs – Excel 8.0, kas norāda, ka datu bāze ir MS Excel grāmata. Kā standarta parametrs tiek padots ceļš līdz datu bāzei . Šajā gadījumā tiek nevis izveidots savienojums, bet gan tiek atvērts savienojums

Else: MsgBox "Unable to find data source!", vbCritical, "SQL error"

‘ja nevar atrast datu avotu, izvada paziņojumu

End If

End If

recSet.Open SqlQuerry, databaseConnection, adOpenKeyset, adLockOptimistic

‘atver rakstu kopu ‘recSet’

Set getDatabases = recSet

‘nodod funkcijai tās atgriežamo vērtību

Exit Function

errProc:

MsgBox "Incorrect SQL query!", vbCritical, "SQL error"

Exit Function

‘ja nepareizs vaicājums, tad izvada paziņojumu

End Function

4.4. Datu attēlošana

Datu izgūšanas modulī izvietoju divas funkcijas. Šis modulis palīdz izveidot dināmisku formu, kura spēj mainīt lauku skaitu, izmēru atkarībā no iegūto lauku skaita. Šeit arī ir izvietoti visas nepieciešamās formas apstrādes procedūras.

‘Funkcija izveido dinamisku formu ar visiem datu avota rakstiem

Public Function createResForm(records As ADODB.recordSet) As Form

On Error GoTo errProc:

‘ja ir kļūda, tad pāriet uz errProc

Dim resultForm As New Form

‘definē formu „resultform”

Dim controls As New Control

‘definē mainīgo ar tipu ‘controls’

Dim fieldNumber As Integer

‘definēt mainīgo, kurš satur jaunās formas lauku skaitu

Dim i As Integer

Dim height As Integer

‘definē mainīgo, kurš saturformas augstumu

Dim formName As String.

‘definē mainīgo, kurš satur formas nosaukum

Dim resultModule As Module

‘definē formas moduli resultModule

Dim rowNumber As Integer

fieldNumber = records.fields.Count - 1

‘piešķir mainīgajam ‘fieldNumber’ rakstu skaitu. Lauku skaits būs par vienu pozīciju mazāks, jo lauku skaita numerācija formā sākas no 0

Set resultForm = createForm

‘izveido rezultātu formu

formName = resultForm.Name

‘piešķir mainīgajam formas nosaukumu

‘definē dažādus formas parametrus

With resultForm

.Caption = "Result Form"

.RecordSelectors = False

.NavigationButtons = False

.DividingLines = False

.AutoResize = True

.AutoCenter = True

.BorderStyle = 1

.ScrollBars = 0

.ControlBox = False

End With

‘Ciklā izveido laukus, kuros glabāsies iegūtie dati. Katram laukam tiek izveidota atbilstoša iezīme

For i = 0 To fieldNumber

Set controls = CreateControl(formName, acLabel, acDetail, , records.fields(i).Name + ":")

controls.Name = "Label" & i

‘definē uzrakstu krāsu, fontu un izmēru

With controls

.ForeColor = 8388608

.FontName = "tabor handwriting"

.FontSize = 12

End With

Set controls = CreateControl(formName, acTextBox, , , , , , 2000)

controls.Name = "TextBox" & i

‘definē teksta lauku krāsu, fontu un izmēru

With controls

.FontName = "Caxton Bk TL"

.FontSize = 10

End With

Next i

‘ciklā nosaka izveidoto lauku un iezīmju izmēu un izvietojums rezultātu formā

For i = 0 To fieldNumber

If (i = 0) Then height = 400

resultForm.controls("Label" & i).Left = 1500

resultForm.controls("Label" & i).Top = height

height = resultForm.controls("Label" & i).Top + 350

resultForm.controls("TextBox" & i).Left = 1500

resultForm.controls("TextBox" & i).Top = height

height = resultForm.controls("TextBox" & i).Top + 500

Next i

‘piešķir funkcijai createResForm atgriežamo vērtību. Funkcijas atgriežamā vērtība ir ar tipu form un tāpēc tiek atgriezts mainīgais ar tipu form. Šeit – rezultātu forma

Set createResForm = resultForm

‘ izveido vadības pogas un iziešanas pogas.Definē nosaukumus, tipus, izmērus, izvietojumu

‘poga „First”

Set controls = CreateControl(formName, acCommandButton, acDetail, , , 1200, height + 500, 1000, 300)

controls.Name = "ToFirstRec"

controls.Caption = ""

‘poga „Previous”

Set controls = CreateControl(formName, acCommandButton, acDetail, , , 1200, height + 1000, 1000, 300)

controls.Name = "ToPreviousRec"

controls.Caption = ""

‘poga „Close”

Set controls = CreateControl(formName, acCommandButton, acDetail, , , 1950, height + 1500, 1000, 300)

controls.Name = "Leave"

controls.Caption = "Close"

‘piešķir mainīgajam ‘resultModule’ rezultātu formas moduli.

Set resultModule = resultForm.Module

‘notiek rezultātu formas moduļa apstrāde. Modulī tiek ierakstītas nepieciešamas koda rindiņas,tiek definēti mainīgie, tiek veidotas notikumu apstrādes procedūras.

resultModule.InsertLines 3, "Dim position as Integer, recNr as integer"

‘izveido procedūru, kura ielādē formu

rowNumber = resultModule.CreateEventProc("Load", "Form")

‘iekš procedūras izsauc procedūru ‘loadDatabase’ ar parmetrie position un me.name

resultModule.InsertLines rowNumber + 1, "loadDatabase position, me.name"

‘ notikuma notikumu apstrādes procedūra pogai ToNextRec (Next)-pāreja uz nākamo ierakstu

rowNumber = resultModule.CreateEventProc("Click", "ToNextRec")

resultModule.InsertLines rowNumber + 1, "position = position + 1"

resultModule.InsertLines rowNumber + 2, "loadDatabase position, me.name"

‘notikuma notikumu apstrādes procedūra pogai ToPreviousRec(Previous) - pāreju uz iepriekšējo ierakstu

rowNumber = resultModule.CreateEventProc("Click", "ToPreviousRec")

resultModule.InsertLines rowNumber + 1, "position = position - 1"

resultModule.InsertLines rowNumber + 2, "loadDatabase position, me.name"

‘notikuma notikumu apstrādes procedūra pogai ToFirstsRec(First) - pāreju uz pirmo ierakstu

rowNumber = resultModule.CreateEventProc("Click", "ToFirstRec")

resultModule.InsertLines rowNumber + 1, "position = 0"

resultModule.InsertLines rowNumber + 2, "loadDatabase position, me.name"

‘notikuma notikumu apstrādes procedūra pogai ToLastsRec(Lasts) - pāreju uz pēdējo ierakstu

rowNumber = resultModule.CreateEventProc("Click", "ToLastRec")

resultModule.InsertLines rowNumber + 2, "loadDatabase position, me.name, ""Last"""

‘ notikumu apstrādes procedūra pogai „Close”- aizver formu, nesaglabājot to.

rowNumber = resultModule.CreateEventProc("Click", "Leave")

resultModule.InsertLines rowNumber + 1, "DoCmd.Close ,,acSaveNo"

‘kad atver formu, definē formas izvietojumu un izmērus

DoCmd.OpenForm formName

DoCmd.MoveSize , , , height + 2500

DoCmd.MoveSize , , 5000

Forms(formName).Move 5100, 1000

Exit Function

‘ja ir kļūda, tad izvada paziņojumu par nespēju izveidot formu

errProc:

MsgBox "Unable to create form!", vbCritical, "Form creation error"

Exit Function

End Function

‘Funkcija nolasa ierakstus no datu avota.

Public Sub loadDatabase(position As Integer, formName As String, Optional Action As String)

‘ja kļūda, tad pāriet pie errProc

On Error GoTo errProc:

‘definē mainīgo ar tipu ADODB savienojums

Dim databaseConnection As New ADODB.Connection

‘definē mainīgo’ records’ ar tipu ADODB rakstu kopa

Dim records As New ADODB.recordSet

‘definē mainīgosar tipu String

Dim SqlQuerry As String

Dim i As Integer

Dim extension As String

Dim tmpString As String

Dim server As String

‘piešķir mainīgajam ‘SqlQuerry’ vaicājumu no galvenās formas

SqlQuerry = Forms("mainForm").querry

‘piešķir mainīgajam ‘tmpString’ ceļu uz datu bāzi.

tmpString = Forms("mainForm").path

‘piešķir mainīgajam ‘extension’ datu bāzes faila paplašinājumu

extension = Right(tmpString, 3)

‘pārbauda datu bāzes nosaukuma paplašinājumu, ja tas ir mdb, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 netiek padoti papildus parametri. Kā standarta parametrs tiek padots ceļš līdz datu bāzei . Šajā gadījumā tiek nevis izveidots savienojums, bet gan tiek atvērts savienojums

If (extension = "mdb") Then

databaseConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & tmpString & ";"

‘pārbauda datu bāzes nosaukuma paplašinājumu, ja tas ir xls, tad datu gādniekam Microsoft.Jet.OLEDB.4.0 tiek padosi papildus parametrs – Excel 8.0, kas norāda, ka datu bāze ir MS Excel grāmata. Kā standarta parametrs tiek padots ceļš līdz datu bāzei . Šajā gadījumā tiek nevis izveidots savienojums, bet gan tiek atvērts savienojums

Else:

If (extension = "xls") Then

databaseConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _

"Data Source = " & tmpString & ";Extended Properties = Excel 8.0;"

‘ja nevar izveidot savienojumu ar datu bāzi, tad izvada paziņojumu

Else: MsgBox "Unable to find data source!", vbCritical, "SQL error"

End If

End If

‘atver rakstu kopu ‘records’

records.Open SqlQuerry, databaseConnection, adOpenKeyset, adLockOptimistic

‘koriģē cadības pogu izpildes darbības

If position < 0 Then position = 0

If position = records.RecordCount Then position = records.RecordCount - 1

If Action = "Last" Then position = records.RecordCount - 1

‘piešķir atbilstošās vērtības rezultātu formas laukiem

records.Move position

For i = 0 To records.fields.Count - 1

Forms(formName).controls("TextBox" & i) = records.fields(i).Value

Next i

‘definējam formas nosaukumā kopējo ierakstu skaitu un attēlojamā ieraksta numuru

Forms(formName).Caption = position + 1 & " record. Total: " & records.RecordCount

Exit Sub

‘ja ir kļūda, ka nevar nolasīt datus, tad izvada paziņojumu

errProc:

MsgBox "Unable to display table data!" & _

"Table might be empty!", vbCritical, "Form creation error"

Exit Sub

End Sub

Tagad, kad ir izveidota rezultātu forma, mēģināsim to vizuāli attēlot. Taču pagaidām nesniegšu lietotaja kontrolpiemēru, bet gan tikai formas vizuālo aprakstu (skat. 4.4.1.att.).

[pic]

4.4.1.att. Rezultātu forma un tās elementi

Vēl būtu pāpiebilst, ka programmas darbības nokompilešana ir veicama no galvenās formas ar funkciju „Jaunas_formas_veidosana”, kas atrodas modulī „Formas_izveide”, jo ta ir programmas galvenā funkcija un, ja logiski paromā, tad programma nevar strādāt ja kompilēšanu veic no kādas atsevišķas pogas. Dotā funkcija ir jāizvēlās no funkciju saraksa, kurš parādās, kar tiek nospiesta poga „run” (skat. 4.4.2.att.).

[pic]

4.4.2.att. Programmas nokompilēšanas funkcijas izvēle

DATU IZGŪŠANAS PIEMĒRI

Kad forma ir izveidota, ir jāpārlicinās vai datu izgūšana ir korekta, tas ir, vai tiek izgūti pareizie dati saskaņā ar ievadīto SQL vaicājumu. Manis izveidotais projekts MS Access vidē var izgūt datu 2 avotiem: MS Access datu bāzes un MS Excel grāmatas, tapēc arī pārbaudīsim abus avotus ar vairākiem vaicājumiem. Tāpat pārbaudīsim arī pieslēgšanās korektums un meta datu iegūšanas pareizību.

1 Dati no MS Access datu bāzes

Galvenajā formā, uzklikšķinot uz pogas „...” izvēlēsimies datu avotu db3.mdb, kurš bija izveidots 2 laboratorijas darba vajadzībām (skat. 5.1.1.att.), un nospiežam pogu Open.

[pic]

5.1.1.att. datu avota (*.mdb) izvēle

Kad tas ir izdarīts, tad redzams, ka formā ir attēlots ceļš uz izvēlēto datu bāzi, ka arī tika aktivizēta poga „Refresh Data” (skat. 5.1.2.att.).

[pic]

5.1.2.att. Formas izmaiņas pēc avota izvēles

Lai aplūkotu iespējamās tabulas un to laukus datubāzē, nospiedīsim pogu „refresh data”, lai varētu redzet metadatus. Pēc pogas nospiešanas, aktivizējas poga „Get Data” un arī laukos „Table list” un „Field list” parādās attiecīgie metadatni (skat. 5.1.3.att.).

[pic]

5.1.3.att. Formas izmaiņas pēc pogas „refresh data” nospiešanas. Meta datu attēlošana

Redzams, ka tagad var aplūkot visas pieejamās tabulas, kā arī to laukus. Tieši šādas tabulas un lauki bija izmantoti šaja datu bāzē. Lai turpinātu darbu, ievadīsim vaicājuma logā vaicājumu (skat. 5.1.4.att.).

[pic]

5.1.4.att. Vaicājuma ievade

Vaicājuma loģiskais teksts:

Izvadīt mašīnas marku, numuru, izlaiduma gadu un klientu ID tiem klientiem, kuru mašīnas ir melnā vai dzeltenā krāsā un ir izlaistas pēc 2000.gada (ieskaitot).

Vaicājums:

SELECT DISTINCT au.AUTO_marka, au.AUTO_nr, au.AUTO_izlg, au.KL_id

FROM AAUTO AS B, [SELECT A.AUTO_marka, A.AUTO_nr, A.AUTO_izlg, A.KL_id

FROM AAUTO A

WHERE A.AUTO_izlg >= 2000 AND (A.AUTO_krasa='melna' OR A.AUTO_krasa='dzeltena') ]. AS au

WHERE B.KL_id=au.KL_id;

Iegūto rezultātu varam pārbaudīt 2 laboratorijas darba failā, kur jau ir ievadīti dotie vaicājumi (skat. 5.1.5.att.).

[pic]

5.1.5.att. 1. vaicajums tabulas veidā

Lai iegūtu šādus ierakstus formas veidā, nospiedīsim pogu „Get data”. Parādīsies dinamiska forma ar rezultātiem (skat. 5.1.6.att.).

[pic]

5.1.6.att. 1. vaicājuma rezultāts

Kā redzams, tad šajā formā ir 5 ieraksti ( to var redzēt formas augšpusē), kā arī pirmais ieraksts, kur tiek attēlots, sakrīt ar vaicājuma izpildes rezultātu iepriekšējā attēlā. Šķirstot ierakstus, tika attēloti visi prasītie dati. Nospiežot pogu „close”, šī forma tiek aizvērta.

Šei es varētu minēt arī iespējamās kļūdas, kuras var rasties.

Var rasties kļūda, ja lietotājs ir nospiedis pogu „Get data”, bet nav ievadījis SQL vaicājumu (skat. 5.1.7.att.).

[pic]

5.1.7.att. ziņojums, ka nav ievadīts vaicājums

Kļūda var rasties arī tad, ja vaicājums ir nepareizi ievadīts. Tad izvada 2 kļūdu paziņojumus, ka vaicājums ir nepareizs, un, ka nevar izveidot formu. Formu nevar izveidot tādēļ, ka, forma ir jau izveidota, tajā nav tikai datu. Pēc šī kļūdas paziņojuma forma tiek iznīcināta (skat. 5.1.8. un 5.1.9.att.).

[pic]

5.1.8. att. Ziņojums, ka ir ievadīts nepareizs vaicajums

[pic]

5.1.9.att. Ziņojums, ka nevar izveidot formu

Tagad ievadīsim citu vaicājumu, kurš apvienotu 2 tabulas:

Vaicājuma loģiskais teksts:

Izvadīt klientu vārdus, uzvārdus, viņu automašīnu numuru un markas, kuru izlaidumu gads ir lielāks par 2002.gadu vai mazāks par 2005.gadu.

Vaicājums:

SELECT kl.KL_var, kl.KL_uzv, au.AUTO_nr, au.AUTO_marka

FROM AKlienti AS kl, AAuto AS au

WHERE kl.KL_id=au.KL_id And (au.AUTO_izlg>2002 Or au.AUTO_izlg1;

Rezultāts tabulā (skat. 5.2.5.att.):

[pic]

5.2.5.att. 2.vaicājums tabulas veidā

Iegūtais rezultāts formā (skat. 5.2.6.att.):

[pic]

5.2.6.att. 2.vaicājuma rezultāts

Tātad, līdz ar to varam redzēt, ka arī šeit formas darbība ir nostrādajusi pareizi. Tātad, uzstādītie uzdevumi ir veiksmīgi paveikti.

SECINĀJUMI

Pildot šo laboratorijas darbu es izmantoju jau gatavu 2.laboratorijas darbam izveidoto datu bāzi MS Access vidē, ka arī izveidoju nelielu tabulu MS Excel vidē. Tā ir neliela tādēļ, ka šī darba uzdevums bija nevis mācēt izveidot lielu tabulu Excelī, bet gan ADO tehnoloģijas izmantošana un spēja pieslēgties šai tabulai.

Godīgi sakot, šo darbu uzskatu par grūtāko, bet tā kā tas ir pēdējais darbs, tad ta tam arī vajadzētu būt. Grūtākais tādēļ, ka šeit es sastapos ar man nezināmu VisualBasic valodu, kuras apgūšana un izprašana, kaut arī nesagādāja lielas grūtības, tomēr bija diezgan laikietilpīga. Tā pat arī dotās valodas sintakses izprašana sagādāja grūtības. Ar grūtībām tiku galā izlasot vairākus interneta resursus, kuros esmu atradusi atbildes uz saviem jautājumiem. Tādā veidā lēnā garā esmu atrisinājusi praktiski visas problēmas, kuras man bija radušās.

Šajā laboratorijas darbā iepazinos ar to, kā izmantot un poielietot praktika ADO tehnoloģiju. Manuprāt, ir ļoti labi mācēt to darīt, jo ADO tehnoloģija ir ļoti perspektīva, tā vēl joprojām tiek attīstīta un pilnveidota. Pie tam, ir jāņēm vērā, ka pašlaik diezgan plaši tiek izmantotas un ADO+ tehnoloģijas, kuras ir pilnībā orientētas uz darbu tīklos.

Izlasot vairākus avotus, secināju, ka pats galvenais ADO tehnoloģijas mērķis ir pēc iespējas vairāk vienkāršot piekļūšanu dažādiem datiem, ko var izdarīt pateicoties OLEBD un ODBC tehnoloģijām, uz kuram tiek balstīta pati ADO tehnoloģija, jo tas nodrošina iespēju izveidot starpdatu savienojumu ar koda palīdzību.

Arī šajā darbā mācījos no savām kļūdām, ko biju pielaidusi pirmajā darbā, kad nolēmu no sākuma izveidot visu praktisko darba uzdevumu, un tikai tad sākt rakstīt darba aprakstu. Šoreiz pildīju darbu pa soļiem un aprakstīju katru savu soli, līdz tas bija pabeigts. Šajā ziņā grūtākais ir uzstādīt mērķi solim, kuru veikšu.

Rakstot galvenās un rezultējošās formas kodu, centos tās izveidot pēc iespējas pievilcīgākas programmas lietotajām, jo, jo ērtāk ir izmantojama programma, jo vairāk cilvēku var izprast tās lietošanas īpašības. Tāpat centos novērt vairāku kļūdu rašanos, taču tas nemaz nebija tik viegli, jo VBA vidē Debuger nav gana labs, kāds tas ir citas programmēšanas vidēs. Līdz ar to tas ne vienmēr parāda kļūdas patieso iemeslu, kura ir darusies koda izpildes laikā. Pilnīgi visa formas darbība ir realizēta VBA programmēšanas vidē.

Pašu programmu, „SQL REDACTOR”, izveidoju kā projekta failu, kuru atstāju nepieslēgtu serverim, jo man to neizdevās uzstādīt. Programmas darbībai izveidoju 4 moduļus.

Man ir ļoti žel, ka izlasot vairākus avotus, un veicot simtiem mēģinājumu, man tā arī neizdevās izgūt datus no OLAP kuba. Uzskatu, ka manu neveiksmi ir pavadījusi neizpratne par to, kuram datu gādniekam ir jāpieslēdzas, lai izmantotu šos datus. Sākuma biju paredzējusi izgūt datus arī no tā. Tā pat bija iecere veikt datu izgūšanu no SQL servera datu bāzes, taču, man par nelaimi, man ta arī neizdevās uzstādīt SQL serveri. Ielādēju servera instalāciju no vairākām mājaslapām, vairākas reizes esmu instalējusi, bet uzstādīt serveri man tā arī neizdevās. Biju jau izlasījusi vairākas mājaslapas un pat zināju, ka importēšu datus uz serveri, lai nav jāraksta vairākas tabulas no jauna. Taču serveris neuzstādījās.Līdz ar to, man neizdevās izpildīt arī šo, manis uzstādīto mērķi. Iespējams ta nebija mana, bet datora vaina. Datu izgūšana no MS Access un MS Excel, ka arī meta datu izgūšana ir bijusi veiksmīgāka.

Neskatoties uz visu darbs bija diezgan interesants, sevišķi kad viss strādā un, palaižot programmu, var priecāties par to, kas ir izdevies. Un, protams, arī vīlties sevī, ja kaut kas nav izdevies. Viennozīmīgi uzskatu, ka iegūtās zināšanas nākotnē man varētu noderēt, taču domāju, ka visnepieciešamākais tomēr būs ADO objektu pielietojums, ja datu apstrāde tagad man liekas ļoti sarežģīta, ja tos neizmanto.

IZMANTORIE AVOTI

Avoti latviski:

1. Prof. Jānis Eiduks. Lekciju konspekti studiju priekšmetā „Datubāzu vadības sistēmas”.

Avoti angliski:

2. Cary N. Prague and Michael R. Irwin, „Access 2002 Bible”, Hungry Minds, 2002

3. David Sceppa, „ADO Programming”, Microsoft Press, New York, 2000

4. MS Access HELP faili

5. MS Excel HELP faili

6. Steven Roman, „Access Database Design & Programming”, O’Reilly, 1999

7. VisualBasic HELP faili

Avoti krieviski:

8. Вероника Михеева, Ирина Харитнова, Microsoft Access 2002. – СПб,:БХВ – Петербург, 2002. 1040с.: ил.

9. И. ХАРИТОНОВА Acces2000 - Санкт-Петербург 2002 г.

10. Microsoft Excel 97 Шаг за шагом Москва Эком 1997 – 448 с.

Interneta resursi:





















































































-----------------------

2.1.1.att. Tabulas AAS dati

2.1.2.att. Tabulas AKlienti dati

2.1.3.att. Tabulas AAUTO dati

2.1.4.att. Saites starp tabulām MS Access vidē

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download