Search  
Saturday, February 11, 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  Client/Server  problema sql up...
 problema sql updates
 
 2/20/2010 9:36:02 PM
User is offlinemrchiu
47 posts


problema sql updates
 (N/A)
am urmatoarea structura
tabela1
data
cod_firma
valoare

firma
zi1
zi2
...
zi31

firma1
valoarea_pe_ziua1
valoarea_pe_ziua2

valoarea_pe_ziua3

firma2






in tabela 1 am data,cod_firma,valoare
tabela1 este aranjata dupa data
tabela2 am firma si zilele lunii

 firma1 din tabela 2 poate contine mai multe cod_firme  din tabela1 si  si se adauga ca suma pe zile in tabela2
cum fac sa aduc date din tabel1 si sa le pun in tabela2 pe zile?
cu update am tot incercat, nam ajuns la nimic




 2/21/2010 9:51:26 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: problema sql updates
 (N/A)
Daca un server SQL, vezi in help operatorul PIVOT.
Daca folosesti tabela VFP, exista in folderul VFP un program, vfpxtab.prg, care poate face operatia asta utilizand cod xbase.
Daca vrei sa folosesti cod SQL cu tabele VFP:

In primul rand, iti trebuie si luna calendaristica pentru care faci operatia asta, altfel vei pune in acceasi zi valori din luni diferite.
Pentru asta am folosit un camp luna, care contine de fapt anul si luna in format AAAALL

lcSQL='SELECT LEFT(DTOS(data),6) as luna, cod_firma, '
FOR lni=1 TO 31
    lcSQL=lcSQL+;
          'SUM(IIF(DAY(data)='+TRAN(lni)+', valoare, 0)) AS zi'+TRAN(lni)+IIF(lni=31,' ',', ')
NEXT lni
lcSQL=lcSQL+' FROM tabela1  GROUP BY 1, cod_firma INTO CURSOR crsCrossTab'
&lcSQL

Ca sa actualizezi tabela2 :
INSERT INTO tabela2 (luna, cod_firma) ;
SELECT cct.luna, cct.cod_firma FROM crscrosstab cct left join tabela2 ta2 ;
on cct.cod_firma=ta2.cod_firma AND cct.luna=ta2.luna WHERE ta2.luna is null AND ta2.cod_firma is null

lcSQL='UPDATE tabela2 SET '
FOR lni=1 TO 31
   lcSQL=lcSQL+' ZI'+TRANSFORM(lni)+'=cct.ZI'+TRANSFORM(lni)+IIF(lni=31,' ',', ')
NEXT
lcSQL=lcSQL+' FROM crscrosstab cct where tabela2.luna=cct.luna and tabela2.cod_firma=cct.cod_firma'
&lcSQL
  

Daniel Buduru
 2/26/2010 10:31:13 PM
User is offlinemrchiu
47 posts


Re: problema sql updates
 (N/A)
revin cu o intrebare legata de un update

UPDATE operativa_februarie_2010;
SET ap =( SELECT SUM(coduri.sum_p) FROM coduri where i in ('CH','ZCH'));
WHERE operativa_februarie_2010.a = "acadele";

daca rulez asta, si in coduri exista : CH,ZCH,CHL atunci le va copia pe toate 3 si nu doar pe cele 2
E o greseala in alta parte sau de ce?
 2/26/2010 11:23:38 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: problema sql updates
 (N/A)
Verifica mai intai conditia de filtru, Vezi ce returneaza comanda:

SELECT i FROM coduri where i in ('CH','ZCH')

Daniel Buduru
 2/27/2010 9:28:36 AM
User is offlinemrchiu
47 posts


Re: problema sql updates
 (N/A)
aparent selecteaza si pe ZCHL.
cum fac sa elimin problema asta?
 2/27/2010 9:33:16 AM
User is offlineGrigore Dolghin
3522 posts
www.class-software.eu
1st






Re: problema sql updates
 (N/A)
Din cate inteleg eu din codul tau, folosesti tabele VFP, nu un server SQL. In cazul asta explicatia ar putea fi SET EXACT. Ia pune SET EXACT ON si vezi daca mai selecteaza si ZCHL.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 2/27/2010 9:37:49 AM
User is offlinemrchiu
47 posts


Re: problema sql updates
 (N/A)
SET EXACT ON
SELECT * FROM coduri where i in ('CH','ZCH')

=> aceeasi problema
 2/27/2010 10:08:13 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: problema sql updates
 (N/A)
SELECT DISTINCT i FROM coduri WHERE INLIST(i,'CH','ZCH')
SELECT DISTINCT i FROM coduri WHERE i IN (PADR('CH',4),PADR('ZCH',4))

Daniel Buduru
 2/27/2010 10:11:28 AM
User is offlinemrchiu
47 posts


Re: problema sql updates
 (N/A)
 Daniel Buduru wrote
SELECT DISTINCT i FROM coduri WHERE i IN (PADR('CH',4),PADR('ZCH',4))


asta a mers,vad ca practic introduce spatii la stanga si la dreapta caracterelor cautate.
multumesc pentru ajutor
  Visual FoxPro  Client/Server  problema sql up...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement