Search  
Wednesday, May 23, 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  Visual FoxPro in general  Doua tabele un ...
 Doua tabele un program
 
 7/25/2011 10:29:20 PM
User is offlineDACUL
11 posts


Doua tabele un program
 (N/A) Modified By DACUL  on 7/25/2011 10:33:30 PM)
Buna ziua tuturor, Am o problema cu un program. Am 2 tabele unul cu campurile ID, suma, campanie, cantitate, data_UPD, iar in celalalt ID, numar bilet, campanie. As dori sa fac un program care ar citi tabelul 1 si in functie de ce numar este in cantitate sa-mi creeze la fel de multe inregistrari in celalalt tabel. Eu am facut ceva de genul : select tabel1 tabel1.data_UPD=date() (o data sa stiu ca pentru aceasta inregistrare operatiunea a fost facuta) mcID=tabela1.id m_qty=tabel1.cantitate mcCamp=tabela1.campanie for i=1 to m_qty select tabela2 append blank tabel2.id =mcID tabela2.campanie=mcCamp i=i+1 end for dar nu merge....am incercat si nu-mi face ce as vrea. Multumesc,
 7/26/2011 10:35:55 AM
User is offlinemmarius28
139 posts
5th


Re: Doua tabele un program
 (N/A)
Incearca sa scrii:

select tabel1
replace data_UPD with date() && (o data sa stiu ca pentru aceasta inregistrare operatiunea a fost facuta)
mcID = id
m_qty = cantitate
mcCamp = campanie

select tabela2
for i=1 to m_qty
append blank
replace id with mcID, campanie with mcCamp
endfor

sau

for i=1 to m_qty
insert into tabela2 (id, campanie) values (mcID, mcCamp)
endfor
 7/26/2011 11:43:58 AM
User is offlineDaniel Buduru
2332 posts
1st




Re: Doua tabele un program
 (N/A) Modified By Daniel Buduru  on 7/26/2011 11:44:37 AM)
Algoritmul, desi corect, are o deficienta: la fiecare rulare va insera in tabela2, pentru fiecare ID si campanie, un numar de inregistrari egal cu tabela1.cantitate.
E necesar sa se determine, la fiecare rulare, diferenta dintre tabela1.cantitate si numarul de inregistrari corespunzatoare existente in tabela2.

Select a.id, a.campanie, a.cantitate, nvl(b.records,0) as records, max(0,a.cantitate-nvl(b.records,0)) as rest;
from tabela1 a left join ;
(select id, campanie, count(*) as records from tabela2 where not deteled() group by id, campanie) b;
on a.id=b.id and a.campanie=b.campanie ;
into cursor crstemp

Select crstemp
*de aici incolo, este la fel codul lui mmarius28
scan all
for lni=1 to crstemp.rest
   insert into  tabela2 (id, campanie) Values (tabela1.id, tabela1.campanie)
next
replace data_upd with date() in tabela1
endscan


Daniel Buduru
 7/26/2011 11:21:58 PM
User is offlineDACUL
11 posts


Re: Doua tabele un program
 (N/A)
Multumes Marius, Multumesc Daniel, O sa incerc si o sa vad cum functioneaza...
  Visual FoxPro  Visual FoxPro in general  Doua tabele un ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement