CATEGORII DOCUMENTE |
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
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.
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.
|
|
|||||||||
|
||||||||||
|
||||||||||
|
||||||||||
|
||||||||||
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.
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.
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
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 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)
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
-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
= 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
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.
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".
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,
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,
-determina materiile prime cumparate si incorporate in produsele exportate cu DVE nr. rezultatul se afla in tablela LohnTrackingResultFinal.
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>}
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.
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.
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.
Afiseaza un mesaj operatorului. <Text> poate sa fie o expresie compusa din cuvinte si variabile.
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:
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.
//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:
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.
=Eticheta in procedura
Stabileste un punct de referinta in procedura pentru localizarea in blocul procedurii.
Trimite executia procedurii la eticheta "Label <identificator>"
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
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.
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).
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.
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
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.
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
-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
Refferential integrity in SXF (StocEXPERT File) |
|
|||
One |
Many |
|
||
Tabela |
|
Tabela |
|
Explicatii |
Gestiuni |
IDGest |
Intari |
Gest |
Pentru fiecare Intrari.Gest trebuie sa existe Gestiuni.IDGest |
Intrari |
|
Iesiri |
|
Pentru fiecare Iesiri.Lot trebuie sa existe un Intrari.Lot |
Intrari |
|
Intrari |
LotSursa |
|
Intrari |
|
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.
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 |
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").
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,
INSERT INTO IESIRI (User, TipDoc,
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,
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1050
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved