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  Baze de date, tabele, view-uri si indecsi  comanda sql...
 comanda sql
 
 5/23/2006 12:59:44 PM
User is offlinebisocp
141 posts
5th


comanda sql
 (Romania)

intr-o tabela ( pt. un prg registru de casa ) am campurile document, tip ( I - incasare, P - plata ) si suma

cum sa scriu un sql sa rezulte document, suma incasata, suma platita ?

 

 5/23/2006 1:17:01 PM
User is offlineGhiorghiu Bogdan
928 posts
1st




Re: comanda sql
 (Romania)

Ceva de genu

SELECT DOCUMENT, IIF(TIP_OP='I',VALOARE,0) AS INCASARI, IIF(TIP_OP='P',VALOARE,0) AS PLATI   FROM REGCASA GROUP BY DOCUMENT ORDER BY DOCUMENT


Ghiorghiu Bogdan >>> Dacă tot te apuci să faci o treabă, fă-o bine de la inceput!
 5/23/2006 1:20:34 PM
User is offlineDorin Vasilescu
1366 posts
1st




Re: comanda sql
 (Romania)
Ar fi de preferat...
IIF(TIP_OP='I',VALOARE, 000000000.00)

 5/23/2006 1:26:47 PM
User is offlineAdrian Vari
138 posts
5th




Re: comanda sql
 (Romania)
Corect ce a spus Dorin.
Altfel dimensiunea campului VALOARE va fi data de prima valoare intalnita.
Cred ca apare undeva pe site chestia asta, pe la FAQ.



Adrian Vari
 5/23/2006 1:37:47 PM
User is offlineanonymous
0 posts


Re: comanda sql
 (N/A)
Cred ca de fapt este

SELECT DOCUMENT, sum(IIF(TIP_OP='I',VALOARE,000000000000.00)) AS INCASARI, sum(IIF(TIP_OP='P',VALOARE,000000000000.00)) AS PLATI FROM REGCASA GROUP BY DOCUMENT ORDER BY DOCUMENT

Asta pentru a tine cont ca pe acelasi document se potface mai multe plati, de ex.
 5/23/2006 2:09:14 PM
User is offlineGhiorghiu Bogdan
928 posts
1st




Re: comanda sql
 (Romania)

Corect, dar eu ii sugerasem doar un model cum ar putea sa-si rezolve problema.


Ghiorghiu Bogdan >>> Dacă tot te apuci să faci o treabă, fă-o bine de la inceput!
 5/23/2006 2:29:45 PM
User is offlineedyshor
1450 posts
1st




Re: comanda sql
 (Romania)
 Ghiorghiu Bogdan wrote
Corect, dar eu ii sugerasem doar un model cum ar putea sa-si rezolve problema.
"Daca faci o treaba fa-o bine pana la capat.."
 
just teasing u man :P
 
anyway .. chestia cu 00000000.00 e importanta si de tinut minte .. pe la inceputuri mi-a luat ceva pana sa-mi dau seama de asta :(
 5/23/2006 3:52:33 PM
User is offlineanonymous
0 posts


Re: comanda sql
 (N/A)
La selectul asta de mai sus as avea totusi ceva de comentat:

este foarte fain ca rezultatul se obtine printr-un singur pas, dar ... functia IIF() in select incetineste foarte mult treaba. De aceea, mult mai bine ar fi sa se foloseasca doua SELECT unite cu clauza UNION.
 5/23/2006 10:49:40 PM
User is offlineedyshor
1450 posts
1st




Re: comanda sql
 (Romania)
hmm .. nush cad de mult incetineste treaba dar se prea poate, eu numai asa am lucrat,
referitor la union .. poti sa dai o varianta la exemplul dat ?!
 5/24/2006 11:17:17 AM
User is offlineanonymous
0 posts


Re: comanda sql
 (N/A)
Folosind UNION, vom avea doua SELECT:

SELECT Document, valoare as Incasari, 00000000000.00 as Plati;
FROM RegCasa;
WHERE tip_op = "I";
UNION ALL;
(;
SELECT Document, 00000000000.00 as Incasari, valoare as Plati;
FROM RegCasa;
WHERE tip_op = "P";
);
INTO CURSOR cTemp;
READWRITE

si al doilea

SELECT Document, sum(Incasari) as Incasari, sum(Plati) as Plati;
FROM cTemp;
GROUP BY Document;
ORDER BY Document;
INTO CURSOR cRegCasa


In functie de anumiti factori, varianta asta poate fi mai rapida decit cea cu IIF() ... sau nu.
De ex, primul SELECT cara cam toate datele, ceea ce prin retea...
 5/24/2006 2:52:20 PM
User is offlineedyshor
1450 posts
1st




Re: comanda sql
 (Romania)
mda .. da e ceva .. mersi :)
 
la faza cu retzeaua nush .. da am impresia ca oricum preia toate datele sa vada pe care se potrivesc conditiile
 
 
 5/29/2006 1:10:20 PM
User is offlinebisocp
141 posts
5th


Re: comanda sql
 (Romania)

merge perfect, merci

datele din cursor le afisez intr-un form - intr-un grid, in form am si un buton de unde aleg data pt. care sa fie afisate datele

ce trebuie sa fac ca la scimbarea datei si datele din cursor sa se schimbe ?

 5/29/2006 1:18:17 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: comanda sql
 (Romania)
Adaugi o clauza WHERE in comanda SQL: "WHERE data = ?datacautata", avand grija sa asignezi data calendaristica in variabila datacautata, si executi instructiunea SQL la fiecare modificare a datei.
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 5/30/2006 8:39:21 AM
User is offlinebisocp
141 posts
5th


Re: comanda sql
 (Romania)
merge, se executa comanda sql, rezultatul are datele care trebuie, dar nu le pune in grid, gridul nu mai are coloane, dupa ce execut instructiunea sql
 5/30/2006 8:49:42 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: comanda sql
 (Romania)

Inainte de executia comenzii SQL deconecteaza grid-ul de la date: ThisForm.Grid.RecordSource = "" / comanda sql / ThisForm.Grid.RecordSource = "numecursor".

Hmm... ar trebui scris un FAQ cu chestia asta - s-a intrebat de prea multe ori.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 5/30/2006 9:38:26 AM
User is offlineAlex Dobrin
766 posts
www.algis.ro
1st






Re: comanda sql
 (N/A)
Am adaugat-o in categoria "Cod, sintaxă şi comenzi". Sunt curios daca o sa mai fie pusa intrebarea asta pe forum. :)
Alex Dobrin
Algis Info
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  comanda sql...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement