Search  
Friday, November 15, 2019 ..:: 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  Baze de date, tabele, view-uri si indecsi  PLATI PE O FACT...
 PLATI PE O FACTURA CU MAI MULTE OPURI
 
 7/25/2012 11:24:52 AM
User is offlineEMRE.RESIT
194 posts
5th


PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania)
SELECT Facttot.furnizor, Facttot.cod_fiscal, Facttot.nr_ctr,;
Facttot.data_ctr, Facttot.nr_fact, Facttot.data_fact, Facttot.fact_tot,;
Facttot.ob_fact, Facttot.scadenta, Plati.nr_op, Plati.data_op,;
Plati.val_op;
FROM ;
facttot ;
LEFT OUTER JOIN plati ;
ON Facttot.nr_fact = Plati.nr_fact;
AND Facttot.furnizor = Plati.furnizor;
ORDER BY Facttot.furnizor, Facttot.nr_ctr, Facttot.nr_fact

query-ul de mai sus imi afiseaza toate platile aferente facturilor. problema mea este ca daca o factura este platita cu mai multe op-uri diferite factura respectiva este afisata de cate ori imi apare un op pe aceasta factura, eu as dori sa obtin un tabel in care sa mi se afiseze factura o singura data si in continuare datele despre op-urile cu care a fost platita.
 7/25/2012 11:31:57 AM
User is offlineGrigore Dolghin
3995 posts
www.class-software.ro
1st






Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (N/A)
Asta tine de afisare, nu de SELECT. Treaba selectului e sa returneze rezultatele, si e bine asa cum e (ca sa stii ce op carei facturi corespunde).

In cursorul rezultat scrie tu NULL unde doresti, ca sa-ti placa afisarea. Sau, daca folosesti un raport, exista un "Supress repeated values" sau cam asa ceva, care impiedica afisarea duplicatelor dintr-o coloana.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/25/2012 11:37:50 AM
User is offlineEMRE.RESIT
194 posts
5th


Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania) Modified By EMRE.RESIT  on 7/25/2012 10:49:33 AM)
ok. sa scriu cu manuta in cursor null?
pai am vreo 1000 de inregistrari!!
 7/25/2012 11:47:22 AM
User is offlineGrigore Dolghin
3995 posts
www.class-software.ro
1st






Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (N/A)
Da, asta e ideea - scrii tu NULL unde ai nevoie (sau spatii, ma rog, ca e posibil sa nu suporte null in campul respectiv).

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/25/2012 11:52:03 AM
User is offlineEMRE.RESIT
194 posts
5th


Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania) Modified By EMRE.RESIT  on 7/25/2012 10:52:28 AM)
nu merge nimic de genul sa scaneze cursorul, sa gaseasca acele campuri si sami puna acolo null sau 0 cu replace si dupa aia sami goleasca numai coloanele care trebuie?
 7/25/2012 11:54:55 AM
User is offlineGrigore Dolghin
3995 posts
www.class-software.ro
1st






Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (N/A)
Nu exista nimic gata facut, din cate stiu eu. Va trebui sa-ti scrii propriul cod in SCAN...ENDSCAN.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/25/2012 11:56:30 AM
User is offlineGrigore Dolghin
3995 posts
www.class-software.ro
1st






Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (N/A)
Ar fi o alternativa, complet diferita: pui doua grid-uri, primul arata facturile, al doilea arata op-urile facturii selectate in primul. In AfterRowColChange al primului grid executi un query care iti descarca op-urile inregistrarii selectate, si le afisezi in al doilea.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/25/2012 3:06:58 PM
User is offlineEMRE.RESIT
194 posts
5th


Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania)
ma gandisem la ceva de genul asta:

USE fact1
SCAN

STORE Nr_fact TO m.fct
STORE furnizor TO m.furn
STORE nr_op TO m.op
DO vrf
ENDSCAN
PACK
BROWSE NOEDIT

FUNCTION vrf
IF Nr_fact=m.fct AND Furnizor=m.furn AND Nr_op<>m.op
REPLACE Furnizor WITH " "
REPLACE Nr_ctr WITH " "
REPLACE Data_ctr WITH " "
REPLACE Nr_fact WITH " "
REPLACE Data_fact WITH " "
REPLACE Fact_tot WITH "0.00"
REPLACE Ob_fact WITH " "
REPLACE Scadenta WITH " "
REPLACE Cod_fiscal WITH " "
ELSE
RETURN .t.
ENDIF

dar nu face nimic in tabela. poate sami explice si mie de ce
 7/25/2012 4:03:25 PM
User is offlineDaniel Buduru
3508 posts
1st




Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania)
 EMRE.RESIT wrote
ma gandisem la ceva de genul asta:

USE fact1
SCAN

STORE Nr_fact TO m.fct
STORE furnizor TO m.furn
STORE nr_op TO m.op
DO vrf
ENDSCAN
PACK
BROWSE NOEDIT

FUNCTION vrf
IF Nr_fact=m.fct AND Furnizor=m.furn AND Nr_op<>m.op
REPLACE Furnizor WITH " "
REPLACE Nr_ctr WITH " "
REPLACE Data_ctr WITH " "
REPLACE Nr_fact WITH " "
REPLACE Data_fact WITH " "
REPLACE Fact_tot WITH "0.00"
REPLACE Ob_fact WITH " "
REPLACE Scadenta WITH " "
REPLACE Cod_fiscal WITH " "
ELSE
RETURN .t.
ENDIF

dar nu face nimic in tabela. poate sami explice si mie de ce

Mai intai, comanda REPLACE suporta mai multe campuri, poti inlocui toate campurile in aceeasi comanda.Si exista si comanda BLANK FIELDS ...
Apoi in codul tau scanezi fisierul te opresti pe fiecare inregistrare, stochezi campurile in variabile - care, daca nu sunt declarate altfel, sunt locale, deci nu potfi vazute de o procedura apelata - apoi apelezi o procedura care ar trebui sa faca inlocuirile daca
Nr_fact=m.fct AND Furnizor=m.furn AND Nr_op<>m.op
Or, cum nu te-ai deplasat de pe inregistrare, nr_op=m.nr_op, deci nu se executa nici o inlocuire.


Daniel Buduru
 7/25/2012 4:50:23 PM
User is offlineEMRE.RESIT
194 posts
5th


Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania)
USE fact1
SCAN

STORE Nr_fact TO m.fct
STORE furnizor TO m.furn
STORE nr_op TO m.op
SKIP 1
DO vrf
ENDSCAN
PACK
BROWSE NOEDIT

FUNCTION vrf
IF Nr_fact=m.fct AND Furnizor=m.furn AND Nr_op<>m.op
BLANK FIELDS Furnizor,Cod_fiscal,Nr_ctr,Data_ctr,Fact_tot,Ob_fact,Scadenta
ELSE
RETURN .t.
ENDIF


ceva de genul asta? dar mi se pare ca imi sare niste inregistrari sa fie din cauza skip 1 ? si unele dintre campurile de blank nu se modifica nimic
 7/25/2012 4:55:46 PM
User is offlineDaniel Buduru
3508 posts
1st




Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania) Modified By Daniel Buduru  on 7/25/2012 7:38:12 PM)
Ceva de genul asta:

use fact1
SCAN all
scatter name orec
DO vrf with nr_fact, furnizor, op
Do while nr_fact=orec.nr_fact and furnizor=orec.furnizor
skip
enddo
skip-1

ENDSCAN
PACK
BROWSE NOEDIT

FUNCTION vrf
Lparameters tunr_fact, tuFurnizor, tuop
local nrcrt
nrcrt=recno()
BLANK FIELDS Furnizor,Cod_fiscal,Nr_ctr,Data_ctr,Fact_tot,Ob_fact,Scadenta FOR nr_fact=tuNr_fact and furnizor=tuFurnizor and op<>tuop
Go nrcrt

EDIT - corectat (in rosu). Fact1 trebuie sa fie ordonat dupa furnizor si nr_fact


Daniel Buduru
 7/26/2012 9:41:04 AM
User is offlineEMRE.RESIT
194 posts
5th


Re: PLATI PE O FACTURA CU MAI MULTE OPURI
 (Romania)
multam fain. merge
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  PLATI PE O FACT...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement