1

Konu: child table da record pointer sorunu

merhaba arkadaşlar ,tasarladığım bir formda,müsteri.dbf isimli parent table,harcama.dbf isimli child table var.Ekranın solundaki gridden istediğim müşteriyi seçtiğimde,Sağ taraftaki gridde,seçtiğim kişiye ait kayıtlı harcama detaylarını görebiliyorum.Buraya kadarını relationla halletim.Ancak harcama.dbf in balğı olduğı griddeki record pointer'i istediğim gibi hareket ettiremiyorum.Hep ilk Kayıda konumlanıyor.Bu sebepten Detaylardaki mevcut kayıtlar üzerinde işlem yapamıyorum.Formun Data environment Kısmında relation propertisini (OneToMany=.t.) yaptığımda sorun düzeliyor bu seferde  parent table(müsteri.dbf ) i kontrol eden gride bir sürü kayıt  (****** şeklinde) geliyor.Bu problemimi nasıl çözebilirim.Filter ı kullanmak istemiyorum.Çünki işlemleri inanılmaz yavaşlatıyor..:/:)

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

2

Re: child table da record pointer sorunu

"Ancak harcama.dbf in balğı olduğı griddeki record pointer'i istediğim gibi hareket ettiremiyorum.Hep ilk Kayıda konumlanıyor"'u biraz acabilir misin? Sorunu tam anlayamadım.

/o---------------------o\
     www.haser.com
\o---------------------o/

3

Re: child table da record pointer sorunu

üsdat diyelimki harcama.dbf te seçtiğimiz kişiye ait 10 adet kayıt olsun.Grid üzerinde 5.Kayıda tıkladığınızda Kayıdı seçtiğinizi gösteren griddeki record pointer,gridin ilk kayıdı üzerine geliyor.Yani diğer 9 kayıdı seçemiyorsunuz.Dolayısı ile gridin click eventinde çalışan kodlar hep ilk kayıt üzerinde işlem yapmış oluyor.Buda istediğim işi yapmama engel oluyor.Mesala 3.Sıradaki kayıdın fiş numarasını alamıyorum.Hep en baştaki kayıdın fiş numarası geliyor..

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

4

Re: child table da record pointer sorunu

Zannedersem senin formunda bir gariplik var. Relation'da böyle bir durum olmaz. Aşağıda senin için bir örnek hazırladım. Bu örnekte durumun böyle olmadığını göreceksin.

Visual Fox Pro
Public goForm As Form

m.goForm = NewObject("frmOrnek")
m.goForm.Show
 
DEFINE CLASS frmOrnek AS form
 
 
    Top = 0
    Left = 0
    Height = 379
    Width = 643
    DoCreate = .T.
    Caption = "Relation Örneği"
    Name = "frmOrnek"
 
 
    ADD OBJECT grdmusteri AS grid WITH ;
        ColumnCount = 2, ;
        Anchor = 75, ;
        Height = 175, ;
        Left = 0, ;
        Panel = 1, ;
        RecordSource = "Musteri", ;
        Top = 0, ;
        Width = 643, ;
        Name = "grdMusteri", ;
        Column1.ControlSource = "Musteri.cKodMusteri", ;
        Column1.Name = "Column1", ;
        Column2.ControlSource = "Musteri.cMusteriAdi", ;
        Column2.Width = 179, ;
        Column2.Name = "Column2"
 
 
 
    ADD OBJECT grdharcama AS grid WITH ;
        ColumnCount = 2, ;
        Anchor = 30, ;
        Height = 175, ;
        Left = 0, ;
        RecordSource = "Harcama", ;
        Top = 174, ;
        Width = 643, ;
        Name = "grdHarcama", ;
        Column1.ControlSource = "Harcama.cKodMusteri", ;
        Column1.Name = "Column1", ;
        Column2.ControlSource = "Harcama.nTutar", ;
        Column2.Name = "Column2"
 
 
 
    ADD OBJECT label1 AS label WITH ;
        Anchor = 4, ;
        Caption = "Seçilen Tutar", ;
        Height = 17, ;
        Left = 6, ;
        Top = 354, ;
        Width = 102, ;
        Name = "Label1"
 
 
    ADD OBJECT txttutar AS textbox WITH ;
        Anchor = 4, ;
        Alignment = 3, ;
        Value = 0, ;
        Enabled = .F., ;
        Height = 23, ;
        Left = 119, ;
        Top = 351, ;
        Width = 100, ;
        Name = "txtTutar"
 
 
    PROCEDURE Load
        Create Cursor Musteri (cKodMusteri C(10), cMusteriAdi C(100))
        Index On cKodMusteri Tag cKodMuster Unique
 
        Create Cursor Harcama (nKodHarcama I AutoInc, cKodMusteri C(10), nTutar B(2))
        Index On nKodHarcama Tag nKodHarcam Unique
        Index On cKodMusteri Tag cKodMuster Additive
 
        Insert Into Musteri Values("120001", "A Müşterisi")
        Insert Into Musteri Values("120002", "B Müşterisi")
        Insert Into Musteri Values("120003", "C Müşterisi")
 
        Insert Into Harcama (cKodMusteri, nTutar) Values("120001", 100)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120002", 200)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120001", 300)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120003", 400)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120001", 500)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120002", 600)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120003", 700)
        Insert Into Harcama (cKodMusteri, nTutar) Values("120003", 800)
 
        Set Relation To cKodMusteri Into Harcama In Musteri
        Go Top In Musteri
    ENDPROC
 
 
    PROCEDURE grdharcama.AfterRowColChange
        LPARAMETERS nColIndex
        ThisForm.txtTutar.Value = Harcama.nTutar
    ENDPROC
 
 
ENDDEFINE
/o---------------------o\
     www.haser.com
\o---------------------o/

5

Re: child table da record pointer sorunu

neyzen yazdı:

üsdat diyelimki harcama.dbf te seçtiğimiz kişiye ait 10 adet kayıt olsun.Grid üzerinde 5.Kayıda tıkladığınızda Kayıdı seçtiğinizi gösteren griddeki record pointer,gridin ilk kayıdı üzerine geliyor.Yani diğer 9 kayıdı seçemiyorsunuz.Dolayısı ile gridin click eventinde çalışan kodlar hep ilk kayıt üzerinde işlem yapmış oluyor.Buda istediğim işi yapmama engel oluyor.Mesala 3.Sıradaki kayıdın fiş numarasını alamıyorum.Hep en baştaki kayıdın fiş numarası geliyor..


relationu DE de musteri tablosunda harcama tablosuna musteri no yada id herneyse uzerinden kurdu isen

musteri gridinde gezerken harcama gridinde o musteriye ait kayitlari goruyor olmalisin
eger harcama kayitlarinda  degisiklik vs yapmak istiyorsan ya gridin readonly property si .f. olacak
yada textbox lardada grid uzerinde bulundugun kaydi gosterteceksin .

ayrica her 2 gridinde after ve before rowcolchange eventlarina nasil bir kod kullandin belk orda seni engelleye bir seyler var

6

Re: child table da record pointer sorunu

dediğine göre bağlantı  one to many olmalı.
şöyle bir yol dene istersen , dbf dosyalarınında pack yap sonra index dosyalarını yeniden oluştur.
bu durumu düzeltebilir.

7

Re: child table da record pointer sorunu

Refresh cagiriyorsun. Parent-Child durumlarinda thisform.refresh yerine thisform.childGrid.refresh gibi kullan. Eger parent dahil refresh edilirse relationin ilk kaydina gider.

8

Re: child table da record pointer sorunu

set focus kullanmış olabilirsin.ondanda yapabilir birkaç kez karşılaşmıştım

9

Re: child table da record pointer sorunu

SET SKIP komutunu incele
parent tabloda record pointer duruken childın tamamını taramaya yarar.
sorunu tam anlayamadım ama benzettim ....

VFP9 SP2

10

Re: child table da record pointer sorunu

çetin üsdadım dediğin gibi gridin afterrowcolcahange  olayına thisform.refresh kullanışım.Sorun bundan kaynaklanıyormuş.Hatalar bazen basitte olsa insan gözden kaçırabiliyor.Tüm arkadaşlara teşekkür ederim.

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