Search  
Monday, October 26, 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 magazie...
 fisa magazie
 
 7/8/2011 10:06:59 AM
User is offlineSCHRECK
489 posts
2nd


fisa magazie
 (N/A)

Am urmatoare 2 fisiere

fis1                                                             fis2

denumire   nrdoc1   cant1                     denumire        nrdoc2      cant2

produs         1         5                          produs             1                4

produs         3         7                          produs             4                8

                                                          produs              3               9

trebuie sa obtin urmatorul fisier

denumire        nrdoc1      cant1     nrdoc2        cant2

produs              1               5           1                4

produs              3              7            4                8

produs                              0           3                 9

Ar fi fisa de magazie simplificata a unui produs. Se poate obtine fisierul numai din comenzi SELECT            

 7/8/2011 11:32:43 AM
User is offlineGrigore Dolghin
4001 posts
www.class-software.ro
1st






Re: fisa magazie
 (N/A)
Select fis1.denumire, fis1.nrdoc1, fis1.cant1, fis2.nrdoc2, fis2.cant2 from fis1 join fis2 on fis1.idprodus = fis2.idprodus where fis1.idprodus is not null and fis2.idprodus is not null

Ai coloana de IdProdus, nu-i asa?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/8/2011 7:54:01 PM
User is offlineSCHRECK
489 posts
2nd


Re: fisa magazie
 (N/A)
Asa am facut si eu dar din pacate nu se obtine ceea-ce vreau
se obtine

denumire nrdoc1 cant1 nrdoc2 cant2

produs 1 5 1 4
produs 3 7 1 4
produs 1 5 4 8
produs 3 7 4 8
produs 1 5 3 9
produs 3 7 3 9
 7/8/2011 11:21:57 PM
User is offlineGrigore Dolghin
4001 posts
www.class-software.ro
1st






Re: fisa magazie
 (N/A)
Tu ai o problema in a intelege ce zic, constat. La inregistrarea a 3-a ar trebui sa ai ID_PRODUS null si e filtrat de where. Te intreb rar, ca pe un copil mic: AI PUS ID_PRODUS IN WHERE? Altfel spus, AI SCRIS EXACT, CUVANT CU CUVANT, LINIA PE CARE TI-AM DAT-O?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/9/2011 10:34:29 AM
User is offlineSCHRECK
489 posts
2nd


Re: fisa magazie
 (N/A)
Te informez ca pe un copil ca am scris exact comanda data de tine, am facut Edit.Copy Edit.Paste
Neintelegerea cred provine din faptul ca gandim diferit legat de idprodus.
Ca sa obtin rezultatul dorit de mine trebuia sa scriu fisierele

fis1
ideprodus denumire nrdoc1 cant1
1 produs 1 5
2 produs 3 7
3 produs


fis2

ideprodus denumire nrdoc2 cant2
1 produs 1 4
2 produs 4 8
3 produs 3 9

Nu este corect pt ca se refera la aceasi denumire de produs, deci ar trebui sa am acelasi numar unic pt. idprodus
N-am inteles fraza '. La inregistrarea a 3-a ar trebui sa ai ID_PRODUS null ' Se refera la fis1? Daca da, de ce trebuie sa am 3 pozitii daca in cursul lunii s-a achizitionat de 2 ori produsul
Ca sa lamurim definitiv problema te-asi ruga sa completezi fisierele fis1 si fis2 cu ideasig sa vad cum ai inteles tu problema
Multumesc
 7/10/2011 10:35:13 PM
User is offlineGrigore Dolghin
4001 posts
www.class-software.ro
1st






Re: fisa magazie
 (N/A)

Ok. Tu vrei ca inregistrarea nr. 1 din fisierul1 sa-i corespunda inregistrarii nr. 1 din fisierul2. Inregistrarea 2 din fisierul1 sa-i corespunda inregistrarii 2 din fisierul2. Si asa mai departe. Daca unul din fisiere se termina, se adauga atatea inregistrari cate exista in plus in fisierul celalalt. Asta se obtine folosind Full Join pe cele doua tabele, pe campul cheie primara. (Inner Join face cam acelasi lucru, cu diferenta ca se adauga atatea inregistrari cate exista in fisierul mai mic iar cele in plus sunt ignorate).

Pornind de la premiza asta, ar trebui ca tabelele tale sa arate asa (eu n-am VFP instalat, am facut pe un SQL Server asa ca o sa incerc sa scriu sintaxa de VFP direct in browser. Daca da erori de sintaxa, corecteaza-le tu, te rog):

Create Table Produse (Id I, Denumire C(50))
Insert Into Produse (Id, Denumire) Values (1, "Produs")

Create Table Fis1 (Id I, IdProdus I, NrDoc1 I, Cant1 I)
Insert Into Fis1 (Id, IdProdus, NrDoc1, Cant1) Values (1, 1, 1, 5)
Insert Into Fis1 (Id, IdProdus, NrDoc1, Cant1) Values (2, 1, 3, 7)

Create Table Fis2 (Id I, IdProdus I, NrDoc2 I, Cant2 I)
Insert Into Fis2 (Id, IdProdus, NrDoc2, Cant2) Values (1, 1, 1, 4)
Insert Into Fis2 (Id, IdProdus, NrDoc1, Cant1) Values (2, 1, 4, 8)
Insert Into Fis2 (Id, IdProdus, NrDoc1, Cant1) Values (3, 1, 3, 9)

Instructiunea care iti intoarce ce doresti este:

Select
 Produse.Denumire,
   Produse.Id As IdProdus.
   Nvl(Fis1.NrDoc1, 0) As NrDoc1
   Nvl(Fis1.Cant1, 0) As Cant1,
   Nvl(Fis2.NrDoc2, 0) As NrDoc2,
   Nvl(Fis2.Cant2, 0) As Cant2
From Fis1 Full Join Fis2 On Fis1.Id = Fis2.Id
 Full Join Produse On Fis1.IdProdus = Produse.Id Or Fis2.IdProdus = Produse.Id

Rezultatul este:

Produs 1 1 5 1 4
Produs 1 3 7 4 8
Produs 1 0 0 3 9


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Tema pentru acasa  fisa magazie...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement