1 Son düzenleyen, erdalyalcin (27.12.2008 00:23:43)

Konu: vfp8 de çalışan vfp9 da sorun yaratıyor

arkadaşlar vfp8 de yıllardır kullanıyorum sorun yok ama vfp9 sorun yaşatıyor. aynı anda açık birkaç rapor dolaşmak. yani cari extre açıkken aynı anda stok extresi aynı anda sipariş listesi açık ve kullanıcı açık raporlarda dolaşırken oturum kaybetmemsi için vfp8 deki kodlarım aşağıdaki gibi ve sorunsuz çalışıyor. ama vfp9 da session kaybettiği için cursoru bulamayıp hata veriyor.
bazan Session number is invalid bazanda CursorName alias not found gibi mesaj veriyor vfp9
Formun DataSesion=2-Private Data Session

önizleme butonun click i:
local rapor
m.rapor="...\...\reportName"
REPORT form &rapor preview  nowait


reportun Dataenvironment.CloseTables metodu
Set datasession to

reportun Dataenvironment.OpenTables metodu
Set datasession to (polib1.GetAllDs('FormName'))
IF used('CursorName')
    SELE ('CursorName')
ENDIF


*-----------------------------------------*
    Procedure GetAllDs()       
*-----------------------------------------*
    Lparam FormName
    Dime taSessions[1]
    Local lnCurDatasesion, lnSessions
    lnSessions=0
    For Each oForm In _Screen.Forms
        If Ascan (taSessions, oForm.DataSessionId)=0
            lnSessions=lnSessions+1
            Dimension taSessions [lnSessions,2]
            taSessions[lnSessions,1]=oForm.DataSessionId
            taSessions[lnSessions,2]=oForm.Name
        Endif
    Endfor

2

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

bunları neden yapıyorsun anlamadım. ben direk report'u veriyorum ve hiç sorun yaşamıyorum.
set repobeha 80 dersen vfp9'un 9 gibi çalışmasını sağlayabilirsin.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

3

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

metin yazdı:

bunları neden yapıyorsun anlamadım. ben direk report'u veriyorum ve hiç sorun yaşamıyorum.
set repobeha 80 dersen vfp9'un 9 gibi çalışmasını sağlayabilirsin.


örnek:
cari.scx formunun SessionId=2 bu oturumda qcari adında cari.frx in kullnacağı cursor oluşuyor ve açık

stok.scx formunun SesionId=3 bu oturumda qstok adında stok.frx in kullandığı cursor oluşuyor buda açık
fatura formunun SessionId=4 bu oturumda qfatura adında fatura.frx in kullandığı cursor oluşuyor ve bu raporda açık.
aynı anda 3 rapor açık üçününde kullandığı cursorlar farklı oturumdalar. raporlar arasında dolaşırken raporun hata vermemesi için set datasession to ile oturum seçiyorum.

örneğin stok.frx in Dataenvironment.OpenTables metodu
Set datasession to (polib1.GetAllDs('FormName'))
IF used('CursorName')
    SELE ('CursorName')
ENDIF

4

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

belki de raporlarını formlar içine koymalısın. benimki öyle. o yüzden hata vermiyor olabilir. görünüşü de daha güzel oluyor form içinde olunca. biraz parana kıyıp xfrx almanı tavsiye ederim. ben yıllardır xfrx kullanıyorum. çok güzel preview ekranı ve output seçenekleri (word-excel-pdf-open office,bmp,jpeg,html...) var.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

5

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

benim raporlar formun dışında. kullanıcının istediği ölçülerde büyütüp küçültebilmesi için. xfrx konusunda haklı olabilirsin. ama projeleri c# geçirme gibi bir plan olunca xfrx askıda kalıyor.

6

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

erdalyalcin yazdı:

benim raporlar formun dışında. kullanıcının istediği ölçülerde büyütüp küçültebilmesi için. xfrx konusunda haklı olabilirsin. ama projeleri c# geçirme gibi bir plan olunca xfrx askıda kalıyor.


raporlarını formda gösterince de aynı şeyi yapabilirsin. sadece ekran görüntüsü olayı.

c# olayına gelince de. projen eğer büyükse işin zor. tavsiye etmem doğrusu. kaldı ki zaten vfp.net yazılıyor şu an: http://www.etecnologia.net/Products/VFP … tudio.html

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

7

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

VFP kullanan arkadaslarin (tabii ben de dahil) hevesini kirmamak icin ses cikarmiyorum ama Turkce yazarsam en azindan daha az kisi duyar sesimi:)

C# aldi basini gidiyor, o yetmiyormus gibi simdi IronPython, IronRuby gibi dinamik dillerin kutuphanelerinin dogrudan C#'dan kullanilma destegi var. Yetmezmis gibi F# Visual Studionun parcasi oluyor. SQL server BIDS ile SQL server yani sira VFP icin bile rapor hazirlama olanaklari da cabasi. C# 4.0'in henuz on izleme de olsa tadini aldiktan (5.0'dan da cok kucuk kesit gordukten) sonra hakikaten emin degilim yakin gelecekte hala VFP kullaniyor olacagima. Su aralar haril haril WPF ve F# ile "oynuyorum". Sanirim bundan sonra anormal goruntulu gridleri filan nasil yapicam diye soranlara WPF grid kullan diyecegim:) 3 dakikada karmasik sekilde bir dizi web sitesini dolasip, borsa bilglerini nasil alirim ve bunlari grafige dokerim diyene F# (ya adami hasta ediyor F#, her dilde yapilir sonucta da, bunun kodu elle olcsen bir karis degil).

Forumdan bir arkadas sahidim (adini vermeyeyim) 1 dakikada (hadi olsun olsun 1.5-2) biribirine bagli 3 tablolu (customer,orders,orditems) ve calisan (yani ileri, geri ..., kayit vs)  bir formu yapmak mumkun WPF kullanarak (VS 2010 ile - tavsiyem indirip siz de bakin). VFP de bile olmayan data isleme kolayliklari beni "VFP'nin kralligindan ne kaldi" diye dusunduruyor.

Neyse benim kusuruma bakmayin su aralar iyice bozdum kafayi .Net ile (VFP icin activex bile yazmaya basladim ama VB.Net kullanarak - cunku interopforms toolkit VB destekli yayinlandi ve simdilik sadece VB.net ile dogru calisanini basardim. C# ile olan da calisiyor ama propertyleri iki tarafa gostermeyi basaramadim onda).

8

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

Mesela bu C# kodu:

C#
var excel = new Excel.Application();

excel.Workbooks.Add();
excel.Visible = true;
var sheet = excel.ActiveWorkbook.ActiveSheet;
var range = sheet.Range("A1");
string sql = "select * from customers";
string connection =   @"OLEDB;Provider=SQLNCLI10.1;Data Source=.;Integrated Security=SSPI;
Initial Catalog=Northwind"

 
sheet.QueryTables.Add(connection, range,sql).Refresh();

Bu da ayni isi yapan VFP:

Visual Fox Pro
excel = NEWOBJECT('Excel.Application')

excel.Workbooks.Add()
excel.Visible = .t.
sheet = excel.ActiveWorkbook.ActiveSheet
range = m.sheet.Range("A1")
sql = "select * from customers"
connection =   "OLEDB;Provider=SQLNCLI10.1;Data Source=.;Integrated Security=SSPI;"+;
"Initial Catalog=Northwind"
 
sheet.QueryTables.Add(m.connection, m.range,m.sql).Refresh()

Sanki C# kodunu sadece VB'ye cevirmisiz gibi:) Noktali virgulleri kaldir. Bir iki ufak degisiklik ve sonuc ayni. Demek istedigim bazi alanlarda C# kodu yazmak artik VFP kodu yazmak kadar kolay. Bazi alanlarda ise cok daha kolay (tabii bazi yerlerde de, anlayana kadar, dunyanin en zor dili).

9 Son düzenleyen, aydinufuk (31.12.2008 14:52:16)

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

cetin ,

silverlight icin ne diyorsun? ve F# nin geleceğini nasıl görüyorsun ? f# de ustalaşmak için önereceğin kaynak var mı?

10

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

WPF ve F# nedir? F# ın microsoft tarafından deneysel olarak yazıldığı ve sonra da bırakıldığını okumuştum yanlış hatırlamıyorsam.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

11 Son düzenleyen, cetinbasoz (31.12.2008 16:35:19)

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

Silverlight tabii ki web bazli islerin artik kalbinde. O zaten var ve beklenen 2.0 versiyonu artik kullanimda. Onsuz Web olmayacak gibi gelecekte:)

Metin,
WPF - Windows Presentation Foundation. Nasil anlatilir iki satirla bilmiyorum, basitce makinendeki ekran kartinin gucunu dogrudan kullanarak gorsel acidan zengin ortamlari yaratmak icin bir altyapi. Programci acisindan mesela 3 boyutlu bir goruntu kullanmak daha kolay, ya da istedigin sekil, parlaklik, animasyonda commandbutton, combobox ...

Evet F# MS'un arastirma dillerinden idi ama hic birakilmadi. 10 Aralikta, F#'in Visual Studio 2010 icinde yer alacagi aciklandi.
2010'da yayimlanmasi beklenen C# 4.0'in en carpici yeniligi:

dynamic

keyword:) Acikca itiraf etmediler tamam ama oyle ya da boyle, .Net'de harika (LINQ ve Entity framework) data isleme yeteneklerine dinamiklik de ekleniyor.

Simdi ben mesela, ayni anda makinemdeki bir suru CPU'yu (simdilik double core CPU, seneye belki quad core olur) kullanabilmek icin ozel kod yazmakla ugrasmayacagim. Paralel processing, .Net 4.0'in icinde (kaldiki F# onu simdi bile cok kolay yapiyor - ah F# ah, yaktin beni, geceler uykusuz calismakla geciyor).

Not: Bu arada F#'a ilgim tarihsel. Ben yillar once (Foxbase ile Foxpro 2.0 arasinda  - o nedenle foxpro 1.0'i hic kullanmadim) Turpo Prolog ile calistim ve onunla 'database' programlama yaptim. F# onun son derece modern hali gibi (oCaml ile uyumlu).

12 Son düzenleyen, cetinbasoz (31.12.2008 16:43:23)

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

Ah F# icin kaynak. Buarasi ana sayfa:

http://msdn.microsoft.com/en-us/fsharp/default.aspx

Oradan baslayabilirsin ama ogrenmek icin kaynak oralarda tam olarak yok. Yakinda sanirim bir suru ogretici yazi, video filan cikar. Ben Don Syme'in (F#'i yazan) kitabini okuyorum (sansima bizim universite online olarak safariye uye).

F# guzel ama belki de daha cok bilimsel islerde cekici (muhendislik, matematik, modelleme ... )

13

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

WPF de f# ta benim ilgi alanımda değil anlaşılan. benim işim muhasebe. foxpro 1.0 ı kullanmamakla çok iyi yapmışsın. çok yavaştı. eğer 2.0 çıkmasa foxbaseye geri dönecektim. öyle kötüydü...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

14

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

cetin,

inceledim ama tam kestiremedim. F# bir yapay zeka dili midir?

15

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

aydinufuk yazdı:

cetin,

inceledim ama tam kestiremedim. F# bir yapay zeka dili midir?


fonksiyonel programlama dili diye açıklıyorlar. anlamını bilmiyorum.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

16 Son düzenleyen, cetinbasoz (04.01.2009 23:42:25)

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

Aydın,
Evet yapay zeka dili. Eskiden AI grubu deniyordu (prolog, haskell,lisp, caml ...). Fonksiyonel programlama diyorlar simdi. Ben onu tanimlari pek anlamiyorum:) Normalde bizim kullandigimiz dillerde isin "nasil yapilacagini" da biz programliyoruz. F#, oCaml ... vs gibi dillerde ise "nasil yapilacagini degil  ne yapilacagini" kodluyorsun temel olarak.  Cok felsefik laf, ben de anlamadim:)

Bir ornek vereyim (Hanoi kuleleri).

-A,B,C cubuklari ve N adet farkli caplarda disk var.
-Tum diskler basta A cubugunda. B yardimci cubuk, hepsi C'ye gecirilecek.
-Herhangi bir anda sadece bir tek disk herhangi bir cubuktan alinip baska cubuga konacak.
-Diskler farkli caplarda ve hicbir zaman kucuk capli bir disk altta kalamaz.

3 diskle ornek:
(http://www.superkids.com/aweb/tools/logic/towers) adresinde de oyun olarak var.

  =     |   |
==    |   |
===   |   |
A       B  C

  |      |   |
==    |   |
===   |   =
A       B  C

  |       |      |
===   ==   =
A         B    C

  |       |      |
  |       =     |
===   ==   |
A         B    C

  |       |      |
  |       =     |
  |      ==  ===
A         B    C

  |       |      |
  =     ==  ===
A         B    C

  |       |      |
  |       |     ==
  =      |   ===
A         B    C

  |       |     =
  |       |    ==
  |       |   ===
A         B    C

A > C, A > B, C >B,A > C, B > A, B > C, A > C

Yani cozum sozlu olarak:
-Eger 1 disk varsa, A'dan C'ye
-Degilse N-1 diski A'dan B'ye (C cubugu yardimci), kalan 1 disk  A dan C'ye, N-1 B den C'ye (A yardimci).

F# kodu:

C#
let rec hanoi n a b c = 

    match n with
    | 1 -> [(a,c)]
    | _ -> (hanoi (n-1) a c b) @ (hanoi 1 a b c) @ (hanoi (n-1) b a c)

Kod neredeyse sozlu sekline tipatip uyuyor.

F# fonksiyonel ve tipleri dinamik (bu kodda n integer a, b, c ise jenerik tipler). Jenerik olmasi demek ben kodu
hanoi 3 "a" "b" "c";;
ya da:
hanoi 3 1 2 3;;
diye calistirabilirim (A B C cubuklarini 1,2,3 diye numaraladim). hanoi 3 1 2 3;; e cevap:
[(1,3); (1,2); (3,2); (1,3); (2,1); (2,3); (1,3)]

17 Son düzenleyen, aydinufuk (05.01.2009 10:51:10)

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

Çetin saol,  sorduğum da tam buydu.

son bir soru smile
yapay zeka dilleri içinde en tutulan dil f# midir? bir bilgin var mı? dil mantığı prolog'a benziyor mu? ya da lisp'e ? geçmişte lisp le bazı program denemeleri yapmıştım. ms neden f# dilini vs 'ya dahil ediyor?

verdiğin bilgiler için şimdiden teşekkür ederim.

vfp'ya alternatif diller arıyorum da. biri belli oldu C#. bir diğeri de f# olabilir. cad cam üzerine bu dönem bazı işler yapıyorum .
örneğin bir sunta levha üzerine dolap parçalarını kesim için yerleştirme işlemi gibi. bu nedenle biraz deşiyorum bu konuyu.

18 Son düzenleyen, cetinbasoz (05.01.2009 13:43:45)

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

O grupta en cok tutulan hangisi bilemiyorum. Caml ve oCaml tutuluyor, F#'da kendisine baz olarak oCaml'i almis, hatta oCaml kodlarini derleyebiliyor (bir de #light diye yeni lightweight syntax eklemis - normalde onu kullaniyor, light off dersen dogrudan oCaml kodu da kullaniyor filan). Bu dillerin hepsi uc asagi bes yukari biribirine benziyor. Ben prolog'u ciddi seviyede kullanmistim ama F# icin syntaxi bastan ogreniyorum dogrusu. MS F#'i neden dahil ediyor? Benim acimdan zor soru:) .Net 4.0 da (VS 2010 - ve sonrasinda, PDC 2008 video kayitlarindan analadigima gore) Linq'dan sonra yenilik dinamiklik. 5.0'da dilin kod bloklarini dogrudan calistirmasi da var (VFP nin & ve Execscript() leri gibi). Dogrudan IronPython, IronRuby cagirabilmesi de bununla ilgili saniyorum. F# geliyor, J# gidiyor:) J#'i kaldirirken biraz fonksiyonel programlama destegi koymasi benim isime geldi.

Evet, optimizasyonda F# bayagi isine yarayabilir:) Visual Prolog'un bir tangram ornegi olacakti bir yerlerde.
Bence oCaml ile bilgiler bak internetde. O eski olduguna gore tonlarca bilgi, ornek vs vardir. F#, oCaml + .Net class library destegi gibi (bu arada tabii ki .Net class lib destegi de var).
"While inspired by OCaml, F# isn't just another functional programming language. Drawing on many of the strengths of both OCaml and .NET, it's a general-purpose language ideal for real-world development."

Bir ornek daha (kitaplardan ve PDC 2008'den yurutme - benden degil:)

C#
#light

open System.Windows.Forms
 
let form = new Form(Visible=true,TopMost=true,Text="Welcome to F#")
let textB = new RichTextBox(Dock=DockStyle.Fill,Text="blah blah")
form.Controls.Add( textB )
 
open System.IO
open System.Net
 
let http (url: string) =
    let req = System.Net.WebRequest.Create(url)
    let resp = req.GetResponse()
    let stream = resp.GetResponseStream()
    let reader = new StreamReader(stream)
    let html = reader.ReadToEnd()
    resp.Close()
    html
 
textB.Text <- http "http://www.live.com"

Eger F#'i sitesinden indirip kurarsan bu kodu ister interactive olarak ister Visual studio icinden calistirabilirsin. VS icinden bile interactive, satir satir gidebiliyorsun (cok hosuma gitti bu ozellik VFP gibi satir satir yaz, ister satir ister blok sec aninda sonucunu gor, begenmezsen degistir)

Kod basit ama etkili ve F#'in birkac ozelligini gosteriyor:
-.Net libraryleri dogrudan kullanma
-Herhangi bir class constructori isimli propertyler ile cagirabilme

C#
let form = new Form( Visible = true, ... )


Bunu:

C#
let form = new Form()

form.Visible <- true
...

seklinde de kullanabilirdi.

Burada gorunmeyen bir baska ozellik, eger senin elinde bir URL listesi olsaydi, hepsinin HTML icerigini alip bazi istatistikler yapacagini, ya da onun yerine duz HTML icerik degil, her cagirista bir hisse senedinin acilis,kapanis, en yuksek ... vs bilgilerini belli tarih araliginda alacagini ve ekranda grafiklerini cizecegini dusun. A, B, C yi cagiracaksin ama senin quad core CPU'un var. A'nin bitmesini beklemektense dogrudan bunlari paralel islemek istiyorsun (farkli CPUlara gitsin, bos olan sonrakini alsin vs). Bu paralel isleme artik gunun geregi kabul ediliyor ve .Net 4.0'da geliyor. Ancak bunu F# bugun zaten destekliyor:) Basina bir asynch oldugunu belirten ek koyuyorsun, bir iki satirda (blokaja neden olacak yerler) let x yerine let x! diyorsun ve oluyor (nasil oluyor Allah bilir:) Zaten yukaridaki ornek daha cok C#, VB stili kod, cekiciligi yok. Cekiciligi kolaylikla CPU'lara dagitilabilmesi getiriyor. Ben onu C#'da anlamakta zorluk cektim acikcasi, F#'ta cok daha kolayima geldi.

Ornegini gormek istersen PDC 2008 videolarinda F# sunumunu izle (Luca Bolognose):
http://channel9.msdn.com/pdc2008/TL11/

Ozetle soyle:

C#
let http (url: string) = async {

    let req = System.Net.WebRequest.Create(url)
    let! resp = req.AsyncGetResponse()
    let stream = resp.GetResponseStream()
    let reader = new StreamReader(stream)
    let! html = reader.AsyncReadToEnd()
    resp.Close()
    return html }

Cok bos vaktim olursa (ki hayal) bir activex derleyip VFPde kullanmak uzere bir yerlere yuklerim.

19

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

fazla bilimsel. ben muhasebe yazar. para konuşur... $-)

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

20

Re: vfp8 de çalışan vfp9 da sorun yaratıyor

çetin saol. epey işim yarayacak bu verdiğin bilgiler. sanırım f#  bana da uykusuz geceler geçirtecek.