: ..
: 03-217
: ..
, 2011.
.. 3
. 3
.. 3
. 4
. 4
. 5
. 8
. 8
.. 8
.. 12
:
FOXPRO .
: , . , .
, , .
, , , , (). ( ) , , .
--, . - .
:
cod | FAM | NAM | otch | Street | dom | flat | Telephone |
N10 | N5 | N5 | N5 | N5 | C 8 | N4 | C 12 |
|
NAM | |
cod | N5 |
name | C15 |
FAM | |
cod | N5 |
fam | C15 |
Street | |
cod | N5 |
val | C15 |
OTCH | |
cod | N5 |
val | C25 |
(. )
:
-FAM
-NAME
-OTCH
-Street
Cascade - - , .
Restrict - - , , .
Ignore - - .
, , .
( ). .
|
|
( B).
1) .
: ( ... ), , , .
2) (, , ..). , . .
: , , .
3) . , .
4) , , . , ( ).
5) . , .
6) () .
- Visual FoxPro. , .
, Visual FoxPro , , .
1) :
IF!empty(THISFORM.CFam.value)
IF!empty(THISFORM.CNam.value)
IF!empty(THISFORM.COTCH.value)
IF!empty(THISFORM.CSTREET.value)
IF!empty(THISFORM.DOM.value)
IF!empty(THISFORM.FLAT.value)
IF!empty(THISFORM.TELEPHONE.value)
SELECT MAIN
CALCULATE MAX(COD) TO WSP
WSP=WSP+1
DIMENSION PER_ARR(8)
PER_ARR[1]=WSP
PER_ARR[2]=FAM.COD
PER_ARR[3]=NAM.COD
PER_ARR[4]=OTCH.COD
PER_ARR[5]=STREET.COD
PER_ARR[6]=CAST(thisform.DOM.value AS INT)
PER_ARR[7]=CAST(thisform.FLAT.value AS INT)
PER_ARR[8]=thisform.TELEPHONE.value
APPEND FROM ARRAY PER_ARR
messagebox(' !')
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
messagebox(' !')
endif
thisform.Refresh
2) :
SELECT TABLE7
DELETE
SELECT MAIN
DELETE ALL
SET DELETED on
SELECT table7
DIMENSION PER_ARR1(8)
SCAN
PER_ARR1[1]=TABLE7.COD
|
|
SELECT FAM
SCAN FOR FAM.FAM=TABLE7.FAM
PER_ARR1[2]=FAM.COD
ENDSCAN
SELECT NAM
SCAN FOR NAM.NAME=TABLE7.NAME
PER_ARR1[3]=NAM.COD
ENDSCAN
SELECT OTCH
SCAN FOR OTCH.VAL=TABLE7.OTCH
PER_ARR1[4]=OTCH.COD
ENDSCAN
SELECT STREET
SCAN FOR STREET.VAL=TABLE7.STREET
PER_ARR1[5]=STREET.COD
ENDSCAN
PER_ARR1[6]=CAST(TABLE7.DOM AS INT)
PER_ARR1[7]=CAST(TABLE7.FLAT AS INT)
PER_ARR1[8]=TABLE7.TELEPHONE
INSERT INTO MAIN FROM ARRAY PER_ARR1
SELECT TABLE7
ENDSCAN
messagebox(' ')
THISFORM.Refresh
3) :
SELECT Table7
DELETE ALL
DIMENSION PER_ARR(8)
SELECT MAIN
SCAN
SCATTER TO PER_ARR1
PER_ARR[1]=PER_ARR1[1]
SELECT FAM
SCAN FOR FAM.COD=PER_ARR1[2]
PER_ARR[2]=FAM.FAM
ENDSCAN
SELECT NAM
SCAN FOR NAM.COD=PER_ARR1[3]
PER_ARR[3]=NAM.NAME
ENDSCAN
SELECT OTCH
SCAN FOR OTCH.COD=PER_ARR1[4]
PER_ARR[4]=OTCH.VAL
ENDSCAN
SELECT STREET
SCAN FOR STREET.COD=PER_ARR1[5]
PER_ARR[5]=STREET.VAL
ENDSCAN
PER_ARR[6]=PER_ARR1[6]
PER_ARR[7]=PER_ARR1[7]
PER_ARR[8]=PER_ARR1[8]
INSERT INTO TABLE7 FROM ARRAY PER_ARR
SELECT MAIN
ENDSCAN
SELECT TABLE7
SCAN
I=0
IF (ALLTRIM(TABLE7.FAM)=ALLTRIM(THISFORM.CFam.value)) OR empty(THISFORM.CFam.value)
IF (ALLTRIM(TABLE7.NAME)=ALLTRIM(THISFORM.CNam.value)) OR empty(THISFORM.CNam.value)
IF (ALLTRIM(TABLE7.OTCH)=ALLTRIM(THISFORM.COTCH.value)) OR empty(THISFORM.COTCH.value)
IF (ALLTRIM(TABLE7.STREET)=ALLTRIM(THISFORM.CSTREET.value)) OR empty(THISFORM.CSTREET.value)
IF (ALLTRIM(TABLE7.DOM)=ALLTRIM(THISFORM.DOM.value)) OR empty(THISFORM.DOM.value)
IF (ALLTRIM(TABLE7.FLAT)=ALLTRIM(THISFORM.FLAT.value)) OR empty(THISFORM.FLAT.value)
IF (ALLTRIM(TABLE7.TELEPHONE)=ALLTRIM(THISFORM.TELEPHONE.value)) OR empty(THISFORM.TELEPHONE.value)
I=1
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF I=0
DELETE
ENDIF
SELECT TABLE7
ENDSCAN
SET DELETED ON
THISFORM.Refresh
4) :
select main
report form report1.frx noeject noconsole to printer preview
5) :
SET DELETED on
SELECT main
cou=RECCOUNT()
DIMENSION k(cou,8)
cou=0
SELECT TABLE7
SCAN
cou=cou+1
i=0
k[cou,1]=CAST(table7.cod as int)
SELECT FAM
SCAN
IF FAM.FAM=ALLTRIM(TABLE7.FAM)
k[cou,2]=fam.cod
i=1
ENDIF
ENDSCAN
IF I=1
SELECT NAM
SCAN
IF NAM.NAME=ALLTRIM(TABLE7.NAME)
k[cou,3]=nam.cod
i=2
ENDIF
ENDSCAN
IF I=2
SELECT OTCH
SCAN
IF OTCH.VAL=ALLTRIM(TABLE7.OTCH)
k[cou,4]=otch.cod
I=3
ENDIF
ENDSCAN
IF I=3
SELECT STREET
SCAN
IF STREET.VAL=ALLTRIM(TABLE7.STREET)
k[cou,5]=street.cod
k[cou,6]=CAST(table7.dom as int)
k[cou,7]=CAST(table7.flat as int)
k[cou,8]=table7.telephone
I=4
ENDIF
ENDSCAN
ENDIF
ENDIF
ENDIF
IF i<>4
MESSAGEBOX(' '+table7.cod)
i=5
EXIT
ENDIF
SELECT table7
ENDSCAN
IF i<>5
SELECT main
FOR coul=1 TO cou
UPDATE main SET main.fam=k[coul,2],main.name=k[coul,3],main.otch=k[coul,4],main.street=k[coul,5],main.dom=k[coul,6],main.flat=k[coul,7],main.telephone=k[coul,8] WHERE main.cod=k[coul,1]
ENDFOR
MESSAGEBOX(' ')
ENDIF
SET DELETED ON
thisform.Load
thisform.Refresh
6) ( , ):
SELECT fam
SET DELETED OFF
CALCULATE MAX(COD) TO PER_MAX
PER_MAX=PER_MAX+1
DIMENSION PER_ARR(2)
PER_ARR[1]=PER_MAX
PER_ARR[2]=' '
INSERT INTO FAM FROM ARRAY PER_ARR(2)
SET DELETED ON
THISFORM.Refresh