Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Cod, sintaxa si comenzi  cum testez daca...
 cum testez daca o relatie intre doua tabele este true sau false
 
 2/9/2012 2:31:06 PM
User is offlineEMRE.RESIT
76 posts


cum testez daca o relatie intre doua tabele este true sau false
 (Romania)
am doua tabele terttemp si tert
scanez tabela tert pentru o variabila codfiscal. daca variabila exista in terti nu se mai importa, daca nu exista se importa, dar mai am o conditie unde tert.plattva=terttemp.plattva pentru acel cod fiscal si daca relatia asta nu este adevarata ar trebui sa modific inregistrarea asta si sa pun variabila corecta la plattva 0 sau 1
 2/9/2012 3:18:35 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: cum testez daca o relatie intre doua tabele este true sau false
 (N/A)
 EMRE.RESIT wrote
am doua tabele terttemp si tert
scanez tabela tert pentru o variabila codfiscal. daca variabila exista in terti nu se mai importa, daca nu exista se importa, dar mai am o conditie unde tert.plattva=terttemp.plattva pentru acel cod fiscal si daca relatia asta nu este adevarata ar trebui sa modific inregistrarea asta si sa pun variabila corecta la plattva 0 sau 1


Daca am intels bine, vrei sa adaugi in tert din terttemp codul fiscal care nu exista ( m.varcodfiscal) - si eventual alte campuri care definesc acel tert:

Insert into tert (codfiscal, plattva, camp3, camp4) Select codfiscal, plattva, camp3, camp4 from terttemp tt where tt.codfiscal=m.varcodfiscal and tt.codfiscal not in (select codfiscal from tert)

Daca vrei doar sa inserezi codul fiscal, pe care il ai cumva intr-o variabila de memorie, si asta doar daca acel codfiscal nu exista:

Select codfiscal From tert Where codfiscal=m.varcodfiscal Into Array lacodf
IF vartype(lacodf)="U" or lacodf[1]<>m.varcodfiscal
   Insert into tert (codfiscal) VALUES (m.varcodfiscal)
Endif


Actualizarea tert.plattva din terttemp:

Update tert set plattva=tt.plattva from terttemp tt where tt.codfiscal=tert.codfiscal and tt.plattva != tert.plattva


Daniel Buduru
 2/14/2012 7:02:40 AM
User is offlineEMRE.RESIT
76 posts


Re: cum testez daca o relatie intre doua tabele este true sau false
 (Romania)
pai ok, am incercat e ok. dar daca am mai multe coduri fiscale care trb sa le verific si sa le adaug sau sa le updatez datele numai la unele dintre ele imi adauga linia respectiva de cate ori modifica ceva pe ea
 2/14/2012 9:06:31 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: cum testez daca o relatie intre doua tabele este true sau false
 (N/A)
Nu e clar cum operezi si ce anume nu se regaseste.si in ce tabela.
Codurile pe care le verifici si le adaugi sunt in terttemp?
Nu adauga linia din terttemp in tert?


Daniel Buduru
 2/14/2012 3:21:28 PM
User is offlineEMRE.RESIT
76 posts


Re: cum testez daca o relatie intre doua tabele este true sau false
 (Romania) Modified By EMRE.RESIT  on 2/14/2012 4:27:35 PM)
pai de adaugat o adauga in tert.dbf e ok asta
problema apare cand apar coduri fiscale care trb updatate care mi le adauga de 2 ori in tert.dbf daca ceva este diferit pe linia respectiva din terttemp.dbf
asta e problema daca m-am facut inteles. mersi anticipat
deci eu vreau ca ori de cate ori apare o modificare pe mfinante pentru un cod fiscal iar programul face verificare prin program sami apara o singura data in tert.dbf.
si in tabela terttemp am mai multe coduri fiscale de cautat.

 2/14/2012 3:31:11 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: cum testez daca o relatie intre doua tabele este true sau false
 (N/A)
Tot nu am inteles cum faci.
Daca poti, posteaza codul cu care faci inserarea in tert si cel cu care faci actualizarea din terttemp.


Daniel Buduru
 2/15/2012 7:46:37 AM
User is offlineEMRE.RESIT
76 posts


Re: cum testez daca o relatie intre doua tabele este true sau false
 (Romania)
"SET DEFAULT TO "c:\documents and settings\EMRE\desktop\afact\contgen baza\baza preluare date afact\"
USE TERT
ZAP
APPEND FROM "c:\documents and settings\EMRE\desktop\afact\contgen baza\baza preluare terti\tertMF.dbf"
MESSAGEBOX("VERIFICA DACA TERTI CU 1 LA PLATTVA AU SI RO IN FATA CUIULUI SI RO LA GRUPA. DACA ESTE CEVA CARE NU CORESPUNDE FACI MODIFICARE IN CONTGEN")
GO TOP
BROWSE NOEDIT FIELDS tert,den,tlx,plattva,grupa,data
COPY TO TERTmf
SELECT 1
use tertmf
SCAN
STORE tert TO m.cod
SELECT 2
USE c:\contgenw\drdp\tert
LOCATE FOR tert=m.cod
IF found()
Update tert set plattva=mf.plattva from tertmf mf where mf.tert=tert.tert and mf.plattva!=tert.plattva
Update tert set tlx=mf.tlx from tertmf mf where mf.tert=tert.tert and mf.tlx!=tert.tlx
Update tert set grupa=mf.grupa from tertmf mf where mf.tert=tert.tert and mf.grupa!=tert.grupa
UPDATE tert SET codtva=mf.codtva from tertmf mf WHERE mf.tert=tertmf.tert AND mf.codtva!=tertmf.codtva
ELSE
APPEND FROM tertmf
PACK
ENDIF
ENDSCAN
CLOSE TABLES"

ceva de genul si ar trebui sa testez relatiile alea o singura data dar imi da ca al doilea test: "Update tert set plattva=mf.plattva and tlx=mf.tlx from tertmf mf where mf.tert=tert.tert and mf.plattva!=tert.plattva and mf.tlx!=tert.tlx " daca il bag in aceeasi linie "tlx is not unique and must be qualified"
 2/15/2012 9:13:29 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: cum testez daca o relatie intre doua tabele este true sau false
 (N/A) Modified By Daniel Buduru  on 2/15/2012 11:28:29 AM)
 EMRE.RESIT wrote
"SET DEFAULT TO "c:\documents and settings\EMRE\desktop\afact\contgen baza\baza preluare date afact\"
USE TERT
ZAP
APPEND FROM "c:\documents and settings\EMRE\desktop\afact\contgen baza\baza preluare terti\tertMF.dbf"
MESSAGEBOX("VERIFICA DACA TERTI CU 1 LA PLATTVA AU SI RO IN FATA CUIULUI SI RO LA GRUPA. DACA ESTE CEVA CARE NU CORESPUNDE FACI MODIFICARE IN CONTGEN")
GO TOP
BROWSE NOEDIT FIELDS tert,den,tlx,plattva,grupa,data
COPY TO TERTmf
SELECT 1
use tertmf
SCAN
STORE tert TO m.cod
SELECT 2
USE c:\contgenw\drdp\tert
LOCATE FOR tert=m.cod
IF found()
Update tert set plattva=mf.plattva from tertmf mf where mf.tert=tert.tert and mf.plattva!=tert.plattva
Update tert set tlx=mf.tlx from tertmf mf where mf.tert=tert.tert and mf.tlx!=tert.tlx
Update tert set grupa=mf.grupa from tertmf mf where mf.tert=tert.tert and mf.grupa!=tert.grupa
UPDATE tert SET codtva=mf.codtva from tertmf mf WHERE mf.tert=tertmf.tert AND mf.codtva!=tertmf.codtva
ELSE
APPEND FROM tertmf
PACK
ENDIF
ENDSCAN
CLOSE TABLES"

ceva de genul si ar trebui sa testez relatiile alea o singura data dar imi da ca al doilea test: "Update tert set plattva=mf.plattva and tlx=mf.tlx from tertmf mf where mf.tert=tert.tert and mf.plattva!=tert.plattva and mf.tlx!=tert.tlx " daca il bag in aceeasi linie "tlx is not unique and must be qualified"


Deci, ai un tabel tert, localizat intr-un folder "baza preluare data afact", pe care il golesti complet (zap), apoi il incarci din tertmf .
Apoi verifici cu acest tabel
baza preluare date afact\tert.dbf un alt tabel tert, de data asta c:\contgenw\drdp\tert.dbf, si corelezi acest tert cu tertmf.

lcpath_afact=
"c:\documents and settings\EMRE\desktop\afact\contgen baza\baza preluare date afact\"
lctert_afact=addbs(lcpath_afact)+'tert'
lcpath_mf=
"c:\documents and settings\EMRE\desktop\afact\contgen baza\baza preluare terti\"
lcTert_mf=addbs(lcpath_mf)+'tertmf'
lcPath_drdp=
"c:\contgenw\drdp\"
lctert_drdp=addbs(lcPath_drdp)+'tert'

Select * from (lctert_afact) where (plattva=1 and  ATC('RO',grupa)<>1) ;
OR (plattva=0 AND ATC('RO',grupa)=1 ) ;
OR ATC('RO',tert)=1
** cursorul rezultat va contine inregistrarile neconforme, fie plata tva=1 si lipsa RO in grupa, fie plata tva =0 dar exista RO in grupa, fie RO in cui
** daca am intels bine, campul tert contine codul unic de inregistrare
** intrucat priei din tertmf, nu are rost sa faci verificarea in tert_afact, pentru ca va trebui sa modifici in restul tabelelor

**Daca exista RO in cui, ar trebui eliminat, altfel nu regasesti inregistrarile ...
* Update (lcTert_mf) set tert=strtran(tert,'RO','')

use (lcTert_afact) in 0 alias tert_afact exclusive
select tert_afact
zap
append from (lctert_mf)
** cu asta s-a terminat cu tert_afact, e preluat din  tertmf.
** daca iti trebuie si copiat in tertmf, desi nu inteleg dece, pune codul aici

*Acum verifici tert_drdp cu tertmf
*mai intai se insereaza in tert_drdp ce nu se gaseste in tertmf
*completezi restul de campuri in comanda, daca fisierele au mai mult decat cele pe care le-ai mentionat

Insert into (lcTert_drdp) (
tert, den, tlx, plattva, grupa, data, codtva) Select tert, den, tlx, plattva, grupa, data, codtva from (lctert_mf) Tert_mf ;
  where tert_mf.tert not in (select tert from (lctert_drdp))

*Apoi se actualizeaza valorile diferite. Avem nevoie de un alias, pentru a nu complica selectul

Use (lcTert_drdp) in 0 again alias tert_drdp

Update tert_drdp Set plattva=mf.plattva, tlx=mf.tlx, grupa=mf.grupa, codtva=mf.codtva ;
  from (lcTert_mf) mf ;
  where mf.tert=tert_drdp.tert ;
  AND  (mf.plattva<>tert_drdp.plattva OR mf.tlx<>tert_drdp.tlx OR mf.grupa<>tert_drdp.grupa OR mf.codtva<>tert_drdp.codtva)

*Acum tert_drdp e corelat cu tertmf


Daniel Buduru
 2/15/2012 10:08:32 AM
User is offlineEMRE.RESIT
76 posts


Re: cum testez daca o relatie intre doua tabele este true sau false
 (Romania)
iar daca vreau sa adaug alea care nu exista cu toate coloanele trb sa nu mai selectez campurile respective "Insert into (lcTert_drdp) from (lctert_mf) Tert_mf ;
where tert_mf.tert not in (select tert from (lctert_drdp))"?
 2/15/2012 10:12:54 AM
User is offlineEMRE.RESIT
76 posts


Re: cum testez daca o relatie intre doua tabele este true sau false
 (Romania)
gata am inteles scz
  Visual FoxPro  Cod, sintaxa si comenzi  cum testez daca...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement