Search  
Friday, September 18, 2020 ..:: 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  Tema pentru acasa  fisa cont...
 fisa cont
 
 3/20/2014 1:15:14 PM
User is offlinera2gr
84 posts


fisa cont
 (N/A) Modified By ra2gr  on 3/20/2014 6:18:45 PM)
doresc sa fac fisa unui cont (ex. Debitor 4111)
pt. rulaj as vrea sa folosesc urmatoarea interogare

sele dist nc.valnc as valnc,doc.datad as datad,crt as crt from nc inne join doc on nc.doc=doc.doc wher Nc.contsd='4111'.and.Doc.datad>=mdatai.AND.Doc.datad<=mdataf
unio
sele dist -nc.valnc as valnc,doc.datad as datad,crt as crt from nc inne join doc on nc.doc=doc.doc wher Nc.contsc='4111'.and.Doc.datad>=mdatai.AND.Doc.datad<=mdataf
orde by datad,valnc desc
into curs qrulaj

dar NU vrea
orde NU vrea
daca scot orde NU vrea unio
deoarece nc.valnc#-nc.valnc ca structura

am reusit prin

sele dist -(-nc.valnc) as valnc,doc.datad as datad,crt as crt from nc inne join doc on nc.doc=doc.doc wher Nc.contsd='4111'.and.Doc.datad>=mdatai.AND.Doc.datad<=mdataf
unio
sele dist -nc.valnc as valnc,doc.datad as datad,crt as crt from nc inne join doc on nc.doc=doc.doc wher Nc.contsc='4111'.and.Doc.datad>=mdatai.AND.Doc.datad<=mdataf
into curs qq

sele * from qq orde by qq.datad,qq.valnc desc into curs qrulaj

ESTE ...... dar nu-i ELEGANT
MARIN RADOI , VFP 6.0 INCEPATOR
 3/20/2014 9:29:10 PM
User is offlineDaniel Buduru
3522 posts
1st




Re: fisa cont
 (Romania)
Implementarea sql in vfp6 este mult mai limitata decat in vfp9.
Dupa cum ai observat, la Union, un camp din pozitia n din primul select trebuie sa fie de acelasi tip si diemnsiune in toate selecturile urmatoare.
In mod normal, campul ar trebui sa aiba acelasi format in toate tabelele, si asta e ceea ce ar trebui sa faci.
Daca nu poti modifica structura (metoda cea mai corecta ...), trebuie sa aduci campurile al acelasi format.

Nu poti utiliza functia CAST, nefiind disponibila in vfp6, si va trebui sa realizezi formatarea folosind alte functii.
Nu am cum sa testez, nu am un vfp instalat acum, dar poti incerca asta:

select distinct VAL(TRAN(nc.valnc))+00000000.00 as valnc, doc.datad as datad, crt as crt from nc inne join doc on nc.doc=doc.doc where Nc.contsd='4111'.and.Doc.datad>=mdatai.AND.Doc.datad<=mdataf ;
union ;
select -VAL(TRAN(nc.valnc))+
00000000.00 as valnc, doc.datad as datad, crt as crt from nc inne join doc on nc.doc=doc.doc where Nc.contsc='4111'.and.Doc.datad>=mdatai.AND.Doc.datad<=mdataf ;
order by datad, valnc desc ;
into curs qrulaj

+0000000.00 va forta vfp sa creeze in cusorul rezultat un camp de tipul N(10,2). Ajustezi numarul de zerouri dupa necesitati, astfel incat formatul sa acopere campul cel mai mare.

Nu mai stiu daca functia transform este disponobila in Vfp6. Daca nu este, inlocuieste-o cu Str(nc.valnc,10,2).

Atentie la Select Distinct - elimina din rezultat valorile duplicate. Asigura-te ca asta doresti.
Clauza Distinct se pune o singura data, oricate selecturi sunt in union.

Daniel Buduru
  Visual FoxPro  Tema pentru acasa  fisa cont...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement