Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Programarea Sistemului Informational in EXPERT4

calculatoare



+ Font mai mare | - Font mai mic



Cuprins



Introducere   

Operatii in StocEXPERT

Programarea Operatiilor prin DesignEXPERT

Rularea unei operatii programate in Configurare

Elementele unui pas

Listele de selectie din Stoc

Procedura Eveniment - limbajul PL/EXPERT

1.Blocul de cod si comentariile in PL/EXPERT

2.Continutul bloculului de cod PL/EXPERT

1) SQL de executat:

2) Comenzi specifice StocEXPERT

3) Variabile PL/EXPERT

4) Comenzi PL/EXPERT

Rapoarte in EXPERT4

Report Manager   

Particularitati in programarea operatiilor in DesignEXPERT

Determinarea obiectelor

Identificatorul Global

Rolul Identificatorului Global

Append si Update query pe INTRARI si IESIRI

Refferential integrity

Campuri NOT NULL (reguli de validare)

Campuri obligatorii TmpUser..

In concluzie

Introducere

Programarea sistemului informational inseamna crearea unui pachet de configurare(design) specific unei activitati economice sau unui utilizator. Programarea se face in aplicatia DesignEXPERT, iar rularea se face in aplicatia StocEXPERT.

Designul de sistem informational este stocat in fisierul de date StocEXPERT (SXF).

Un sistem informational se poate salva intr-un fisier design (CSX) prin Export Fisier de configurare si se poate incarca intr-un fisier de date prin Import Fisier de Configurare.

Elementele unui sistem informational stocate in pachetul de design

Documente

Tipurile de documente si proprietatile lor

Contabilizarea documentelor in diverse sisteme contabile (books)

Operatii

Activitati

Operatii

Pasii Operatiilor

Proceduri Eveniment

Elemente de interfata

Help operator

Rapoarte

Registre contabile paralele

Identificatori articole

Documente

Se poate defini orice document nou , specificandu-se daca este de intrare sau iesire pe stoc(in/out) si daca are document legat. Documentele legate sunt doua ocumente, unul de intrare si altul de iesire, care se introduc concomitent printr-o operatie.

Pentru fiecare tip de document se poate stabili modul de contabilizare in mai multe sisteme contabile. Definirea notelor contabile ce trebuie generate la introducerea unui document se face la "Contabilizare", unde se definesc formule de construire a conturilor si sumelor pt. fiecare inregistrare a fiecarui document.

Operatii in StocEXPERT

Operatiile au ca functie principala generarea de documente de intrare si iesire.

Operatiile sunt grupate pe activitati si se executa toate in aceeasi fereastra, indiferent de natura acestora. Fereastra in care se executa operatiile este de tip Wizard programabil, care se programeaza in DesignEXPERT.


Tablela

[Parameters]

 

Tabele localizate in fisierul temporar de procesare (PRSTOC.MDB)

 

Tablela

[LRParam]

 

SELECT SQL editabil pe tabele din fisierul de date (*.SXF) - portiunea din tabelele Iesiri resp. Intrari care este in editare pt. User-ul curent

 

Query [TmpUserIesiri]

 

Query [TmpUserIntrari]

 

Programarea Operatiilor prin DesignEXPERT

Configurarea se face in fereastra "Configurare Operatii" in aplicatia DesignEXPERT:

Crearea unei operatii identice cu cea selectata

 

Se stabilesc variantele de layout la GridLotRequest (cerere scadere din stoc), Grid Iesiri, Grid Intrari

 

Zona care determina cum sa arate fereastra (layout-ul ferestrei) de operatii cand se ajunge la pasul selectat.

 

Daca se doreste controlarea unei coloane care apare in Grid-Operatii si nu apare aici, o puteti adauga aici prin "Adauga Camp".

Daca la un pas nu doriti sa fie vizibil un Grid, in locul unde se specifica layout-ul lasati vid.

 




Rularea unei operatii programate in Configurare

Se face in fereatra Operatii.

Se alege activitatea, apoi operatia si apar pasii operatiei. Executia operatiei inseamna executia tuturor pasilor operatiei. Fiecare pas stabileste ce informatie trebuie sa introduca operatorul prin prezentarea elementelor de interfata si face apoi prelucrarea informatiei introduse prin executia procedurii eveniment aferenta pasului.

Elementele unui pas

Tip element

Element

Descriere

Se Executa

INTERFATA

Interfata de introducere a informatiei

Layout Operatii:

Cum sa arate fereastra Operatii - ce informatii sa ceara operatorului

LA POZITIONARE PE PAS

Help operatie

Explicatii pt. operator: cum sa introduca informatia

Sql de selectie stoc (WHERE clause pt. stoc)

Filtrul de selectie al stocului pentru operarea iesirilor- pe LotRequest si pe GridIesiri. Stocul apare ca un DropDownList (combo) in interiorul gridului si se deschide cu F4 pe campurile de cautare stoc (denumire, cod etc.). Iesirile se opereaza prin selectia unei pozitii de pe stoc.

PRELUCRARE

Procedura eveniment

Face prelucrarea informatiei prin:

-cererea de informatii suplimentare (daca e cazul) operatorului prin variabile PL/EXPERT

-prelucrare informatie prin SQL

-prelucrare informatie prin comenzi PL/EXPERT

-lansare de rapoarte etc.

LA TRECEREA LA PASUL URMATOR

Dupa ce s-a ales operatia la Operatii, apar pasii operatiei.

La apasarea butonului NEXT :

se executa procedura de la pasul curent

se trece la pasul urmator si se aplica elementele de interfata aferente pasului urmator

Listele de selectie din Stoc

Pentru introducerea inregistrarilor in GridIesiri si GridLotRequest exista liste DropDown (combo) din care se selecteaza pozitia din stoc care urmeaza sa se scada din stoc.

Lista de stoc de la GridLotRequest contine stocul cu cantitatea cumulata pe Identificatorul Global, indiferent de lot.

Lista de stoc de la GridIesiri contine stocul cu cantitatea aferenta fiecarui lot de produs.

Clauza WHERE pt. stoc de la fiecare pas se aplica asupra ambelor liste de stoc. La listele de stoc se face refresh la trecerea la pasul urmator daca acesta are clauza WHERE diferita de cea a pasului curent.

Listele de stoc au ca si clauza de selectie, inainte de aceasta clauza where, urmatoarele elemente:

Se arata doar stocul aferent gestiunilor care suporta documentul de iesire curent. Gestiunile care suporta documentul de iesire sunt cele care au contul de gestiune LIKE unul din cele din lista din campul ContGest din dreptul documentului in fereastra "DOCUMENTE"

SI

Se arata doar stocul pe gestiunule care corespund LIKE [parameters].StocGest.

SI pe cele care au GrupGest LIKE campul [parameters].StocGrupGest

La aceste campuri se face UPDATE la "*" prin .

In concluzie, pentru filtrarea stocului se pot face urmatoarele:

se stabileste DocGest la documentul de iesire

se stabileste StocGest in [parameters] dupa

se stabileste StocGrupGest in [parameters] dupa

se stabileste la fiecare pas WHERE clause pt. stoc

Procedura Eveniment - limbajul PL/EXPERT

Procedura Eveniment este ceea ce trebuie sa execute StocExpert in momentul in care operatorul apasa NEXT la un anumit pas de executie operatii.

Procedura Eveniment contine blocuri de cod si comentarii.

Limbajul de programare in Procedura Eveniment se numeste PL/EXPERT (Procedure Language EXPERT)

1.Blocul de cod si comentariile in PL/EXPERT

Blocul de cod este o portiune de cod incadrata de acolade: .

Blocul de cod reprezinta ceea ce trebuie sa se execute. Tot textul care este in afara vreunui bloc de cod este considerat a fi comentariu, utilizat pt. a se identifica ulterior de catre programator ce reprezinta un blocul de cod de langa el.

Exemple:


Exemplul 1.

stergerea tabelei LRParam

Exemplul 2.

Blocuri de cod

 
mesajul catre user

Intr-o procedura eveniment

Ce contine blocul de cod PL/EXPERT

1) SQL de executat:

-SQL stocat in baza de date sub forma de query

-SQL update query

-SQL delete query

-SQL append query

-SQL create table query *

-SQL drop table query *

-SQL alter table query *

*) Create table si drop table se folosesc doar in Report Manager, pt. a crea tabele pentru rapoarte

2) Comenzi specifice StocEXPERT

3) Variabile PL/EXPERT

A. Variabile statice

B. Variabile dinamice

4) Comenzi PL/EXPERT

2.Continutul bloculului de cod PL/EXPERT

1) SQL de executat

-SQL stocat in baza de date sub forma de query

Exemple:

- folosit pt initializarea unei operatii

face ca partenerul curent (SelPartener in Tabela Parameters) sa fie partenerul pentru comanda curenta

- determina ce trebuie aprovizionat intr-un proces tehnologic

- determina ce trebuie aprovizionat intr-un proces tehnologic prin diferenta la stoc (CantAprov=CantTotNeces-CantPeStoc)

- determina ce trebuie aprovizionat intr-un proces tehnologic prin diferenta la stoc (CantAprov=CantTotNeces-CantPeStoc) cu conditia ca ceea ce e pe stoc sa aiba OrderID curent

- determina ce trebuie aprovizionat intr-un proces tehnologic exclusiv semifabricate

- determina ce trebuie aprovizionat intr-un proces tehnologic prin diferenta la stoc (CantAprov=CantTotNeces-CantPeStoc) exclusiv semifabricate

- determina ce trebuie aprovizionat intr-un proces tehnologic prin diferenta la stoc (CantAprov=CantTotNeces-CantPeStoc) cu conditia ca ceea ce e pe stoc sa aiba OrderID curent , exclusiv semifabricate

- determina ce trebuie lansat in consum intr-un proces tehnologic

- determina ce trebuie lansat in consum intr-un proces tehnologic prin diferenta la stoc (CantAprov=CantTotNeces-CantPeStoc)

- determina ce trebuie lansat in consum intr-un proces tehnologic prin diferenta la stoc (CantAprov=CantTotNeces-CantPeStoc) cu conditia ca ceea ce e pe stoc sa aiba OrderID curent

- determina ce trebuie consumat intr-un proces tehnologic

-calcul de cost produs finit

- determina ce se obtine intr-un proces tehnologic

- stabileste doc. Intrare aflat in editare= doc. curent pt. contabilizare

stabileste doc. Iesire aflat in editare= doc. curent pt. contabilizare

-face retur la un document de iesire (cel selectat pe Parameters)

-SQL update query

= fraza SQL care prin executie modifica valoarea campurilor selectate la o valoare data sau calculata

-este utilizat pt. diverse calcule

Append Query=INSERT INTO.

Update Query=UPDATE.SET..

Delete Query=DELETE.FROM..

MakeTable Query= SELECT.INTO.FROM.

Create able Query=CREATE TABLE|INDEX.

Alter Query= ALTER TABLE. ADD|DROP COLUMN

  - SQL delete query

= fraza SQL care prin executie sterge inregistrari dintr-o tabela

-SQL append query

= fraza SQL care prin executie adauga inregistrari dintr-o tabela

- SQL make table query

= fraza SQL care prin executie creaza o tabela pornind de la alte tabele

- SQL create table query

= fraza SQL care prin executie creaza o tabela pornind de la o descriere data

-SQL drop table query

= fraza SQL care prin executie distruge o tabela

-SQL alter table query

= fraza SQL care modifica structura unei tabele - adaugare/stergere campuri

Comenzi specifice StocEXPERT

COMENZI DE PRELUCRARE CERERI DE SCADERE DIN STOC

LotRequestOUT() Executa cererea de scadere din stoc si repartizeaza loturile rezultate pe documentul curent de iesire

LotRequestInOutLot() Executa cererea de scadere din stoc si repartizeaza loturile rezultate simultan pe documentul curent de iesire si pe documentul curent de intrare, daca cele doua documente sunt legate.

LotRequestInOutNoLot() Face acelasi lucru ca si comanda anterioara, dar spre deosebire de aceasta, in cazul in care pe iesire apar mai multe loturi din acelasi articol, pe intrare aceste loturi se vor cumula.

COMENZI DE FINALIZARE DOCUMENT IN EDITARE

SendIN() Trimite(finalizeaza) documentul de intrare aflat in editare; Verifica / atribuie numarul de document

SendOUT() Trimite(finalizeaza) documentul de iesire aflat in editare; Verifica / atribuie numarul de document

SendINOUT() Trimite(finalizeaza) documentele legate de intrare si iesire aflate in editare; Verifica / atribuie numerele de document; NrDoc al documentului de intrre va fi NrDoc al documentului de iesire.

Contare() Comanda care executa contabilizarea documentului selectat; Anterior acestei comenzi trebuie sa se selecteze, prin executia unui SQL ,documentul ce trebuie contat

Exemplu:

- SQL care face documentul de intrare care se afla in editare sa fie documentul selectat pt. contare

- contabilizarea documentului selectat ( de intrare)

- SQL care face documentul de iesire care se afla in editare sa fie documentul selectat pt. contare

contabilizarea documentului selectat ( de iesire)

ReportIN(Destinatie,NrCopii)

Destinatie=destinatia raportului: 0 = Window; 1 = Printer; valoare implicita=0

NrCopii =nr de copii la imprimanta; util daca <Destinatie>=1

Raporteaza (listeaza) documentul de intrare selectat anterior (idem Contare())

ReportOUT(Destinatie,NrCopii)

Destinatie=destinatia raportului: 0 = Window; 1 = Printer; valoare implicita=0

NrCopii =nr de copii la imprimanta; util daca <Destinatie>=1

Raporteaza (listeaza) documentul de iesire selectat anterior (idem Contare())

ReportIN() si ReportOUT() executa 2 pasi:

-trimite in tabela "Intrari" resp. "Iesiri" din "REPORTS.MDB" continutul documentului curent de intrare, resp. Iesire

-lanseaza la listare macheta de raport corespunzatoare tipului de document curent; stabilirea acestei machete se face la "configurare documente".

COMENZI DE PRELUCRARE PROCES PRODUCTIE

ConcatDenumToDescription() Scrie in campul Description in tabela intrari in editare (TmpUserIntrari) concatenarea denumirilor si cantitatilor de pe bonul de consum curent de pe tabela de iesiri in editare (TmpUserIesiri) si calculeaza costul de productie la produsul finit ca fiin egal cu totalul bonului de consum. Comanda este utila de ex. La integrare de calculatoare. Daca in TmpUserIntrari exista mai mult sau mai putin de un record, comanda da eroare.

TrackVtoC( Face regresia procesului de productie determinand loturile de materie prima cumparata incorporate in produsele vandute; Genereaza ca rezultat tabela "LohnTrackingResultFinal" IN "prstoc.mdb". Este utila la LOHN - Decont de Justificare.

Tracking

//sql < SELECT TipDoc, NrDoc,DatDoc,NrDocSec, Lot, Cant FROM Iesiri where.>

Face regresia procesului de productie determinand loturile de materie prima cumparata incorporate in produsele selectate prin //SQL

Genereaza ca rezultat tabela "LohnTrackingResultFinal" IN "prstoc.mdb". Este utila la LOHN - Nota de Consum.

sql = un select pe iesiri care determina pt. care loturi de produse iesite se va face regresia

Exemplu:

Tracking //sql SELECT TipDoc, NrDoc,DatDoc,NrDocSec, Lot, Cant FROM Iesiri where NrDocSec="17"

-determina materiile prime cumparate si incorporate in produsele exportate cu DVE nr. rezultatul se afla in tablela LohnTrackingResultFinal.

3) Variabile PL/EXPERT

A. Variabile statice

Declaratiile de variabilele statice sunt comenzile care incep cu "var" si se executa astfel: inaintea inceperii procedurii se evalueaza toate variabilele statice apoi in corpul procedurii se inlocuiesc toate referirile la variabile cu valorile lor determinate prin aceasta evaluare; apoi se porneste executia procedurii , variabilele statice devenind astfel constante. Se procedeaza in acest fel deoarece in timpul executiei unei proceduri eveniment a carei operatie are atasate documente se blocheaza linia de server, nepermitand altor operatori sa execute astfel de proceduri in acest timp; ceilalti operatori sunt pusi in coada de asteptare pana la terminarea executiei procedurii. In cazul in care evaluarea variabilelor se face prin interogarea operatorului, timpul de evaluare este prea lung pentru a tine ocupata linia de server si astfel evaluarea lor se face inaintea executiei procedurii, deci inaintea blocarii liniei de server.

-Declararea si evaluarea variabilei:

VarCar|VarNum|VarDat <nume variabila>=<mod evaluare>

Tipuri de variabile:

-VarCar- variabila tip caracter

-VarNum- variabila tip numar

-VarDat- variabila tip data

<nume variabila> = identificator(sir de caractere) alfanumeric (litere si cifre) case insensitive

<mod evaluare> =un text care indica modul in care se atribuie o valoare la variabila

Daca <mod evaluare> incepe cu "SELECT" atunci

Se considera ca e vorba de un SELECT statement care se evalueaza si variabilei I se atribuie valoarea din primul camp , primul record din rezultatul SELECT -ului. Daca SELECT-ul nu returneaza nici un record, valoarea variabilei va fi 0 sau "Valoare Nula".

Daca doriti sa atribuiti o valoare variabilei din cod, scrieti, de ex,

"VarNum x=select 5" - creaza variabila x la care ii atribuie valoarea 5

"VarNum y=select %x%*2" - creaza variabila y la care ii atribuie valoarea x*2.

In alt caz

Se compileaza comanda care va avea urmatoarea sintaxa:

VarCar|VarNum|VarDat <nume variabila> =

//Msg <mesaj operator>

//sql <select statement (pt. o lista de alegere valori)>

//Call <functie interpretor>

//default <valoare implicita>

Exemplu:

Operatorul primeste ca mesaj <mesaj operator> si trebuie sa introduca valoarea variabilei pe care o poate alege din lista construita cu <select statement> si variabila va avea o <valoare implicita>}

Functii interpretor

1. AppendRecord

Adauga un record pe recordset specificat la argumentul @sql si returneaza valaorea adaugata in campul specificat la argumentul @fld

2. AlegData - returneaza o data calendaristica aleasa dintr-un calendar

3. BrowseFile - returneaza un nume complet de fisier ales de operator cu un browse dialog

OrderConcatTehno returneaza un string care descrie comanda de productie curenta (Tehnologie1 x Cant.Trehn.1, Tehnologie2 x Cant.Trehn.2, .)

5. NumarLitere (<numar>) - returneaza numarul sub forma de cuvinte in romaneste

6. BookFile(<Book>) - returneaza numele complet al fisierului contabil aferent registrului <Book>

Referirea la variabila statica PL/EXPERT

%<nume variabila>%

Utilizarea unei variabile se face prin referire la ea.

Exemplul 1.

declara variabila numerica x si cere operatorului valoarea acesteia

declara variabila numerica const1 cu valoarea 2

declara variabila numerica y cu valoarea x*const1

arata operatorului valoarea variabilei y

Exemplul 2.

B. Variabile dinamice

Variabilele dinamice sunt acele variabile care se evalueaza in timpul executiei unei proceduri. O variabila dinamica nu se declara pentru ca apoi sa se faca referire la ea; pur si simplu, in blocul de cod se combina o declarare si o utilizare de variabila si se obtine o variabila dinamica astfel:

% VarCar|VarNum|VarDat <nume variabila>=<mod evaluare> %

Exemplu:

In acest exemplu , de cate ori se executa acest cod, se evalueaza variabila rasp; deci evaluarea variabilei se face odata cu referirea la ea si de cate ori se va ajunge la IF utilizatorul va fi intrebat daca mai continua.

In exemplul:

Variabila rasp se evalueaza o singura data, inaintea executiei procedurii, indiferent de cate ori se ajunge la executia blocului IF. De fapt, daca , de exemplu, la inceput utilizatorul a raspuns cu 'n' , variabila rasp va lua valoarea 'n' si inainte de executia propriu-zisa a procedurii se va inlocui peste tot unde apare %rasp% cu 'n'; blocul IF va arata astfel:

Astfel, de cate ori se va ajunge la IF , conditia din IF va avea valoarea FALSE si va merge pe ELSE.

4) Comenzi PL/EXPERT

Executie SQL pe database specificat:

DB=<nume database file>

// <SQL de executat>

Se executa un sql pe alt database decat cel implicit. DB implicit este prcont.mdb, prstoc.mdb pt. ContEXPERT, respectiv StocEXPERT.

Exemplu:

sterge tabela NoteCon din fisierul reports.mdb:

Nota:

DataDefinitionSQL (DROP statement, ALTER statement) functioneaza numai executate pe DB care contine tabelele asupra carora se executa SQL.

Raport

//file <nume fisier raport (*.rpt)>

//dest <Destinatie>

//copii <NrCopii>

<Destinatie>=destinatia raportului: 0 = Window; 1 = Printer; valoare implicita=0

<NrCopii> =nr de copii la imprimanta; util daca <Destinatie>=1

Lanseaza un raport Crystal Reports (CRW) folosind macheta <nume fisier raport>

Anterior acestei comenzi este necesara executia de fraze SQL care sa aiba ca rezultat umplerea tabelei (tabelelor) sursa de date pt. fisierul macheta de raport.

Mesaj <Text>

Afiseaza un mesaj operatorului. <Text> poate sa fie o expresie compusa din cuvinte si variabile.

Show <Titlu>=<SELECT SQL>

Afiseaza un rezultatul frazei SELECT SQL intr-o fereastra cu grid (tabel) cu titlul <Titlu>.

DropShow

//titlu <Titlu>

//sql <SELECT SQL>

//DropCol <Coloana>

//DropSQL <SELECT SQL pe coloana>

Afiseaza un rezultatul frazei SELECT SQL intr-o fereastra cu grid (tabel) cu titlul <Titlu>

si la coloana <Coloana> leaga o lista DropDown cu sursa de date = <SELECT SQL pe coloana>

Exemplu:

Exit <mesaj>

Forteaza iesirea din procedura si afiseaza mesajul <mesaj>.

BeginTrans

CommitTrans

Rollback

Sunt comenzile de control a tranzactiilor. Este recomandat sa se utilizeze la finalizarea si contabilizarea doumentelor pentru a se pastra integritatea informatiilor.

CREATE VIEW

//db <nume database>

//name <nume query(view)>

//sql <sql stocat>

Creaza sau modifica un query stocat in database. Un query stocat este un obiect "container" pt. un sql frecvent utilizat.

Exemplu:

CREATE DATABASE <nume cu cale completa a noii baze de date>

Creaza o noua baza de date MSAccess2.0 care se poate folosi de regula pentru doua scopuri: stocare de informatie si salvare informatie in vederea transportului prin mail sau disketa. Pentru stocarea informatiei in database se vor executa ulterior make-table query sau create table query si append query.

Label <identificator>

=Eticheta in procedura

Stabileste un punct de referinta in procedura pentru localizarea in blocul procedurii.

Goto <identificator>

Trimite executia procedurii la eticheta "Label <identificator>"

IF <Conditie> THEN <label1> ELSE <label2>

Este blocul de decizie in PL/EXPERT

Daca <Conditie> are valoarea de adevar TRUE, controlul in procedura este transferat la pozitia <label1>

Daca <Conditie> are valoarea de adevar FALSE, controlul in procedura este transferat la pozitia <label2>

Exemplul 1

Exemplul 2

Rapoarte in EXPERT4

Atat in ContEXPERT cat si in StocEXPERT rapoartele se fac cu ajutorul unui motor de raportare (Report Manager) cu ajutorul caruia se poate elabora orice tip de raport.

Report Manager

Lansarea unui raport se face prin apasarea butonului "Raport". Motorul de raportare executa urmatoarele operatii in scopul afisarii

ferestrei de Print-Preview:

1.Executarea procedurii PL/EXPERT (SQL de executat) : aceasta are ca rezultat construirea sursei de date pt. raport (construirea / umplerea unei tabele in 'reports.mdb' , pe care tabela este bazat fisierul macheta (rpt).

Procedura poate sa contina orice elemente PL/EXPERT , inclusiv variabile.

Daca un SQL de executat (INSERT INTO sau SELECT INTO ) se termina cu cuvantul "WHERE" , interpretorul PL/EXPERT va inlocui acest cuvant cu clauza de selectie prezenta pe fereastra din care se lanseaza raportul. In acest fel, daca operatorul face o selectie pe gridul de consultare de date si apoi lanseaza un raport care contine in PL/EXPERT un astfel de SQL, raportul va fi facut pe informatiile filtrate cu clauza de selectie.

2.Lansarea in executie a fisierului macheta (rpt) , care va formata in pagina valorile generate ca sursa de date pt. raport. Designul fisierului macheta se face cu ajutorul utilitarului Crystal Reports for Windows (CRW.EXE).

Particularitati in programarea operatiilor in DesignEXPERT

Determinarea obiectelor

Prin obiecte se intelege totalitatea tabelelor si query-urilor stocate intr-o baza de date, precum si campurile acestora; astfel avem obiecte de tip tabela, query sau camp. Pentru a prelucra informatia in PL/EXPERT se lucreaza cu obiecte de acest fel prin referire la ele in instructiuni sau SQL. Deci, pentru a putea programa informatia in PL/EXPERT e necesar sa se cunoasca numele, proprietatile si functionalitatea acestor obiecte. Aceste informatii se pot obtine "pe loc" in timpul scrierii unei proceduri, prin Ctrl+S sau DblClickDreapta din procedura, astfel:

Stuctura (campurile) unei tabele: scrieti in procedura, undeva, numele tabelei, il selectati si apasati ctrl+S; alegeti "Structura"

Lista tabelelor si query-urilor din batabase procesare (prstoc.mdb): scrieti "dbobjects", selectati, ctrl+S, alegeti "DataSheet"

Continutul unei tabele: selectati numele tabelei scris in procedura, apoi ctrl+S: DataSheet.

Identificatorul Global

Reprezinta modul de identificare al unui produs pe stoc. Se prezinta sub forma unui sir cu sintaxa sql si este de fapt o formul de camp calculat de select statement. Acest camp calculat este concatenarea campurilo care identifica un produs pe stoc (ex.: "gest & denumire & cod & UM").

Programul considera ca toate loturile care au acelasi identificator global reprezinta acelasi produs (articol); in acest fel aveti , de ex. Stocul cumulat pe articole pornind de la stocul pe loturi.

Identifiatorul global se gaseste in lista de identificatori articole, alaturi de alti identificatori "de lucru"; acesti identificatori se folosesc pentru consultarea de situatii privind miscarile de stocuri, la fereastra "Miscari Stocuri" in StocEXPERT4. In lista de identificatori, identificatorul global este acel identificator care are numele "(Global)", nume rezervat.

Valoarea identificatorului global o gasiti in lista de stoc si in alte situatii in campul care se numeste "IDENT". De asemenea, daca o cerere de scadere din stoc nu afost efectuata in totalitate cu succes pentru ca nu este suficient stoc pentru un articol, articolele la care s-a cerut o cantitate prea mare vor apare descrise cu ajutorul identificatorului global.

Rolul Identificatorului Global

Identificatorul global este un element de baza in functionarea programului StocEXPERT si este folosit ca element de identificare al articolelor in urmatoarele situatii:

La cererea de scadere din stoc: se cauta acele loturi care au identificatorul identic cu cel al articolului din cererea de scadere din stoc.

La determinarea stocului cumulat pe articol, indiferent de lot

La determinarea necesarului de aprovizionare

Append si Update query pe INTRARI si IESIRI

Refferential integrity

-reprezinta elemente de structura a fisierului de date care nu permite aparitia in tabele a informatiilor inconsistnte (intrari pe gestiuni care nu exista etc.)

-o refferential integrity se prezinta sub forma unei legaturi intre doua campuri din una sau doua tabele. Unul din campuri se numeste camp primar si celalalt camp secundar. In EXPERT4 legaturile de acest tip sunt "OneToMany", adica pentru ca sa se introduca o valoare in campul secundar este obligatoriu sa existe acea valoare in campul primar, in oricare din inregistrarile din campul primar. Daca se incearca adaugarea unei inregistrari in tabela care contine campul secundar , daca valoarea data campului secundar nu se regaseste intr-o inregistrare din campul primar, acea adaugare de inregistrare nu este permisa; Daca se incearca acest lucru, nu se genereaza nici o eroare, dar pur si simplu adaugarea nu se efectueaza.

Refferential integrity in SXF (StocEXPERT File)

 

One

Many

 

Tabela

Camp primar

Tabela

Camp Secundar

Explicatii

Gestiuni

IDGest

Intari

Gest

Pentru fiecare Intrari.Gest trebuie sa existe Gestiuni.IDGest

Intrari

Lot

Iesiri

Lot

Pentru fiecare Iesiri.Lot trebuie sa existe un Intrari.Lot

Intrari

Lot

Intrari

LotSursa

 

Intrari

Lot

Intrari

LotInit

 

Orders

ID

OrdersTehno

OrderID

 

In consecinta:

daca se scrie un sql (INSERT INTO) care adauga o inregistrare pe Intrari sau query cu sursa in intrari (de ex. TmpUserIntrari) acea inregistrare nu se va adauga daca in campul Gest nu are o valoare care se regaseste in tabela Gestiuni pe campul IDGest.

daca se scrie un sql (INSERT INTO) care adauga o inregistrare pe Iesiri sau query cu sursa in iesiri (de ex. TmpUserIesiri) acea inregistrare nu se va adauga daca in campul Lot nu are o valoare care se regaseste in tabela Intrari pe campul Lot.

Campuri NOT NULL (reguli de validare)

Sunt campuri care nu permit introducerea de valori nule. Restrictia de NULL poate fi de doua feluri: cu sau fara validation rule.

-cu validation rule

Aceasta inseamna ca daca se scrie un sql (INSERT INTO sau UPDATE) care adauga sau modifica o inregistrare rezultand valoarea nula pe unul din aceste campuri, sql-ul nu se va executa si se va genera o eroare.

-fara validation rule

Aceasta inseamna ca daca se scrie un sql (UPDATE) care modifica o inregistrare rezultand valoarea nula pe unul din aceste campuri, sql-ul nu se va executa si se va genera o eroare.

Camp NOT NULL

Tabela

Tip validare

Comentarii

TipDoc

Intrari

Iesiri

Fara Validation Rule

Permit valori nule prin:

-INSERT INTO .

Nu permit valori nule prin:

-UPDATE . SET..

Li se atribuie valori prin UPDATE sql (TmpUserSendIntrari, resp. TmpUserSendIesiri) executat la comanda SendIN(), SendOUT(), SendINOUT()

NrDoc

Partener

Valuta

ValRef

Cant

Iesiri

CU Validation Rule

Nu permit valori nule prin:

-INSERT INTO .

-UPDATE . SET..

Trebuie sa li se atribuie valori cu orice INSERT INTO.

Pret

CantLv

Intrari

Cantpr

PA

PV

Campuri obligatorii TmpUser..

TmpUserIntrari si TmpUseriesiri sunt query cu sursa in Intrari, resp. Iesiri. Ele repreyinta acea portiune din tabela Intrari, resp. Iesiri care sunt in editate pt. opratorul curent la operatia curenta (document intrare, resp. iesire curente) si se vad ca continut la GridIntrari, resp GridIesiri de pe fereastra de operatii in StocEXPERT.

TmpUserIntrari=SELECT . FROM INTRARI . WHERE not Trimis and User=<utilizator curent> and TipDoc= <DocIntrareCurent>

TmpUserIesiri=SELECT . FROM IESIRI. WHERE not Trimis and User=<utilizator curent> and TipDoc= <DocIesireCurent>

utilizator curent=[parameters].[user]

DocIntrareCurent= [parameters].INSelTipDoc

DocIesireCurent= [parameters].OUTSelTipDoc

In consecinta,

Pentru a adauga prin sql INSERT INTO inregistrari care sa apara pe TmpUser. acel sql trebuie sa aiba ca rezultat scrierea in campurile User, TipDoc a valorilor <user curent> si <docum.curent>, iar in campul "Trimis" (camp de tip logic, poate fi true sau false) sa se scrie "false" sau sa nu se scrie nimic (pt. ca in tabela intrari, resp. iesiri valoarea implicita pe campul trimis este "false").

In concluzie

Un SQL INSERT INTO pe TmpUser. trebuie sa se faca pe cel putin campurile cu refferential integrity, cele NOT NULL cele obligatorii pt. TmpUser.

Exemple de lista de campuri pt INSERT INTO :

Introducere de inregistrari pe document care sa apara in editare, in GridIntrari, resp GridIesiri pe Operatii:

INSERT INTO INTRARI

(Gest, User, TipDoc,Denumire, CantPr, CantLv, PA, PV, Grupa, SubGrupa, Cod, CB, UM, cTVA)

INSERT INTO IESIRI (User, TipDoc, Lot, Cant,Pret)

Introducere de inregistrari pe Intrari, resp. Iesiri care sa apara ca document finalizat, nu in editare:

INSERT INTO INTRARI

(Trimis, Gest, User, TipDoc, NrDoc, DatDoc, Partener, Denumire, CantPr, CantLv, PA, PV, Grupa, SubGrupa, Cod, CB, UM, cTVA, Valuta, CursValut, ValRef, CursRef)

INSERT INTO IESIRI (Trimis, User, TipDoc, NrDoc, DatDoc, Partener, Lot, Cant,Pret, Valuta, CursValut, ValRef, CursRef)



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1050
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved