Filter property cannot be used for detail tables

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
canset
Üye
Mesajlar: 148
Kayıt: 19 Haz 2005 11:38

Filter property cannot be used for detail tables

Mesaj gönderen canset » 29 Tem 2011 10:15

S.A.

Access Vt'da master/detail ilişkisini yapılandırmama ve filtreleme yapmadan önce dbgrid'ler vasıtası ile izleyebilmeme rağmen; kasa defterinde iki tarih arasında filtreleme yaptığımda 'Filter property cannot be used for detail tables' uyarısı alıyorum.

Kasa defterinde 3 adet adodataset ile [günlük satış]-[müşteri satış]-[müşteri satış detay] bilgilerini ayrı ayrı göstermek istiyorum.

[müşteri satış] ile [müşteri satış detay] datasetlerini master/detail ilişki kurdum.

[müşteri satış] master, [müşteri satış detay] ise detail olarak düşündüm. Bunun için [müşteri satış detay] ın bağlı olduğu adodataset'in datasource'una [müşteri satış] ın datasource'unu gösterdim. Ve aşağıdaki kod ile de iki tarih arası filtreleme ile işlemi sonlandırmak istedim..

Kod: Tümünü seç

procedure TFormKasa.Button1Click(Sender: TObject);
var
y: Integer;
tutop: double;
kartop: double;
begin
adodatasetsatis2.Close;
adodatasetsatis2.Filter:= 'adodatasetsatis2Tarih>='+maskedit1.Text+ 'and adodatasetsatis2Tarih<='+Maskedit2.Text;
adodatasetsatis2.Filtered:= true;
adodatasetsatis1.Open;
adodatasetsatis2.Open;
adodatasetsatis3.Open;


adodatasetsatis2.First;
tutop:=0;
kartop:=0;
for y := 1 to adodatasetsatis2.RecordCount do
begin
tutop:= tutop+ adodatasetsatis2IslemTutari.AsCurrency;
kartop:= kartop+adodatasetsatis2Kar.AsCurrency;
adodatasetsatis2.Next;
end;
adodatasetsatis1.Edit;
adodatasetsatis1Tarih.Text:= MaskEdit2.Text;
adodatasetsatis1Gelir.AsString:= FloatToStr(tutop);
adodatasetsatis1Kar.AsString:= Floattostr(kartop);

end;
Sonuç..:
"Filter property cannot be used for detail tables"

Yardımlarınızı bekliyorum...

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3036
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Filter property cannot be used for detail tables

Mesaj gönderen sabanakman » 01 Ağu 2011 11:14

Kod: Tümünü seç

adodatasetsatis2.Filter:= 'adodatasetsatis2Tarih>='+quotedstr(maskedit1.Text)+ 'and adodatasetsatis2Tarih<='+quotedstr(Maskedit2.Text);
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

Kullanıcı avatarı
canset
Üye
Mesajlar: 148
Kayıt: 19 Haz 2005 11:38

Re: Filter property cannot be used for detail tables

Mesaj gönderen canset » 23 Oca 2012 01:38

S.A.

Halen aynı sorun üstteki düzeltmeyi yapmama rağmen devam ediyor. Görüşlerinizi bekliyorum...

hsngoktas
Üye
Mesajlar: 9
Kayıt: 24 May 2009 12:56
Konum: Bursa
İletişim:

Re: Filter property cannot be used for detail tables

Mesaj gönderen hsngoktas » 28 Oca 2012 07:54

filter özelliğini detay tabloda kullanamazsınız diyor. bu durumda detay tabloyu

tdetay.close;
tedetay.commandtext := 'SELECT * FROM DETAYTABLO WHERE REFID='+REFID + ' AND TARIH BETWEEN '+ ILKTARIH ' AND ' + SONTARIH;
tdetay.open;

şeklinde bir düzenleme yapsan sorun çözülür sanırım.

Kullanıcı avatarı
canset
Üye
Mesajlar: 148
Kayıt: 19 Haz 2005 11:38

Re: Filter property cannot be used for detail tables

Mesaj gönderen canset » 03 Şub 2012 10:01

S.A.

Aslında paradoxda basit bir şekilde secondary index'ler tanımlayarak, birbirlerine bağladığım tablolardan ilgili alanları çekip, dbgrid üzerinde gösterebildiğim 7-8 satırlık bir kodu, access veri tabanına göre uyarlamak istiyorum. Mesele bundan ibaret...

Paradox'da işimi şu kodla halledebiliyorum:

Kod: Tümünü seç

procedure Tform5.Button4Click(Sender: TObject);
var
y:integer;
tutop: double;
kartop:double;
begin
table1.Open;
table2.Open;
table3.Open;

table2.IndexName:= 'TARIHINDEX2';
table2.SetRange([MaskEdit1.text],[MaskEdit2.text]);
table2.ApplyRange;

table2.First;
tutop:= 0;
kartop:= 0;
for y:= 1 to table2.RecordCount do
begin
tutop:= tutop+ table2ISLEMTUTARI.AsCurrency;
kartop:= kartop+ table2KAR.AsCurrency;
table2.Next;
end;

table1.edit;
table1TARIH.Text:= MAskEdit2.Text;
table1GELIR.AsString:= FloatToStr(tutop);
table1KAR.AsString:= FloatToStr(kartop);
end;
Ve bu kodu access'e uyarlamak istiyorum.

Kullanıcı avatarı
canset
Üye
Mesajlar: 148
Kayıt: 19 Haz 2005 11:38

Re: Filter property cannot be used for detail tables

Mesaj gönderen canset » 16 Şub 2012 09:40

hsngoktas yazdı:filter özelliğini detay tabloda kullanamazsınız diyor. bu durumda detay tabloyu

tdetay.close;
tedetay.commandtext := 'SELECT * FROM DETAYTABLO WHERE REFID='+REFID + ' AND TARIH BETWEEN '+ ILKTARIH ' AND ' + SONTARIH;
tdetay.open;

şeklinde bir düzenleme yapsan sorun çözülür sanırım.
S.A.

Konuyu şekil üzerinden daha detaylı anlatmak istiyorum...

Forma iki tane maskedit koydum, maskedit1'e ilk tarihi, maskedit2'ye de son tarihi giriyorum ve bir buton ile filtreleme yaptırmak istiyorum.

Üç tane ayrı tablom var ve bunları birbirleri ile ilişkilendirdim. Onu da şu şekilde resimle göstereyim.

Resim

satis1-satis2-satis3'ü birbiri ile ilişkilendirdim.
satis2'ye göre filter uygulayıp satis1 ve satis3'ü de buna göre çekebiliyorum.
İşlemi paradox ile sorunsuz olarak hallettim.

satis1 de günlük gelir ve kar'ı izliyorum.

satis2 de işlem tutarını ve kar'ı görüyorum.

satis3 de ise satis2'nin detayını (ürün bazında) izleyebiliyorum.

Bunu paradoxda yaparken aşağıdaki kodu kullandım:

Kod: Tümünü seç

procedure Tform5.Button4Click(Sender: TObject);
var
y:integer;
tutop: double;
kartop:double;
begin
table1.Open;
table2.Open;
table3.Open;

table2.IndexName:= 'TARIHINDEX2';
table2.SetRange([MaskEdit1.text],[MaskEdit2.text]);
table2.ApplyRange;

table2.First;
tutop:= 0;
kartop:= 0;
for y:= 1 to table2.RecordCount do
begin
tutop:= tutop+ table2ISLEMTUTARI.AsCurrency;
kartop:= kartop+ table2KAR.AsCurrency;
table2.Next;
end;

table1.edit;
table1TARIH.Text:= MAskEdit2.Text;
table1GELIR.AsString:= FloatToStr(tutop);
table1KAR.AsString:= FloatToStr(kartop);
end;
Ancak paradox veri tabanında değişik sıkıntıları tekrar tekrar yaşamam nedeni ile access veri tabanına geçmeye çalışıyorum ve programın bu kısmını bir türlü halledemedim. Anladığım kadarı ile paradoxdan alışkın olduğum bazı komutları access vt de kullanamıyorum.

Access de form üzerine yerleştirdiğim adodatasetler ile tablolardan veriyi çekiyorum. Yardımcı olabileceklere şimdiden teşekkürlerimi sunarım.

Kullanıcı avatarı
canset
Üye
Mesajlar: 148
Kayıt: 19 Haz 2005 11:38

Re: Filter property cannot be used for detail tables

Mesaj gönderen canset » 20 Şub 2012 09:31

Örneğin;

Kod: Tümünü seç

table2.SetRange([MaskEdit1.text],[MaskEdit2.text]);
kodunu adodataset ile nasıl yazabilirim??

bjkdilan
Üye
Mesajlar: 1
Kayıt: 18 Nis 2012 06:19

Re: Filter property cannot be used for detail tables

Mesaj gönderen bjkdilan » 18 Nis 2012 09:38

ya bi ödevim var yardımcı olacak kimse yok muuu???

mkysoft
Kıdemli Üye
Mesajlar: 2976
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: Filter property cannot be used for detail tables

Mesaj gönderen mkysoft » 18 Nis 2012 11:33

filter özelliğini kullanmalısınız, yada sql sorgusunu yeniden yazmalısınız.

Cevapla