CATEGORII DOCUMENTE |
Campurile memo
Pentru fisierul dbf care are campuri memo , exista asociat un tabel de extensie .fpt In campul memo exista un cod care ne arata daca campul este gol sau contine o informatie. de asemenea se gaseste informatie care ne duce la locul de depozitare a informatiei -> tabel.fpt Pentru a vedea sau construi aceste campuri:
1.intram in browse
2.dubluclick pe memo
3.se deschide o fereastra de editare unde putem introduce
orice sau doar sa-l vizualizam
4.dupa editare salvam continutul cu CTRL+W
Utilizarea unui filtru
SET FILTER TO <conditie>
unde:
conditie este conditia de filtrare (simpla sau compusa)
Obs.:
O comanda SET FILTER este valabila numai pentru tabelul activ, adica tabelul respectiv trebuie sa fie deschis inainte de a da comanda.
exemplu:
use reg_cat
set filter to codcurs='ajut' and n1>=6
disp codcurs, nume,n1 all
RELATII INTRE TABELE
Selectarea unei zone de lucru
1) comanda: SELECT <zona de lucru>
unde:
<zona de lucru>=1,2,3,4,5,6,7, ,32767
2) USE nume_tabel IN <zona de lucru>
ex.:
SELE 1
USE REG_CAT
DISP CODCURS,NUME,DATAN ALL
SELE 2
USE PLATI
DISP CODCURS,NRMAT,ACHITAT ALL
SELE 1
DISP CODCURS,NUME,DATAN ALL
PENTRU STABILIREA UNEI RELATII INTRE TABELE:
1) ACESTEA TREBUIESC INDEXATE SI DESCHISE DUPA ACEEASI CHEIE DE INDEXARE.
2) UNA DINTRE TABELE ESTE PARINTE SI CEALALTA COPIL
3) TREBUIE SA NE GASIM IN ZONA DE LUCRU IN CARE ESTE DESCHIS PARINTELE
4) VOM ANUNTA RELATIA INTRE TABELE CU COMANDA:
SET RELATION TO <expresia_cheii_de_indexare> INTO <nume_tabel_copil>
ex.: avem indexul comun: CHEIE1=CODCURS+STR(NRMAT)/5
SELE 1
USE PLATI ORDER CHEIE1
SELE 2
USE REG_CAT ORDER CHEIE1
*CHEIE1 POATE AVEA ALT NUME DAR ACELASI CONTINUT
SELE 1
SET RELATION TO CODCURS+STR(NRMAT)/5 INTO REG_CAT
DISP codcurs,nrmat,REG_CAT.NUME,achitat ALL
CLOSE ALL - inchide toate tabele indiferent de zona in care este deschisa
Cand dorim sa accesam un camp care se gaseste in alta zona de lucru decat cea curenta: inaintea campului vom introduce numele tabelui urmat de un punct: TABEL.CAMP
Sa se scrie un program care sa consulte doua tabele: MODULE.DBF si CURSURI.DBF . Talebul MODULE este parinte. Module.dbf indexat dupa codcurs si nr. Modulului cursuri.dbf indexat dupa codcurs.
modi comm cursmodul
CLEAR
CLOSE ALL
SELE 1
USE MODULE ORDER CODCURS
SELE 2
USE CURSURI ORDER CODCURS
SELE 1
SET RELATION TO CODCURS INTO CURSURI
******sau ** ** ** ** ***
**USE MODULE ORDER CODCURS
**USE CURSURI IN 2 ORDER CODCURS
GOTO TOP
DEFI WIND W FROM 1,1 TO 24,79 TITLE 'Continut module / cursuri'
ACTI WIND W
CLEAR
? 'CODUL CURSULUI: ', CODCURS
? REPL ('=',25)
? 'DENUMIRE CURS: ',CURSURI.DENUMIRE
**(afiseaza camp din alte zone)**
? 'NRCRT' AT 5
?? 'COD' AT 15
?? 'DENUMIRE MODUL' AT 25
?? 'DURATA' AT 55
? REPL ('=',60)
MCURS=CODCURS
** codcurs=ajut
DO WHILE NOT EOF()
IF CODCURS#MCURS
WAIT WIND 'terminat afisare curs'
CLEAR
? 'CODUL CURSULUI: ', CODCURS
? REPL ('=',25)
? 'DENUMIRE CURS: ',CURSURI.DENUMIRE
**(afiseaza camp din alte zone)**
? 'NRCRT' AT 5
?? 'COD' AT 15
?? 'DENUMIRE MODUL' AT 25
?? 'DURATA' AT 55
? REPL ('=',60)
MCURS=CODCURS
**(INLOCUIESTE IN MEMORIE codcurs cu OPER)
ENDIF
NRCRT AT 5
?? CODMOD AT 15
?? MODUL AT 25
?? DURATA PICT '99' AT 55
SKIP
ENDDO
WAIT WIND
DEACTI WIND ALL
CLOSE ALL
CANCEL
reg_cat plati
ajut 331 marian mihai ajut 331 marin mihai
ajut 331 marin mihai
ajut 332 stanca vasile
La legarea a 2 tabele:
1) la o inregistrare din parinte ii corespunde o inregistrare din copil
(one to one)
2) la o inregistrare din parinte ii corespunde mai multe
inregistrari din copil
one to main se transforma in one to one daca se declara invers:
copil-> parinte
PENTRU ACCESAREA TUTUROR INREGISTRARILOR din copil dupa comanda SET RELATION TO se da comanda: SET SKIP TO <nume_copil>
Sa se scrie un program care sa afiseze pe ecran situatia incasarilor la cursuri utilizand informatiile care se gasesc in REG_CAT si PLATI. Din reg_cat vom lua nrmat. si numele iar din plati cat a achitat,nr. chitantei si data achitarii.
MODI COMM LISTPLATI
CLOSE ALL
SET CURRENCY TO 'LEI'
SET CURR RIGHT
USE REG_CAT ORDER CURSNRM
USE PLATI IN 2 ORDER CURSNRM
SET RELATION TO CODCURS+STR(NRMAT/5) INTO PLATI
SET SKIP TO PLATI
GOTO TOP
MCURS=CODCURS
?'INCASARILE LA CURSUL ',CODCURS
?REPL ('=',25)
?'NR.MAT ' AT 5
?'NUME SI PRENUME ' AT 25
?'INCASAT ' AT 43
?'NUMAR CHITANTA ' AT 60
?'DATA PLATII ' AT 75
TOTAL=0
DO WHILE NOT EOF()
IF MCURS#CODCURS
WAIT WIND 'TERMINAT AFISARE CURS'
CLEAR
?'INCASARILE LA CURSUL ',CODCURS
?REPL ('=',25)
?'NR.MAT ' AT 5
?'NUME SI PRENUME ' AT 25
?'INCASAT ' AT 43
?'NUMAR CHITANTA ' AT 60
?'DATA PLATII ' AT 75
ENDIF
? NRMAT AT 5
??NUME AT 25
??PLATI.ACHITAT PICT '9999999.99' FUNC '$' AT 43
??PLATI.NRCHITFACT
??PLATI.DATA
SKIP
ENDDO
WAIT WIND
DEACTI WIND ALL
CLOSE ALL
CANCEL
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1007
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved