CUPRINS
Prezentarea temei: | |||
--Enuntul problemei --Scurt istoric | |||
Aspecte generale | |||
Note: | |||
--Programul propriu-zis | |||
1.1. Prezentarea temei - Enuntul problemei
Programul pentru evidenta unui salon auto a fost realizat pentru a permite gestionarea facila a masinilor aflate intr-un salon auto.
Motivul realizarii acestei aplicatii si folosirii mediului de programare FoxPro este dat de existenta unui numar mare de magazine in care nu exista calculatoare cu resurse hardware suficiente pentru a rula alte aplicatii de gestiune. Programul realizat in FoxPro este o solutie pentru aceasta situatie.
Ideal ar fi sa se caute variante de imbunatatire a acestei solutii fie prin realizarea de investitii in tehnica de calcul performanta si achizitionarea de sofware performant (implica investitii financiare mari), fie imbunatatirea programului realizat in FoxPro prin adaugarea de facilitati noi.
Una din facilitatile care ar trebui implementate ar putea fi analiza stocurilor de masini si realizarea de catre program a unor rapoarte (inclusiv cu mici grafice) care sa permita utilizatorului sa vizualizeze masinile cu cel mai bun randament din punct de vedere al vanzarilor (astfel utilizatorul poate lua decizii referitoare la aprovizionarea cu noi masini in functie de vanzarile realizate anterior).
1.2. Prezentarea temei - Scurt istoric
O baza de date este o colectie de date de dimensiuni mari, aflate in interdependenta, memorate pe un suport (de regula magnetic) impreuna cu descrierea lor si a legaturilor dintre ele. Evolutia nivelului de dezvoltare tehnologica in industria de software a dus la organizarea bazelor de date dupa mai multe modele, unul foarte raspandit fiind modelul relational.
Modelul relational a fost pus la punct in anii '70, fiind consacrat in practica in anii '80 si '90. Acest model organizeaza datele in relatii sau tabele. O relatie descrie de regula o clasa de entitati din lumea reala. Clasa de entitati este caracterizata prin niste atribute sau proprietati, ce formeaza coloanele tabelei (in limbaj curent se numesc campuri). Pe liniile tabelei se gasesc valori posibile ale atributelor. Atributele (coloanele) compun schema sau structura tabelei (stabila in timp) iar liniile definesc continutul acestuia (variabil in timp).
Un SGBD reprezinta o colectie de programe car permit definirea structurii unei baze de date si, ulterior, gestionarea continutului acesteia. Prin caracteristicile sale, FoxPro (atunci cand au aparut versiuni si pentru sistemul de operare Windows s-a adaugat prefixul Visual) se incadreaza in categoria SGBD-urilor relationale.
Conform unei conceptii raspandite printre cei care lucreza in domeniul bazelor de date pentru calculatoare, FoxPro apartine familiei de programe "xBase", numita asa dupa programul dBase II.
In 1978, C. Wayne Ratliff a pus la punct un mic SGBD dedicat microcalculatoarelor. Microcalculatoarele din acea perioada aveau preturi destul de mari si performante extrem de modeste fata de ceea ce cunoastem noi astazi. Programul se numea Vulcan si ideea de la care s-a pornit scrierea acestuia era clasamentul unui campionat de fotbal. Ratliff a inceput sa mediatizeze acest produs si a avut cereri din partea unei firme mici ce calculatoare, firma care a vazut in acest program un instrument ieftin si comod de tinere la zi a datelor financiare, contabile, personale, etc. In 1980, Ratliff a primit din partea lui George Tate si Hall Lashlee, patronii unei firme mici, o oferta de colaborare. Ceva mai tarziu, cand Ratliff devine si el colaborator al firmei respective, produsul sau a stat la baza programului dBase II. Curand a inceput sa apara si concurenta, sub chipul unor firme ca Borland, Microrim, MicroPro si FoxBorland. Produsele tuturor acestor firme erau asemanatoare ca arhitectura cu dBase, de unde si reunirea acestora sub numele de xBase. Versiunea dBase IV din 1988 nu a avut succes datorita frecventelor erori ale produsului. Microsoft lanseaza intre timp SGBD Acces care nu era poate la fel de performant ca dBase dar avea o interfata prietenoasa si de o mare usurinta in utilizare, fiind proiectat sa fie exploatat direct in logica interfetei grafice utilizator specifica Windows. Firma Borland a creat versiuni imbunatatite ale programului dBase.
Fox Software si-a perfectionat produsul care a devenit FoxPro. Versiunea 2.0 a fost un succes comercial al anilor 1991. In acea perioada, Microsoft a incercat sa impuna Acces, dar acesta nu era inca foarte avansat. In lume exista un un numar mare de calculatoare mai vechi care nu putea rula sistemul de operare Windows (deci nici programul Acces) dar care erau foarte potrivite pentru programul FoxPro. In plus aplicatiile FoxPro se remarcau printr-o viteza de executie mare, impresionanta fata de dBase. Microsoft a achizitionat in cele din urma firma Fox Software (1992). Din momentul achizitiei, productia a continuat cu versiunile 2.5 si 2.6 (pentru DOS, Windows, Macintosh si UNIX), apoi cu versiunile "Visual" 3, 5 si 6.
Versiunile 2.x ale produsului FoxPro au oferit, pe langa motorul bazei de date, facilitati pentru scrierea si executia propriilor programe, proiectarea asistata a interfetelor (meniuri, formulare sau machete de prelucrare a datelor - in mod caracter, tipic mediului DOS), proiectarea de rapoarte, caracteristici specifice mediilor de dezvoltare a aplicatiilor. Versiunile "Visual" au introdus si ele o serie de facilitati.
Aceste caracteristici au facut ca FoxPro sa evolueze de la un SGBD simplu, cu oarecare facilitati de realizare a aplicatiilor, la un adevarat mediu integrat de dezvoltare - un mediu de dezvoltare consta dintr-un editor de texte pentru scrierea codului-sursa intr-un limbaj dat, un compilator pentru limbajul respectiv si cateva facilitati de natura depanatoarelor, pentru verificarea aplicatiei. O data cu perfectionarile in domeniul hardware-ului si cu cresterea atat a numarului de limbaje si variante ale acestora, cat si a numarului de dezvoltatori de aplicatii, aceste instrumente s-au diversificat si imbunatatit, integrand noi facilitati.
Astazi, printr-un mediu integrat de dezvoltare (IDE-Interactive Development Environment) intelegem un cadru completat de un set de instrumente pentru realizarea aplicatiilor. Instrumentele sunt mai ales din categoria generatoarelor de aplicatii, in care utilizatorul construieste aplicatia mai mult prin specificatii declarative decat pirn programare procedurala. De exemplu, machetele de introducere a datelor sunt proiectate vizual, programatorul plasand pe un ecran (formular) diferite obiecte (controale) predefinite, fiecare "stiind" sa interpreteze anumite evenimente - ca de pilda, un click de mouse sau o apasare de tasta. Nu e nevoie a se scrie instructiuni detaliate care sa asigure desenarea acelor obiecte de pe ecran la momentul executiei, generarea codului-sursa, pornind de la specificatiile create, cade in sarcina instrumentului respectiv.
2. Aspecte generale - definitii
O baza de date reprezinta o colectie de date persistente. Din acest punct de vedere logic, baza de date este un set de tabele, impreuna cu un set de indecsi si cu anumite relatii stabilite intre tabele. Din punct de vedere fizic, baza de date este un fisier cu o anumita structura, memorat pe disc intr-un anumit director. In cazul limbajului Fox, tabelele care apartin unei baze de date sunt memorate in fisiere separate, avand extensia .dbf .
Oricarei actiuni executate de calculator ii corespunde o comanda. Aceste comenzi se scriu pe o singura linie, in ceea ce se numette fereastra de comenzi. Pentru acceptarea comenzii se tasteaza <ENTER>.
Astfel, pentru a crea o noua tabela se utilizeaza comanda :
CREATE <nume>[.dbf]
Se va preciza in comanda numele noului fisier, iar la executarea comenzii suntem invitati printr-o fereastra de dialog sa precizam structura tabelei respective.
Dupa creare, suntem intrebati daca dorim sa introducem imediat inregistrari in noua tabela. Acest lucru poate fi facut acum sau mai tarziu. Pentru a introduce ulterior alte inregistrari, vom folosi comanda :
APPEND
Se deschide o fereastra de adaugare, in care suntem invitati sa tastam noi date. In momentul in care nu mai dorim sa introducem date, vom apasa tastele <CTRL> + <END>.
pentru a afisa sau modifica datele introduse avem la dispozitie comanda BROWSE. Aceasta poate avea mai multi parametri. Formatul general al comenzii si principalii sai parametri sunt urmatorii :
BROWSE [FIELDS <camp1><:R><:dim1>
<camp calculat1>=<exp1]
[FOR <conditie>]
[LOCK <nr>] [WIDTH <exp>]
[NOAPPEND] [NOEDIT] [NODELETE]
Informatiile din campuri se vor afisa pe verticala. Prin optiunea FIELDS este posibila afisarea doar a unei liste reduse de cimpuri. Mai mult, printre acestea pot apare si cimpuri care nu sunt memorate efectiv in baza de date. Acestea din urma poarta denumirea de campuri calculate, iar valorile prezentate acolo se pot determina pornind de la informatiile deja existente. Pentru fiecare cimp se poate preciza lungimea de afisare (WIDTH) si daca datele pot fi modificate sau nu (LOCK). De asemenea, se poate preciza lungimea maxima de afisare a tuturor campurilor. Prin clauza FOR se vor afisa numai acele inregistrari care respecta conditia data. In sfarsit, putem anula posibilitatea actiunilor de adaugare (NOAPPEND), modificare (NOEDIT), stergere (NODELETE).
Exemple concrete de utilizare a comenzii :
browse fields nume, prenume for camin==.T.
browse fields nume :R :3 , media
browse noedit, noappend
browse for camin==.T. width 10
Odata deschisa fereastra de browse, pentru adaugarea de noi inregistrari folosim combinatia <CTRL> + <N>. La salvarea modificarilorefectuate se apasa <CTRL> + <END>.
Iata cum va arata ecranul in urma unei comenzi simple BROWSE :
Dupa ce a fost creata o tabela, aceasta se afla in starea de 'deschis'. Aceasta inseamna ca fisierul respectiv este deschis si se pot efectua operatii (adaugare, modificare, afisare etc.) asupra datelor respective. Pentru a deschide o tabela deja existenta, folosim commanda :
USE <nume>[.dbf]
iar pentru a o inchide, comanda :
USE
Listarea pe ecran a informatiilor comtinute in tabela se efectueaza cu comanda :
LIST
Iata cum apar aceste date pe ecran :
Informatiile globale referitoare la tabela curenta pot fi afisate cu ajutorul comenzii comutator :
SET STATUS ON / OFF
Acestea cuprind printre altele : numele tabelei, numarul total de inregistrari si numele inregistrarii curente. La deschiderea bazei de date inregistrarea curenta este prima inregistrare.
Putem lucra intr-un director personal prin utilizarea comenzii :
SET DEFAULT TO <cale>, unde <cale> reprezinta un drum de tip DOS.
Variabile
Pe langa memorarea datelor sub forma in baze de date (tabele) in cadrul unor fisiere speciale pe harddisc, se impune si posibilitatea memorarii temporare a acestor date in memoria interna. Acest lucru se realizeaza in principal prin folosirea variabilelor.
Variabila este un obiect definit prin 4 caracteristici:
a) un tip de data anumit;
b) un nume (identificator);
c) o valoare (curenta);
d) o adresa de memorie.
Putem figura toate acestea in felul urmator:
putem face abstractie de adresa de memorie a variabilei; acest lucru este gestionat numai de calculator.
in limbajul Fox, tipul de data al unei variabile nu este fixat la inceput; el poate fi modificat printr-o simpla atribuire ulterioara.
Date generale:
Programul principal este meniu.mpr. Pentru a rula programul alegem din meniul program optiunea do cautam in folderu cu atestatul fisierul meniu.mpr.
Tabelele folosite de program sunt tva.dbf, marfa.dbf, coduri.dbf si vand.dbf.
Structura tabelei vand.dbf :
Structura tabelei marfa.dbf :
Structura tabelei coduri .dbf :
Meniul are urmatoarele optiuni:
Se introduc codurile cu numele masinii si apoi se pot face operatii de intrare pentru codurile masinilor incluse , iesiri in limita stocului existent, modificari de masini (pret, ),coduri ..si se fac diverse situatii.
Programul are un meniu orizontal cu urmatoarele optiuni:
DATE MASINI este un submeniu cu urmatoarele optiuni:
intrari masini- se executa programul datemarf.prg cu ajutorul caruia introduc masini ale caror coduri sunt deja introduse.
Iesiri masini- se executa programul datevand.prg cu ajutorul caruia se vand masini existente
Coduri masini- se executa programul datecodu.prg cu ajutorul caruia introduc codurile masinilor. Aceasta optiune se executa prima.
ACTUALIZARI este un dubmeniu cu 2 optiuni:
intrari masini- modifmar.prg -se introduce codul unei masini existente si o data de intrare existenta se fac modificari
coduri- se executa programul modifcod.prg
TVA POT MODIFICA TVA-UL-
RAPOARTE este un submeniu cu optiunile:
intrari/perioada- se executa programul rapint.prg . Se introduc 2 date calendaristice si sunt afisate toate intrarile de masini din acea perioada
iesiri/perioada- se executa programul rapies.prg . Se introduc 2 date calendaristice si sunt afisate toate iesirile de masini din acea perioada
liste masini- liste.prg-sunt afisate toate masinile.
VIZUALIZARI este un submeniu cu optiunile:
intrari/perioada- inper.prg
iesiri/perioada- iesper.prg
intrari masina- unprod.prg
intrari/toate masinile - totprod.prg
HELP-HELP.PRG-o scurta descriere a programului
IESIRE- iesirea din program- iesire.prg
Citirea variabilelor
Operatia de citire se executa in mod simplu prin comanda INPUT. Forma generala a comenzii este urmatoarea:
INPUT <mesaj> TO <nume_variabila>
Spre exemplu:
input 'a=' to a
input 'numar=' to nr
Citirea datelor numerice cu comanda input se realizeaza tastand cifra cu cifra valoarea dorita, iar in final apasandu-se tasta ENTER. In cazul datelor de tip sir de caractere se vor tasta in plus, la inceput si la sfarsit, caracterele delimitatorii: '(apostrof) sau "(ghilimele). La fel, pentru citirea datelor de tip data calendaristica se vor utiliza perechile de acolade si delimitatorii de forma: / .
Atribuirea
Asupra variabilelor declarate se pot efectua calcule, spre exemplu calculele aritmetice prin operatiile: + (adunare), - (scadere), * (inmultire), / (impartire). Rezultatul acestor calcule se va depune in cele mai multe cazuri tot intr-una din aceste variabile.
Astfel, prin atribuirea: a=b+c in variabila a se va depune valoarea sumei dintre valorile continute in variabilele b si c. Similar, atribuirea a=a+1 va avea ca efect cresterea cu o unitate a valorii variabilei a.
Forma generala a comenzii de atribuire este urmatoarea:
<variabila>=<expresie>
Insasi declararea unei variabile se poate face printr-o prima atribuire a unei valori initiale.
Pentru primul caz putem scrie secventa de atribuiri:
b=1
c=2
a=b+c
O variabila poate fi declarata printr-o comanda de citire.
Spre exemplu, putem scrie succesiv comenzile:
input 'a=' to a
a=a+1
Scrierea datelor
Putem scrie pe ecran valoarea curenta a unei expresii, iar ca un caz particular a unei variabile. Pentru aceasta, se utilizeaza comanda ? cu urmatorul format general:
?<lista_expresii>
Expresiile din lista se despart prin virgula.
Spre exemplu:
?a
?(a+b)*c
?a,b,c
?'rezultatul=',c
Programe
Pana acum comenzile erau executate prin tastarea lor in fereastra de comenzi, urmata de apasarea tastei <ENTER>. In acelasi mod se proceda si in cazul in care era necesara o intreaga secventa de comenzi.
Exista si o modalitate mult mai eleganta si mai generala: scrierea respectivei secvente de comenzi intr-un fisier special, urmata de compilarea si executarea fisierului respectiv.
Aceste fisiere poarta numele de fisiere program sau fisiere comenzi. Comenzile scrise acolo se vor executa secvential in ordinea in care au fost scrise. Mai mult, prin utilizarea de fisiere program este posibila folosirea unor structuri specifice de control al fluxului de executie al respectivelor comenzi.
Fisierele program poarta extensia .prg .
Editarea programului
Editarea unui fisier se realizeaza prin comanda:
MODIFY COMMAND <nume_fisier>
Spre exemplu: modi comm unu.prg
Presupunem ca dorim ca programul respectiv sa citeasca doua numere intregi, sa calculeze si sa tipareasca suma lor. Atunci, in fereastra nou deschisa se vor tipari pe linii separate urmatoarele comenzi:
input 'a=' to a
input 'b=' to b
c=a+b
?c
Ca regula generala, pentru a inhiba afisarea pe ecran a unor mesaje din partea sistemului Fox in cadrul executiei programului, se utilizeaza comanda comutator:
SET TALK ON / OFF
Astfel, primul nostru program va arata in modul urmator:
set talk off
input 'a=' to a
input 'b=' to b
c=a+b
?c
Iar urmatoarea figura arata modul in care apar pe ecran aceste lucruri:
Compilarea
Urmatoarea etapa in folosirea unui program o reprezinta operatia de compilare. Compilarea se executa cu ajutorul optiunii COMPILE din submeniu.
Acum se verifica daca comenzile programului au fost scrise sintactic corect si se genereaza un fitier obiect cu acelasi nume, dar cu extensia .fxp. Tot acum, prin compilare, se salveaza si continutul fisierului sursa editat. Nu mai este necesara salvarea programului prin intermediul optiunii SAVE din submeniul FILE.
Executia
In sfarsit, un program compilat poate fi lansat in executie. Acest lucru se realizeaza prin comanda DO, cu urmatoarea forma generala:
DO <nume_fisier>
Este bine ca inainte de executie fereastra cu fisierul sursa sa fie inchisa.
3.1. Note - Programul propiu-zis
** ** ** ** ** ** ** ** *
*
* 02/08/06 MENIU.MPR 22:58:07
*
** ** ** ** ** ** ** ** *
*
* Author's Name
*
* Copyright (C) 2006 Company Name
* Address
* City, Zip
*
* Description:
* This PROGRAM was automatically generated BY GENMENU.
*
** ** ** ** ** ** ** ** *
** ** ** ** ** ** ** ** *
*
* Menu Definition
*
** ** ** ** ** ** ** ** *
SET SYSMENU TO
SET SYSMENU AUTOMATIC
DEFINE PAD _1q91d8a5a OF _MSYSMENU PROMPT 'DATE' COLOR SCHEME 3 ;
KEY ALT+D, ''
DEFINE PAD _1q91d8a5b OF _MSYSMENU PROMPT 'ACTUALIZARI' COLOR SCHEME 3 ;
KEY ALT+A, ''
DEFINE PAD _1q91d8a5c OF _MSYSMENU PROMPT 'TVA' COLOR SCHEME 3 ;
KEY ALT+T, ''
DEFINE PAD _1q91d8a5d OF _MSYSMENU PROMPT 'RAPOARTE' COLOR SCHEME 3 ;
KEY ALT+R, ''
DEFINE PAD _1q91d8a5e OF _MSYSMENU PROMPT 'VIZUALIZARI' COLOR SCHEME 3 ;
KEY ALT+V, ''
DEFINE PAD _1q91d8a5f OF _MSYSMENU PROMPT 'HELP' COLOR SCHEME 3 ;
KEY ALT+H, ''
DEFINE PAD _1q91d8a5g OF _MSYSMENU PROMPT 'IESIRE' COLOR SCHEME 3 ;
KEY ALT+I, ''
ON PAD _1q91d8a5a OF _MSYSMENU ACTIVATE POPUP date
ON PAD _1q91d8a5b OF _MSYSMENU ACTIVATE POPUP actualizar
ON SELECTION PAD _1q91d8a5c OF _MSYSMENU do tvamodif.prg
ON PAD _1q91d8a5d OF _MSYSMENU ACTIVATE POPUP rapoarte
ON PAD _1q91d8a5e OF _MSYSMENU ACTIVATE POPUP vizualizar
ON SELECTION PAD _1q91d8a5f OF _MSYSMENU do help.prg
ON SELECTION PAD _1q91d8a5g OF _MSYSMENU do iesire.prg
DEFINE POPUP date MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF date PROMPT 'INTRARI ARTICOLE'
DEFINE BAR 2 OF date PROMPT 'IESIRI ARTICOLE'
DEFINE BAR 3 OF date PROMPT 'CODURI ARTICOLE'
ON SELECTION BAR 1 OF date do datemarfa.prg
ON SELECTION BAR 2 OF date do datevand.prg
ON SELECTION BAR 3 OF date do datecoduri.prg
DEFINE POPUP actualizar MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF actualizar PROMPT 'INTRARI ARTICOLE'
DEFINE BAR 2 OF actualizar PROMPT 'CODURI'
ON SELECTION BAR 1 OF actualizar do modifmarfa.prg
ON SELECTION BAR 2 OF actualizar do modifcod.prg
DEFINE POPUP rapoarte MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF rapoarte PROMPT 'INTRARI/PERIOADA'
DEFINE BAR 2 OF rapoarte PROMPT 'IESIRI/PERIOADA'
DEFINE BAR 3 OF rapoarte PROMPT 'LISTE ARTICOLE'
ON SELECTION BAR 1 OF rapoarte do rapint.prg
ON SELECTION BAR 2 OF rapoarte do rapies.prg
ON SELECTION BAR 3 OF rapoarte do liste.prg
DEFINE POPUP vizualizar MARGIN RELATIVE SHADOW COLOR SCHEME 4
DEFINE BAR 1 OF vizualizar PROMPT 'INTRARI/PERIOADA'
DEFINE BAR 2 OF vizualizar PROMPT 'IESIRE/PERIOADA'
DEFINE BAR 3 OF vizualizar PROMPT 'INTRARI/UN ARTICOL'
DEFINE BAR 4 OF vizualizar PROMPT 'INTRARI/TOATE PRODUSELE'
ON SELECTION BAR 1 OF vizualizar do inper.prg
ON SELECTION BAR 2 OF vizualizar do iesper.prg
ON SELECTION BAR 3 OF vizualizar do unprod.prg
ON SELECTION BAR 4 OF vizualizar do totprod.prg
DEFINE WIND PR_IN from 0,0 TO 50,150 ;
IN screen;
TITLE 'Atestat ';
FONT 'ROMAN' , 15 STYLE 'B';
SYSTEM CLOSE ;
grow MINIMIZE ZOOM;
FILL FILE 'sediu.bmp'
ACTI WIND PR_IN
move wind pr_in center
@2,36 SAY'EVIDENTA SALON AUTO' COLOR Gr+/b
@17,31 SAY' ATESTAT DE DIPLOMA' COLOR Gr+/b
@18,31 SAY' CANDIDAT: numele ' COLOR Gr+/b
@19,31 SAY' ~~2006~~' COLOR Gr+/b
Procedure datecoduri
CLEAR
rasp='D'
DO WHILE rasp='D'
define window rap from 4,4 to 20,74 double title 'INTRODUCERE DATE - CODURI MASINI';
FILL FILE 'fundal.bmp'
activate window rap
move wind rap center
USE coduri ORDER cod_prod
SCATTER MEMVAR BLANK
@5,5 SAY'COD PRODUS'
@5,30 GET m.cod_prod VALID m.cod_prod<>0 ERROR'COD DIFERIT DE ZERO' PICTURE '@Z 999'
READ
SEEK m.cod_prod
IF FOUND()
DO sunet
WAIT 'DUBLURA' WINDOW
ELSE
@6,5 SAY'DENUMIRE MASINA'
@6,30 GET m.den_prod FUNCTION'!'
READ
APPEND BLANK
GATHER MEMVAR
ENDIF
@ 10,10 SAY 'MAI INTRODUCETI DATE ? [D/N]'
@ 10,38 GET rasp picture '!'
READ
CLEAR
DEACTIVATE WINDOW rap
ENDDO
CLOSE DATA
Return
Procedure Datemarfa
CLEAR
rasp='D'
DO WHILE rasp='D'
define window rap from 4,4 to 20,74 double title 'INTRODUCERE DATE - CODURI MASINI';
FILL FILE 'fundal.bmp'
activate window rap
move wind rap center
USE coduri ORDER cod_prod
SCATTER MEMVAR BLANK
@5,5 SAY'COD PRODUS'
@5,30 GET m.cod_prod VALID m.cod_prod<>0 ERROR'COD DIFERIT DE ZERO' PICTURE '@Z 999'
READ
SEEK m.cod_prod
IF FOUND()
DO sunet
WAIT 'DUBLURA' WINDOW
ELSE
@6,5 SAY'DENUMIRE MASINA'
@6,30 GET m.den_prod FUNCTION'!'
READ
APPEND BLANK
GATHER MEMVAR
ENDIF
@ 10,10 SAY 'MAI INTRODUCETI DATE ? [D/N]'
@ 10,38 GET rasp picture '!'
READ
CLEAR
DEACTIVATE WINDOW rap
ENDDO
CLOSE DATA
Return
Procedure datevand
SAVE SCREEN TO aa
CLEAR
rasp='D'
DO WHILE rasp='D'
define window rap from 4,4 to 20,74 double title 'INTRODUCERE DATE - CODURI MASINA';
FILL FILE 'fundal.bmp'
activate window rap
move wind rap center
USE coduri ORDER cod_prod
SCATTER MEMVAR BLANK
@5,5 SAY'COD MASINA'
@5,30 GET m.cod_prod VALID m.cod_prod<>0 ERROR'COD DIFERIT DE ZERO' PICTURE '@Z 999'
READ
SEEK m.cod_prod
IF FOUND()
DO sunet
WAIT 'DUBLURA' WINDOW
ELSE
@6,5 SAY'DENUMIRE MASINA'
@6,30 GET m.den_prod FUNCTION'!'
READ
APPEND BLANK
GATHER MEMVAR
ENDIF
@ 10,10 SAY 'MAI INTRODUCETI DATE ? [D/N]'
@ 10,38 GET rasp picture '!'
READ
CLEAR
DEACTIVATE WINDOW rap
ENDDO
CLOSE DATA
Return
define window help from 2,2 to 22,77 double title 'AJUTOR' footer 'Apasati orice tasta pentru a continua' color scheme 5;
FILL FILE 'fundal.bmp'
activate window help
move wind help center
set cursor OFF
@ 3,3 say 'Programul realizeaza o evidenta a aprovizionarii cu MASINI a unei '
@ 4,0 SAY' salon auto si vanzarile lor. Masinile sunt codificate.'
@ 5,3 SAY ''
@6,0 SAY'Datele sunt introduse de catre operator,de la tastatura.'
@7,0 SAY 'Pretul de vanzare se calculeaza prin program de catre programator,dupa'
@8,0 SAY'formula : pret_vanzare=pret_unitar+valoare_TVA+valoare_adaos_comercoal.'
@9,0 SAY'Valoarea TVA se calculeaza astfel: valoare_TVA=procent_tva*pret_unitar/100'
@10,3 SAY' '
@11,0 SAY' '
@12,0 SAY'Se pot scoate liste cu intrari si vanzare masini ! '
@13,3 SAY'Tot prin rapoarte se calculeaza valoarea totala a masinilor achizitionate ,'
@14,0 SAY'respectiv vandute precum si alte informatii referitoare la valorile de vanzare!'
read
set cursor on
deactivate window HELP
procedure inper
CLEAR
define window cevad from 4,4 to 20,74 double title 'VIZUALIZARE INTRARI' FOOTER '[Esc]=Iesire' shadow color scheme 1;
FILL FILE 'fundal.bmp'
activate window cevad
move wind cevad center
define window cevad1 from 6,6 to 18,72 none color scheme 1;
FILL FILE 'fundal.bmp'
activate window cevad1
move wind cevad1 center
m.di=
m.df=
@0,0 say 'DE LA: '
@0,10 get m.di
@1,0 say 'PANA LA: '
@1,10 get m.df
read
use marfa order cod_prod
brow for data_int>=m.di and data_int<=m.df noedit
close data
deactivate window cevad,cevad1
return
procedure liste
CLEAR
use marfa order den_prod
repo form intrari.frx pdsetup preview
close data
deactivate window rap
return
procedure modifcod
rasp='D'
DO WHILE rasp='D'
define window rap from 4,4 to 20,74 double title 'INTRODUCERE DATE - CODURI ARTICOLE';
FILL FILE 'fundal.bmp'
activate window rap
move wind rap center
USE coduri ORDER cod_prod
SCATTER MEMVAR BLANK
@5,5 SAY'COD ARTICOL'
@5,30 GET m.cod_prod VALID m.cod_prod<>0 ERROR'COD DIFERIT DE ZERO' PICTURE '@Z 999'
READ
SEEK m.cod_prod
IF NOT FOUND()
DO sunet
WAIT 'COD INEXISTENT' WINDOW
ELSE
SCATTER MEMVAR
@6,5 SAY'DENUMIRE ARTICOL'
@6,30 GET m.den_prod FUNCTION'!'
READ
GATHER MEMVAR
ENDIF
@ 10,10 SAY 'MAI MODIFICATI DATE ? [D/N]'
@ 10,38 GET rasp picture '!'
READ
CLEAR
DEACTIVATE WINDOW rap
ENDDO
CLOSE DATA
Return
Procedure modifmarfa
define window fermarfa from 4,4 to 20,74 double title 'DATE MARFA';
FILL FILE 'fundal.bmp'
activate window fermarfa
move wind fermarfa center
rasp='da'
do while rasp='da'
@ 1,2 say 'COD ARTICOL '
@ 2,2 say 'DATA INTRARII '
@ 3,2 say 'DENUMIRE ARTICOL'
@ 4,2 say 'PRET UNITAR '
@ 5,2 say'NUMAR BUCATI '
@ 6,2 say 'VALOARE TVA '
@ 7,2 say 'PRET VANZARE '
sele 1
use marfa order modific
scatter memvar blank
sele 2
use tva
scatter memvar
sele 1
@ 1,19 get m.cod_prod picture '@z 9999'
@ 2,19 get m.data_int
read
seek STR(m.cod_prod)+DTOC(m.data_int)
if NOT found()
DO sunet
wait 'ARTICOL INEXISTENT !!!' window
define window vad1 from 4,4 to 20,74 double title 'VIZUALIZARE INTRARI' FOOTER '[ESC]=Iesire' shadow;
FILL FILE 'fundal.bmp'
activate window fermarfa
move wind fermarfa center
activate window vad1
define window vad from 6,6 to 18,72 none
activate window vad
browse
deactivate windows vad,vad1
ELSE
SCATTER MEMVAR
@ 3,19 say m.den_prod COLOR r+*/n
@ 4,19 get m.pret_unit PICTURE '@z 9999999999'
@ 5,19 get m.nr_buc valid m.nr_buc<>0 error 'NUMAR DIFERIT DE ZERO' PICTURE '@Z 9999'
read
m.val_tva=m.pret_unit*m.procent/100
m.pret_vanz=m.pret_unit+m.val_tva
@ 6,19 SAY m.val_tva COLOR r+*/n
@ 7,19 SAY m.pret_vanz COLOR r+*/n
gather memvar
replace all stoc with stoc+m.nr_buc for cod_prod=m.cod_prod
endif
@ 10,10 say 'MAI FACETI MODIFICARI ? [D/N]'
@ 10,40 get rasp picture '!'
read
clear
close data
enddo
deactivate window fermarfa
return
procedure sunet
SET BELL TO 880,4
??CHR(7)
SET BELL TO 1400,4
??CHR(7)
SET BELL TO 880,4
??CHR(7)
SET BELL TO
Return
Procedure totprod
define window cevad from 4,4 to 20,74 double title 'VIZUALIZARI'footer '[Esc]=Iesire' shadow color scheme 1;
FILL FILE 'fundal.bmp'
activate window cevad
move wind cevad center
define window cevad1 from 6,6 to 18,72 none color scheme 1;
FILL FILE 'fundal.bmp'
activate window cevad1
move wind cevad1 center
use marfa order cod_prod
browse noedit
close data
deactivate window cevad,cevad1
return
procedure tvamodif
define window modtva from 4,2 to 22,75 double title 'MODIFICATI PROCENTUL DE TVA ?' FOOTER '[Esc]=Iesire' shadow color scheme 5;
FILL FILE 'fundal.bmp'
activate window modtva
move wind modtva center
define window modtva1 from 6,4 to 20,73 none color scheme 5;
FILL FILE 'fundal.bmp'
activate window modtva1
move wind modtva1 center
use tva
brow
use
deactivate windows modtva,modtva1
return
procedure unprod
define window cevad from 4,4 to 20,74 double title'VIZUALIZARI' footer'[Esc]=Iesire' shadow color scheme 1;
FILL FILE 'fundal.bmp'
activate window cevad
move wind cevad center
define window cevad1 from 6,6 to 18,72 none color scheme 1;
FILL FILE 'fundal.bmp'
activate window cevad1
move wind cevad1 center
use marfa order cod_prod
scatter memvar blank
@0,0 say 'COD MASINA'
@0,15 get m.cod_prod picture '@z 999'
read
seek m.cod_prod
if not found()
wait'EROARE !!!COD INEXISTENT !'WINDOW
else
brow noedit for cod_prod=m.cod_prod
endif
close data
deactivate window cevad,cevad1
return
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |