1

Konu: Varolan Raporu Düzenleme Sorunu

Merhaba arkadaşlar,

Sitenize yeni üye oldum. Daha önce FoxPro ile ilgili sorunlarımı kendim çözmeye çalışıyordum ama malesef bazı yerlerde tıkanıyorum. Şu andaki sorunum hazır kullandığımız bir sistemle ilgili FoxPro'da hazırlanmış bir rapor var. Burada günlere ait ve ürüne göre gruplanmış satışların, karın ve zararın listelendiği bir tablo var. Örneğin;


Ürün                 Satış Geliri           Geri Ödeme              Kar
-----------------------------------------------------------------------
A                      215YTL                100YTL                     115YTL
B                      275YTL                125YTL                     150YTL
A                      250YTL                150YTL                     100YTL

Benim bu tabloya birde Kaç Ürün satıldığı eklemem gerekiyor. Bunu buradaki tabloda listelenen değerler üzerinden yapmam mümkün mü? Mesela COUNT(Satış Geliri) gibi. Önereceğiniz başka yöntemlere de açığım.

Saygılar.

2

Re: Varolan Raporu Düzenleme Sorunu

şimdi,hazır kullandığın bir sistemin olduğundan bahsetmişsin.O zaman programın kodlarının olmadığını anlıyorum.Yukarıdaki örnekte verdiğin bilgiyi gösteren rapor dosyasını açarak bunu anlayabilirsin.Şayet veri tababında kaç adet ürünün satıldığı bilgisi tutuluyorsa,bunu rapora koymak mümkün.Bunu databaseden bakınca göremeyebilirsin belki,Raporun before open tables bölümüne bir kaç sql  cümlesi yazarakta(satışlar tablosundan,istenilen zaman aralığındaki satışları bularak) bu bilgileri rapora eklemek mümkün.Çetin hocamın dediği gibi n tane yolu var.Burada bence biraz rapor ve database bilgisi gerekiyor.Vel hasılı kelam,Rapora her türlü bilgiyi koymak mümkün.Rapora dışarıdan kod yazarak extra şeyler yaptırmak istersen,bfore open tables,open tables bölümlerine istediğin kodu yazarak veriyi elde etmek mümkündür.

En büyük sermaye nakit,nakit sermaye vakittir...

3

Re: Varolan Raporu Düzenleme Sorunu

bu arada,eğer kullandığın sistemde,raporlar projeye dahil edilmişse,sen raporları değiştirsen bile,rapor dosyaları projedeki şekli ile gelecektir,haberin olsun :-)

En büyük sermaye nakit,nakit sermaye vakittir...

4 Son düzenleyen, RewriteRule (19.01.2008 13:51:15)

Re: Varolan Raporu Düzenleme Sorunu

Merhaba neyzen,

Evet database bilgim gayet iyi ancak FoxPro ile ilk defa çalışıyorum ve neyi nasıl yapacağım hakkında tam bir bilgiye vakıf değilim. Raporları bir EXE dosyasını çalıştırarak işliyoruz, yani raporlar o EXE dosyasından alınıyor. Ancak FRX ve FRT dosyaları elimde mevcut. DBF dosyalarında da bir tarih aralığında satılan ürünlerin tane tane karşılığı mevcut. Yani SQL tabanlı bir sistem kullanmış olsaydım

SELECT DISTINCT urunMain,COUNT(*) AS satilanUrunSayisi FROM myTable WHERE DATE BETWEEN firstDate AND lastDate


sorgusuyla alabilirdim ama FoxPro'ya gelince tıkanıyorum.

5 Son düzenleyen, cetinbasoz (19.01.2008 15:04:17)

Re: Varolan Raporu Düzenleme Sorunu

Raporlar exe'den geliyorsa senin mudahale sansin yok. Hem datayi exe hazirliyor hem rapor formati icine gomulu.

SELECT DISTINCT urunMain,COUNT(*) AS satilanUrunSayisi FROM myTable WHERE DATE BETWEEN firstDate AND lastDate

Bu SQL hangi database'de calisiyor? VFP ve SQL server'da calismaz.
Access'te calisiyor dersen sasirmam o anlamadigim ayri bir dunya.

Visual Fox Pro
SELECT COUNT(*) AS satilanUrunSayisi ;

FROM myTable WHERE DATE BETWEEN firstDate AND lastDate
 
SELECT urunMain,COUNT(*) AS satilanUrunSayisi ;
  FROM myTable WHERE DATE BETWEEN firstDate AND lastDate group by urunMain
 
SELECT COUNT(distinct urunMain) AS satilanUrunTipi ;
  FROM myTable WHERE DATE BETWEEN firstDate AND lastDate
 
SELECT count(*) as toplamSatilanUrun, COUNT(distinct urunMain) AS satilanUrunTipi ;
FROM myTable WHERE DATE BETWEEN firstDate AND lastDate


Sonuclari farkli. Neyi saymak istedigine bagli.

Exe'ye mudahale sansin olmadigina gore, bu raporu disaridan ADO ile olusturabilirsin. VFPOLEDB driver'i ile, eger dosyalari biliyorsan, istedigin veriyi alip istedigin gibi raporlaman mumkun (HTML, Excel, Access, SQL server reporting ...).

Not: Elinde VFP ve FRX'ler var galiba. Bir kopyesini istedigini verecek sekilde degistirebilirsin. SQL ile de olur, ya da dogrudan raporun 'Calculation' yeteneklerini kullanirsin. Raporda degisken olusturma sansin da var.

6 Son düzenleyen, RewriteRule (19.01.2008 15:46:31)

Re: Varolan Raporu Düzenleme Sorunu

Hocam kusura kalmayın sorguyu aceleden öyle yazmışım. Dediğiniz gibi SELECT içinde o iki fonksiyonu bir arada kullanamıyoruz. Bu konuyu okuyan tüm arkadaşlardan da yanlış bilgi verdiğim için özür diliyorum.

Hocam dediklerinizden Rapor üzerinde değişiklik yapmış bile olsam EXE çalıştırıldığında eski rapor düzenini kullanacağımızı anlıyorum. Bunun için dışarıdan bir dil kullansak daha avantajlı olur galiba(Delphi gibi). Bu arada elimde DBF dosyaları mevcut ve hangisinin ne işe yaradığını, hangi veriyi depoladığını biliyorum.

NOT(ekledim): Elimde EXE dosyasının içinde bulunan diğer FRX'ler de var. Bu yüzden raporu değiştirip tekrar EXE haline getirme şansım mevcut.

7

Re: Varolan Raporu Düzenleme Sorunu

RewriteRule ,raporların exe nin içine dahil olup olmadığını,bir raporu değiştirip anlayabilirsin ancak.Eğer yaptığın değişiklik rapora yansıyorsa,o zamen dediğim mantıkla eklentiler yapabilirsin.Ama her şeyi yapabilirmiyim diye soracak olursan,o istediğin şeye göre değişir.Ama dediğini yapmak mümkün.Bir keresinde müşteride iken acil bir şeyi rapora koymam gerekiyordu.Projede yanımda değil tabiki(Bahsettiğim zamanlarda Notbooku olan istediği kızı alabiliyordu :-) şimdiki gibi imkanlar yoktu).Hemen raporu açtım,birkaç SQL cümlesiyle istediğim bilgiyi rapora yukarıdaki yöntemle getirmiştim.Sanırım senin sorduğunda bu.Fox pro ya yabancı isen,bu site sana yeterlidir diyorum..

En büyük sermaye nakit,nakit sermaye vakittir...

8

Re: Varolan Raporu Düzenleme Sorunu

FRX'ler elindeyse (anladigim kadariyla hersey elinde:) sadece onu degistirmen bile yeter. VFP'nin rapor dosyalari icin kurali:
-Eger FRX/FRT exe icine gomulu ise onu kullanir.
-FRX/FRT disarida ise, duzenlenebilirler ve EXE duzenlenmis halini kullanir. Hatta Exe calisirken:
-Raporu al
-Kapat
-Bir VFP acip FRX'i duzenle (yedegini al once. Modify report 'RaporDosyasiADi.frx')
-Raporu yeniden al. Yeni duzenlenmis hali gelir.

Duzenlerken menuden report variables secip, bir degisken yaratabilir ve istedigin seyi ona saydirirsin. Rapora bir field ekleyip o degiskeni koyarsin:)

Hatta sayim icin gerekli sey orada zorsa yine EXE'ye dokunmadan:
-Gerekli sayimi yapacak bir kod yaratip saklayabilirsin.
-Rapora field ekler ve expression olarak YarattiginKodAdi() kullanabilirsin. Koydugun banda gore degisik degerler alman mumkun. Ornegin:

*BelliBirUrunToplamSatis.prg
lparameters tcUrunName, tdFirst, tdLast
local array aToplam[1]
select count(*) from myTable where urunAdi == m.tcUrunName ;
  and tarih between m.tdFirst and m.tdLast ;
  into array aToplam
return aToplam

diye bir kod yaratip, o satirlarin sonunda soyle bir field kullanabilirsin (A,B vs urunAdi diye bir kolondan geliyorsa):

BelliBirUrunToplamSatis(urunAdi,m.FirstDate,m.LastDate)


m.FirstDate,m.LastDate degiskenlerinin rapor cagirilan yerde tanimlandigini saniyorum. O zaman rapor onlari gorur ve o koda gonderebilir.

Ipucu: Rapor aslinda kendisini cagiran rutinin gordugu herseyi gorur, ister local degisken ister o formun bir property/event/metodu olsun:) Ornegin bir formun metodundan cagirliyorsa ve o formda txtStartDate, txtEndDate diye tarih kabul eden iki textbox varsa:

BelliBirUrunToplamSatis(urunAdi,thisform.txtStartDate.Value,thisform.txtLastDate.Value)

bile diyebilir cunku onlara ulasabiliyor.


EXE'ye hic mudahale etmen gerekmeyebilir:)

9

Re: Varolan Raporu Düzenleme Sorunu

Offf, yardımlar süper smile

Bu FoxPro ile uzun bir süre beraber olacağımı sanıyorum. Forumunuz ve sizler de bu konuda oldukça yardımsever. Yeni bir müdavim daha kazandınız.

Değişiklikleri yapıp geribildirimi mutlaka yapacağım.

Teşekkürler.