1

Konu: Ağacın(activex tree) dalları nasıl toplanır?

+ana hesap
-ana hesap
   +alt hesap
   +alt hesap
   +alt hesap
   -alt hesap
            +alt hesap
            +alt hesap
            +alt hesap
            +alt hesap
+ana hesap
+ana hesap

bu hesapların , açılmış olan  ana hesabın , tüm alt hesaplarıyla(kaç adet alt hesap ve seviye olduğu bilinmiyor) toplanması nasıl yapılabilir? Yani , ağacın dallarının , ana dala toplamının aktarması.

2

Re: Ağacın(activex tree) dalları nasıl toplanır?

o=ThisForm.oletree
For indis = 1 to o.Nodes.Count
    o.Nodes(indis).Expanded = .f.
*    o.Nodes(indis).Image = 1
Endfor

bunu bir dene bakalım olacakmı?

3

Re: Ağacın(activex tree) dalları nasıl toplanır?

Visual Fox Pro
&& tum dallari acma

 
o=ThisForm.oletree
For i = 1 to o.Nodes.Count
    o.Nodes(i).Expanded = .t.
Endfor
 
&& tum dallari kapama
 
o=ThisForm.oletree
For i = 1 to o.Nodes.Count
    o.Nodes(i).Expanded = .f.
Endfor

4

Re: Ağacın(activex tree) dalları nasıl toplanır?

yanlış ifade ettim galiba. toplamadan katım matematiksel toplam. expand ya da unexpand değil.
muhasebe proramı olduğunu kabul edin. tüm alt hesapların borcları ve alacakları toplamı bir üst daldaki borç ve alacaklarla toplanıp o da bir üsttekine ta ki ana hesap dalına ulaşılana kadar.
örneğin
--------
hesap adı                       toplam borç                 toplam alacak
genel giderler hesabı       1.253,60                     2.064,25

gibi

5

Re: Ağacın(activex tree) dalları nasıl toplanır?

flexgrid kullanmani tavsiye ederim. onunla bu istedigine uygun cozumler uretebilirsin

http://www.fox4um.com/viewtopic.php?id=142

forumda daha once gecmisti burada bu amaca uygun cok guzel kod ornegi var

6

Re: Ağacın(activex tree) dalları nasıl toplanır?

anladığım kadarıyla bu bir muavin defter mizanı
ben bu işlemi şöyle çözdüm
önce table lerden filtreye uygun kayıtları cursor dosyasına istediğim sırayla getirdim.
2 table vardı birisi hesap planı dosyam diğeri fiş hareket dosyam
daha önce clipperda program yazdığım için oop ye tam alışamadım visual foxpro da da yeniyim

ropor filtreleri fromunda
CASE RAPORTIPF="03"
IF thisform.optiongroup1.option1.Value=1 then
SELECT * FROM FISHRKT,HESAPDS ORDER BY FISHRKT.HSNO,FISHRKT.FISN,FISHRKT.SIRA ASC  WHERE FISHRKT.HSNO=HESAPDS.HKOD AND;
FISHRKT.HSNO BETWEEN ILKHESAPX AND SONHESAPX AND FISHRKT.FTAR=<sontarm INTO CURSOR MUAVDF
ELSE
SELECT * FROM FISHRKT,HESAPDS ORDER BY FISHRKT.HSNO,FISHRKT.FISN,FISHRKT.SIRA ASC  WHERE FISHRKT.HSNO=HESAPDS.HKOD AND;
FISHRKT.HSNO BETWEEN ILKHESAPX AND SONHESAPX AND FISHRKT.FTAR=<sontarm AND FISHRKT.MIKT>0 INTO CURSOR MUAVDF
ENDIF

SELECT MUAVDF.HSNO,SUM(MUAVDF.ALAC) AS ALAC,SUM(MUAVDF.BORC)AS BORC ,SUM(BORC-ALAC) AS TOPL FROM;
MUAVDF GROUP BY HSNO INTO CURSOR HESAP

SELECT MUAVDF.FTAR,MUAVDF.HSNO,MUAVDF.HADI,MUAVDF.SIRA,MUAVDF.IZAH;
,MUAVDF.BORC,MUAVDF.ALAC,MUAVDF.FISN FROM MUAVDF,HESAP   ORDER BY MUAVDF.HSNO,MUAVDF.FISN,MUAVDF.SIRA ASC;
DISTINCT WHERE HESAP.HSNO=MUAVDF.HSNO INTO CURSOR MUAVDEF


SELECT MUAVDEF
GO TOP
PUBLIC ATOPm,BTOPm
STORE 0 TO ATOPm,BTOPm
IF thisform.islbakiye.Value=1 then
REPORT FORM MUAVDEB TO PRINTER PROMPT  PREVIEW
ELSE
REPORT FORM MUAVDEF  TO PRINTER PROMPT  PREVIEW
ENDIF

RELEASE ATOPM,BTOPM

hesapların bakiyelerinin alınması aşamasında
FUNCTION BAKIYEALM
PARAMETERS HESAP
ATOPM=0
BTOPM=0
SELECT MUAVDEF
do while  .NOT. EOF() .AND. hesap = hsno  .AND. MUAVDEF.ftar < ilktarM
         if MUAVDEF.hsno = hesap .AND. MUAVDEF.ftar < ilktarM
            BTOPm=BTOPm+MUAVDEF.BORC
            ATOPm=ATOPm+MUAVDEF.ALAC
         endif
         SKIP
  ENDDO

ATOP=ATOP+ATOPm
BTOP=BTOP+BTOPm

RETURN
ENDFUNC

son olarak bu değerleri frx formatında
group header da bakiye al functionu kullandığımda raporları çalıştırdım