1

Konu: form un Data Environment free tables ekleme

arkasaşlar benim bir sorum olacak örnegin programa yıl secerek giriyoruz ve yıla ait birde klasör var
ve bunun içinde table'lar var  ben yıl sectıgımde otomatık olarak formun (cari.scx) Data Environment
e bu tableleri nasıl ekleye bilirim umarım anlata bildim

Bilgi Paylaşıldıkça Artar...!

2

Re: form un Data Environment free tables ekleme

program açılışda database(muhasebe.dbc) nin nerede bulunduğunu, okuduğunu varsayarak yazıyorum.
DATABASEYOLU="\\SERVERIM\MUHASEBE\YIL2008\DATALAR\" olarak okuduğumuzu var sayarsak,
formun dataenvironment kısmında biforeopentables metoduna şu kodu eklersen tabloları oradan açacaktır.(dataenvironment e 5 tane tablo eklediğini varsayalım)


for cursorno=1 to 5
   cursordbc="thisform.Dataenvironment.CURSOR"+alltrim(str(cursorno))+".DATABASE ="+chr(34)+DATABASEYOLU+"muhasebe.dbc"+chr(34)
   &cursordbc
endfor

tabiiki,daha değişik yollar da var,sen data environmente nasıl eklerim dediğin için bu yolu önerdim.

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

3

Re: form un Data Environment free tables ekleme

formlar DE de ki table lari Design time ( tasarim ani) daki hardpath dedigimiz DBC+dbf lerin oldugun path i  tutar ve once oradan acarak calistirmayi dener , hardpath bilgisi degisirse oncelikle bunu arar.

ancak formda beforeopentables asamasinda bu yol kendisine gosterilirse oradan tablolari acip calismaya devam eder.

ONEMLI NOT : dbc+dbf ler c:\myapp\data\2008 klasorunde olsun beforeopen tables ta gostereceginiz path ( ini,dbf,txt den okutturarak getirilebilir) bundan farkli bile olsa c:\myapp\data\2008 klasoru durdugu muddetce bilgileri oradan okumaya devam eder cunku hardpath e ulasabilmektedir. c:\myapp\data\2008x gibi bir degisiklikle kodu ve her 2 taraftaki tablolardaki kayitlariniza bakarak formun dogru ve saglikli calistigini test edebilirsiniz..

forma bir method ekle myDE isimli

Visual Fox Pro
&& myDE kodu

 
Local dbc_path
&&Select datadir From pathcont Into Cursor CrsPathcont
&&dbc_path=Alltrim(CrsPathcont.datadir) + "\data1.dbc"
dbc_path=addbs(m.gcData03) + [data1.dbc] && m.gcData03 public variable da geliyor
this.SetAll([database],m.dbc_path,[cursor])

form DE beforeOpenTables a

Visual Fox Pro
thisform.myDE()

4 Son düzenleyen, cetinbasoz (08.07.2008 11:43:25)

Re: form un Data Environment free tables ekleme

Ufak bir uyari. Free tablolar 'database' kullanmaz 'CursorSource'ta tam yolu yazili. Benim UpdateDE
diye bir kodum var, icerigi soyle:

Visual Fox Pro
*UpdateDE.prg

Lparameters toDE
Local Array aDEMembers[1]
Local lnMembers,ix,lcMembers
lnMembers = Amembers(aDEMembers,toDE,2)
For ix=1 To m.lnMembers
With Evaluate('toDe.'+aDEMembers[m.ix])
  If Lower(.BaseClass) == 'cursor'
    If Atc(oApp.cAppDBC,.Database) > 0
       .Database = Addbs(oApp.cAppDataPath)+oApp.cAppDBC
    Else
       .CursorSource = Addbs(oApp.cAppDataPath)+Justfname(.CursorSource)
    Endif
  Endif
Endwith
Endfor


BeforeopenTables'da da:

Visual Fox Pro
UpdateDE(this)

oApp custom class. "cAppDBC" uygulamanin database'ini "cAppDataPath" da tablolarin yolunu tutuyor.

5

Re: form un Data Environment free tables ekleme

arkadaslar cok sagalon ilginize teşekkürler bende su şekilde yaptım
  WITH THISFORM.DataEnvironment
     .ADDOBJECT("mycursor","cursor")
     .mycursor.Database= "\data\muhasebe.dbc"
     .mycursor.CursorSource="carikart"
     .CloseTables() 
     .OpenTables()   
   ENDWITH

Bilgi Paylaşıldıkça Artar...!

6

Re: form un Data Environment free tables ekleme

Olmayani mi ekledin! Ne gerek var. Form.Load'da ac. Hem isin icinde dbc varsa o zaman o free tablo degildir.