Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Baze de date


Index » educatie » » informatica » Baze de date
» Lucru cu fisiere in VISUAL BASIC


Lucru cu fisiere in VISUAL BASIC


Lucru cu fisiere in VISUAL BASIC

Volumul mare al datelor de prelucrat impune stocarea acestora in colectii de date ce au inregistrari cu o structura bine precizata. Dupa cum am mai amintit acestea se numesc fisiere.

Ca si alte limbaje evoluate de programare, VB ofera posibiltatea prelucrarii datelor memorate in fisiere.

Pentru a face posibila scrierea sau citirea de informatii in / din fisiere si in scopul protejarii datelor memorate in fisiere, acestea trebuie supuse, inainte sau dupa "folosire", unor operatii de deschidere si, respectiv, inchidere. Pentru descriere in cadrul programelor VB a operatiilor de deschidere, inchidere, citire sau scriere de informatii stocate in fisiere, mediul de programare are definite instructiuni de specifice.

1. Deschiderea unui fisier



Anterior opertiilor de intrare / iesire asupra datelor memorate in fisiere, VB necesita opertia de deschidere a fisierului. Aceasta operatie se descrie in VB prin intermediul instuctiunii Open, a carei sintaxa generala este urmatoarea:

Open specificator fisier For Mode [Access] acces [lock] As [#] numar de fisier [Len=lungime articol]

Semnificatia parametrilor care apar in sintaxa comenzii este urmatoarea:

specificator fisier: specifica fisierul ce urmeaza a fi supus operatiei de deschidere. Sa ne reamintim ca prin specificator de fisier intelegem : [<nume disc>] [<cale de access>] nume [.extensie]. Daca fisierul astfel specificat nu exista pe disc, iar modul de deschidere este corespunzator unui fisier de iesire, atunci el este creat.

acces: permite precizarea tipului de acces la datele din fisier. Astfel, pentru modul de acces secvential trebuie indicat Append (adaugare de noi inregistrari intr-un fisier existent), Input (citire de date dintr-un fisier existent) sau Output (crearea unui fisier nou), iar pentru cazul in care se doreste dechiderea pentru acces direct se foloseste optiunea Random.

numar de fisier: un numar de identificare a fisierului cuprins intre 1 si 255. El reprezinta o zona de lucru in care se deschide fisierul. În felul acesta, pentru modurile Input sau Random, putem deschide un fisier fara a inchide copia lui atasata unei alte zone de lucru, reprectiv al numar de fisier. Pentru modurile Append sau Output, deschiderea fisierului nu se poate face decat dupa inchiderea copiei deschisa intr-o alta zona.

Pentru a deschide mai multe fisiere simultan recomandabil este ca numarul de fisier al zonei de lucru sa contina valoarea returnata de functia FreeFile (aceasta functie returneaza urmatorul numar al unei zone libere in care se poate deschide fisierul). Pentru a determina lungimea inregistrarii unui fisier se poate folosi functia RecLength.

Comanda Open poate fi utilizata numai pentru deschiderea de fisiere provenite din aplicatii VB, nu si din alte aplicatii, precum Word, Excel sau Access.

2. Închiderea unui fisier

Pentru asigurarea securitatii datelor memorate in fisiere, dupa utilizare, acestea trebuie supuse operatiei de inchidere. Operatia de inchidere a fisierelor in VB se realizaeza prin instructiunea Close care are urmatoarea sintaxa generala:

Close [lista de numere de fisier]

Comanda Close fara parametru are ca efect inchiderea tuturor fisierelor active la momentul respectiv. În cazul fisierelor deschise in mod Append sau Output, inainte de inchidere sunt transferate in fisier toate datele aflate in zona tampon asociata fisierului. Închiderea unui fisier are ca efect incetarea relatiei dintre fisier si zona tampon asociata, care este astfel eliberata.

3. Accesarea unui fisier

Fisierele pot fi accesate prin programe VB in mai multe moduri:

Ø     Secvential

Ø     Random

Ø     Binary

Accesul secvential este posibil pentru fisierele deschise in mod Input, Output sau Append. Este recomandat atunci cand avem de prelucrat date memorate in fisiere pe mai multe linii de lungimi diferite. Pentru realizarea acestui mod de access in VB se utilizeaza instructiunile de intrare/iesire Line Input # si Print #. Acestea au urmatorul format general:

Line Input #numar de fisier, nume de variabila

Print # numar de fisier, lista de variabile de iesire

Instructiunea Line Input are ca efect citirea unei inregistrari din fisierul indicat prin numar de fisier si memorarea datele citite in zona de memorie interna (tampon) asociata variabilei al carui nume apare ca parametru al comenzii. Ca urmare a executarii acestei comenzi, asupra unui fisier dechis cu comanda Open datele sunt citite din fisier caracter cu caracter pana la intalnirea codului secventei CRLF (Carriage Return Line Fide), care marcheaza sfarsitul unei linii din fisier.

Instructiunea Print permite indicarea in programul VB a operatiei de scriere date intr-un fisier identificat prin numarul de fisier prezent ca parametru al comenzii. Lista de variabile de iesire contine variabile, expresii aritmetice sau siruri de caractere ce se doresc a fi memorate pe o noua linie a fisierului. În cazul in care acest parametru lipseste, in fisier se va inscrie o linie goala.

Accesul aleator (Random) este utilizat atunci cand datele sunt structurate in inregistrari de aceeasi lungime si cu aceeasi structurare in campuri. În aceasta situatie accesul la datele memorate in fisier se face direct pe inregistrarea cautata. Pentru a asigura descrierea operatiilor de Intrare/Iesire pentru fisierele deschise in mod Random au fost proiectate in VB urmatoarele instructiuni:

Get # numar de fisier, [numar de articol], nume de variabila

Put # numar de fisier, [numar de articol], nume de variabila

Instructiunea Get # permite citirea din fisierul identificat prin numar de fisier a articolului cu numarul indicat ca parametru si memorarea acestuia in variabila a carui nume este mentionat.

Instructiunea Put # permite transferul datelor din variabila cu numele indicat intr-un articol al fisierului care a fost precizat prin intermediul numarului de fisier.

În continuare considerm o problema care necesita utilizarea fisierelor pentru rezolvarea ei in VB: evidenta situatiei scolare a studentilor unei facultati la disciplinele de informatica. Pentru fiecare student trebuie memorate urmatoarele informatii: numar matricol, nume, prenume, facultate, grupa si an de studiu, nota la proba practica 1, nota la proba practica 2, nota la scris si nota finala pentru fiecare semestru in parte.


Am asociat aplicatiei doua forme si un modul, conform cu imaginea din fig. 11.3.1.

Fig. 11.3.1.

În module1 ( memorat pe harddisc in fisierul articol.bas) am descris structura unui articol din fisierul student. Acesta este creat in mod Random pentru memorarea informatiilor referitaore la un student, conform cerintelor problemei. Codul program asociat modulului articol este urmatorul:

Type articol

nr_matr As Integer

nume As String * 20

pren As String * 25

fac As String * 10

grupa As Byte

notap1_1 As Byte

notap2_1 As Byte

notas_1 As Byte

nota1 As Byte

notap_2 As Byte

notas_2 As Byte

nota2 As Byte

End Type

Proiectul fisiere.vbp este alcatuit din formele     fisiere.frm si afisare.frm si modul articol.bas al carui continut a fost prezentat anterior. Reamintim ca, daca prima forma a unui proiect se creaza automat, pentru introducerea alor forme in cadrul proiectului se procedeaza astfel: se executa click dreapta pe Forms din Project explorer si se acceseaza functia Add. Se poate selecta apoi Form si este inclusa in proiect o noua forma.

Forma Form1 a proiectului va avea interfata prezentata in fig. 11.3.2.. Se observa prezenta unui controler de tip label care are rolul de introduce un titul pentru fereastra directoare a proiectului, 5 butoane de comanda pentru realizarea functiilor proiectului si un contoler de tip caseta text pentru transmiterea parametrilor necesari formei Form2.


Fig.11.3.2.

În continuare prezentam codul program asociat primei forme si controrelelor din interfata acesteia:

Dim s As articol

Dim i, j As Byte

Private Sub Command1_Click()

Dim gata As Boolean

Dim r As String * 1

Open 'student' For Random As #1

i = 1

Data = False

While Not gata

s.nr_matr = InputBox('Numarul matricol al studentului')

s.nume = InputBox('Numele studentului')

s.pren = InputBox('Prenumele studentului')

s.grupa = InputBox('Grupa si anul de studiu')

s.notap1_1 = InputBox('Nota la prima proba practica sem. I')

s.notap2_1 = InputBox('Nota la a doua proba practica sem. I')

s.notas_1 = InputBox('Nota la proba scrisa sem. I')

s.notap_2 = InputBox('Nota la a doua proba practica sem. II')

s.notas_2 = InputBox('Nota la proba scrisa sem. II')

Put #1, i, s

r = InputBox('Gata adugare? [d/n]')

If r = 'd' Then

gata = True

Else

i = i + 1

End If

Wend

Close #1

End Sub

Private Sub Command2_Click()

i = InputBox('Cati studenti aveti in vedere?')

Open 'student' For Random As #2

j = 1

While j <= i

Get #2, j, s

If s.notap1_1 > 4 Then

If s.notap2_1 > 4 Then

If s.notas_1 > 4 Then

s.nota1 = (s.notap1_1 + s.notap2_1 + s.notas_1) / 3

End If

End If

Else

s.nota1 = 0

End If

If (s.notap_2 > 4) And (s.notas_2 > 4) Then

s.nota2 = (s.notap_2 + s.notas_2) / 2

Else

s.nota2 = 0

End If

Put #2, j, s

j = j + 1

Wend

Close #2

End Sub

Private Sub Command3_Click()

Form1.Hide

i = InputBox('Cati studenti aveti in vedere?')

Form1.Text1.Text = Str(i)

Form2.Command1.Enabled = True

If i = 1 Then

Form2.Command1.Enabled = False

End If

Form2.Show

End Sub

Private Sub Command6_Click()

End

End Sub

Private Sub Form_Load()

Form1.Text1.Visible = False

End Sub

Trebuie mentionat ca nu am dezvoltat decat codurile program asociate primelor trei si a utimului dintre butoanele de comanda. Celelalte doua (pentru modificare sau adaugare a unei noi inregistrari) raman ca exercitiu pentru cititor.

Formularul Form2 indeplineste doar functia de a asigura afisarea situatiei scolare pentru fiecare student in parte. Afisarea se face pe ecran in forma afisare.frm al carui aspect ca interfata este prezentat in fig. 11.2.4. Forma contine controlere de tip label, text si butoane de comanda.


Fig. 11.2.4.

Codul program asociat formei Form2 este urmatorul:

Private Sub Form_Load()

Open 'student' For Random As #3

Dim s As articol

Get #3, 1, s

Form2.Text1.Text = s.nume

Form2.Text2.Text = s.pren

Form2.Text3.Text = Str(s.notap1_1)

Form2.Text4.Text = Str(s.notap2_1)

Form2.Text5.Text = Str(s.notas_1)

Form2.Text6.Text = Str(s.nota1)

Form2.Text7.Text = Str(s.nota2)

Close #3

End Sub

Acest cod program realizeaza deschiderea fisierului "student" si afisarea datelor privitoare la primul student, precum si inchiderea acestui fisier.

Codul program asociat butonului de comanda urmatorul este:

Dim i As Byte

Private Sub Command1_Click()

i = CInt(Form1.Text1.Text)

j = 2

Open 'student' For Random As #3

Dim s As articol

While j <= i

Get #3, j, s

Form2.Text1.Text = s.nume

Form2.Text2.Text = s.pren

Form2.Text3.Text = Str(s.notap1_1)

Form2.Text4.Text = Str(s.notap2_1)

Form2.Text5.Text = Str(s.notas_1)

Form2.Text6.Text = Str(s.nota1)

Form2.Text7.Text = Str(s.nota2)

j = j + 1

Wend

Close #3

Form2.Command1.Enabled = False

End Sub

Acest cod program contine receptionarea numarului de studenti pentru care se doreste afisarea, deschiderea fisierului student si afisarea situatiei scolare pentru toti studentii, incepand cu al doilea. La terminarea listarii, butonul urmatorul este dezactivat (prin ultima instructiune din cod).

Codul program asociat butonului ies are scopul revenirii in prima forma si este prezentat in continuare:

Private Sub Command2_Click()

Form2.Hide

Form1.Show

End Sub





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate