Şarta göre dbgride bilgileri koyma ama durum biraz farklı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Misafir

Şarta göre dbgride bilgileri koyma ama durum biraz farklı

Mesaj gönderen Misafir »

Şimdi Bir tane Master ona bağlı bir detail ve onada bağlı 3. detail tablom var...Mssql database...Şimdi Şöle verileri biraz açıklayım Ben mssql ye bir şey yazmayacağım sadece mssql de olan verileri master detail bağladım...Şöyleki master tablosu sipariş tablosu buna bağlı iş emri tablosu ve iş emri tablosunada bağlı üretim sonu kaydı tablosu var...Şimdi Sipariş tablosunda yani 1. tablodaki siparişlerden arama yaptığı zaman sipariş ve içindeki stok kodlarını dbgridin bir tanesine döküyor...Bu stoklara da açılmış olan tüm iş emirlerini 2. dbgride döküyor...3. ise bu iş emirlerine göre yapılan üretim sonu kaydı miktarlarını döküyor...İşte şöyle bir durum var kullanıcı bu üretim sonu kaydı miktarlarına göre sevkiyat yapacak ve benim firebird ile beraber yaptığım database kayıt yapacak ama her defasında bu üretim sonu kaydı miktarları hangi iş emirlerine göre açıldıysa hepsi listeye geliyor...Benim istediğim Şu...Yapamadım uğraşıyorum olmuyor beceremedim...Üretim sonu kaydı miktarı bilgilerinin her biri için bir tane üretson_no diye bir no var ben bunu firebird'de kayıt ediyorum...İstediğim firebirde kayıt edilmiş olan üretson_no larının bu 3. dbgrid olan üretim sonu kaydı miktarındaki dbgridde tekrar listelenmemesi...Yani kaydı girilen üretson_no ların dbgridde olmaması....Lütfen Yardım...Teşekkürler
Misafir

kimse anlamadı yazdığımı herhalde

Mesaj gönderen Misafir »

Sadece şunu söyleyim iki tane database var birisi mssql birisi firebird ben mssql den aldığım bilgileri firebirde düzenli ve farklı bir şekilde bilgilere dönüştürüp kaydedeceğim. Sorun şu....

Detail olarak listenen tabloya diğer master ve bir üzerindeki detail tablolarda işlem oldukça bu 3. dbgride düşüyor ve kullanıcı buradan veriyi seçerek işlemine devam ediyor ama kaydettiği verileri bu 3. gridde tekrar görüyor...Şöyle bir sorgulama olabilir mi...3 detail tablodaki farklı olan bir noyu ben firebirddeki ilgili yerede kaydediyorum...Firebirddeki ilgili yere yazılan no eğer firebirdde varsa demek ki o numara ile kaydedilmiş demesi ve dbgridde bu veriyi listelememesi....Teşekkürler şimdiden...
Misafir

sorumla ilgili cevap verecek arkadaş yok mu

Mesaj gönderen Misafir »

Arkadaşlar gerçekten yapamadığım bir mevzu lüften yardımcı olurmusunuz.....Teşekkür ederim...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Anladığım kadarıyla cevap vermeye çalışacağım.

Anlamış olduğum şey 3 tabloda veri işleme yapıyorsunuz. Tablodan başka tabloya aktardığınız kayıtları DBGrid de görmek istemiyorsunuz. Yanlışım varsa düzeltin.

Bence bu işlemi en güzel şekilde Çöp Tablo kullanarak yapabilirsin bir tane çöp tablo oluştur ve işleme tabi tutacağın tablodaki bütün kayıtları çöp tabloyo aktar ardından çöp tabloyu işleme tabi tut aktardığın kayıtlarıda çöp tablodan sil böylece DBGrid'de bu olayı kasmanada gerek kalmaz.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
en sondaki tablonun onfilterrecodr olayını kullabilirsin. eğer numara girilmemişse göster. numara girildiyse gösterme gibi.
Tableın filtered ini kulllanmayı unutma. Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Misafir

selamlar

Mesaj gönderen Misafir »

sayin aslangeri kardeşim....Bu olay çok lazım bana biraz açarmısın...lütfen anlattıklarını birde ufak bir örnekle beraber lüften...Teşekkür ederim...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.

Kod: Tümünü seç

procedure TDm1.TKurumTurleriFilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin
  accept:=dataset['uretson_no']=null;
end;
tablonun filtered özelliğini true yapman lazım.
ama madem fb kullanıyorsun verileri direk tablodan çekmek yerine( öyle yaptığını varsayıyorum) yazdığın bir sp den çekersen dah kolay olur gibi. Uretson no girildiği zaman tabloyu refresh edersin işlem tamam olur.

Sonuç: iki yol var
1.tablonun onfilterrecord olayına yukardakine benzer r bir kod yazacaksın.
2.verileri direk tablodan değilde yazdığın bir sp den çağıracaksın. bu sp de where ifadesinin yanına

Kod: Tümünü seç

 uretson_no is null 
ifadesini ekleyeceksin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Misafir

selamlar

Mesaj gönderen Misafir »

teşekkür ederim..Allah razı olsun....Deneyeceğim hemen....
Misafir

peki arkadaşlar

Mesaj gönderen Misafir »

Bu olayı yaptığımız zaman filtered olayını firebirdde olan noyu 3 dbgridde göstermeyecek mi yani şimdi...Ne bilim tüm tabloyu kontrol etmesi felan gerekmiyor mu.....dbgriddeki nonun olup olmadığını anlaması için...Teşekkürler
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

onfilterrecord olayı bağlı olduğu tablodaki tüm kayıtları tek tek kontrol eder.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Misafir

selam

Mesaj gönderen Misafir »

ben bu olay için onfilterreord yapamadım belkide hiç yapmadığımdandır zaten sp ile hiç şeyim olmadı bu ilk programımı bitirdikten sonra sp ye merak sarmayı düşünüyorum...Şöle bir durum var

Butonu basında kayıt yaptırıyorum ve fakat ilk nöce şu aşağıdaki koda bakmasıını daha sonnra onlara geçmesini istiyorum bunu nasıl halledicem..Fakat sorun bana göre şurdaki 10 tane comboboxın alttaki kodda kayıt olayı var yani konusu olan uretsonfisno hepsinde kayıt ediliyor. şimdi söyle söyleyim......

benim bu yaptığım olayın olacağını zannetmiyoum çünkü satır kaydı olarak belkide aynı uretsonfisno dan 10 tane kayıt atabilir diğer table çünkü o uretsonno ile kaydedilen ürünü kayıt yaparken 10 tane ürünü arafına 10 tane ürünü b rafına dediği zaman satır kaydı yapılacak ve uretsonfisno tekrar edilecek bu filterrecord olayını çözerseniz sevinirim....

Kod: Tümünü seç

{
a:=0;
dm2.sevdetaildataset1.First;
   while not dm2.sevdetaildataset1.Eof do
   begin
   if (dm.TBLSTOKURSURETSON_FISNO.AsString=dm2.sevdetaildataset1URET_SON_FIS_NO.AsString) then
     begin
     a:=1;
     end;
   dm2.sevdetaildataset1.Next;
   end;
   if (a=0) then   //kayıt yok
   begin
   dm2.sevdetaildataset1URET_SON_FIS_NO.AsString;
   end;
   if (a=1) then    //kayıt var
   begin
   ShowMessage(dm.TBLSTOKURSURETSON_FISNO.AsString+'Icin Kayıt Başarısısız')
   end;
 }

 //-------------------------------

fakat bu butonda kayıt edilmesi gereken yerler var ve bu uretsonno fisnonun kayıt muhabbeti aşağıda

Kod: Tümünü seç

var
a,toplam,b:integer;
begin
b:=0;
toplam:=0;
if (Edit18.Text<>'') then toplam:=toplam+StrToInt(Edit18.Text);
if (Edit24.Text<>'') then toplam:=toplam+StrToInt(Edit24.Text);
if (Edit30.Text<>'') then toplam:=toplam+StrToInt(Edit30.Text);
if (Edit36.Text<>'') then toplam:=toplam+StrToInt(Edit36.Text);
if (Edit42.Text<>'') then toplam:=toplam+StrToInt(Edit42.Text);
if (Edit48.Text<>'') then toplam:=toplam+StrToInt(Edit48.Text);
if (Edit54.Text<>'') then toplam:=toplam+StrToInt(Edit54.Text);
if (Edit60.Text<>'') then toplam:=toplam+StrToInt(Edit60.Text);
if (Edit66.Text<>'') then toplam:=toplam+StrToInt(Edit66.Text);
if (Edit72.Text<>'') then toplam:=toplam+StrToInt(Edit72.Text);

if (toplam=StrToInt(Edit12.Text)) then
begin //kaydet
if (comboBox1.Text<>'') then  // 1 ıcın
     begin
     dm2.sevdetaildataset1.Append;
     dm2.sevdetaildataset1KAY_TAR.AsString:=DateToStr(Date);
     dm2.sevdetaildataset1SEVKIYAT_NO.AsString:=DBEdit13.Text;
     dm2.sevdetaildataset1AYD_SIPNO.AsString:=DBEdit1.Text;
     dm2.sevdetaildataset1AYD_STOK_KODU.Text:=DBEdit2.Text;
     dm2.sevdetaildataset1IS_EMR_TAR.Text:=DBEdit6.Text;
     dm2.sevdetaildataset1MUS_CARI_KODU.Text:=DBEdit5.Text;
     dm2.sevdetaildataset1MUS_STOK_KODU.Text:=DBEdit9.Text;
     dm2.sevdetaildataset1AYD_SIP_MIK.AsString:=DBEdit7.Text;
     dm2.sevdetaildataset1TES_TARIHI.AsString:=DBEdit3.Text;
     dm2.sevdetaildataset1STOK_BIR_AGIR.AsString:=edit13.text;
     dm2.sevdetaildataset1PALET_NO.AsString:=ComboBox1.Text;
     dm2.sevdetaildataset1PALET_TIPI.AsString:=ComboBox21.Text;
     dm2.sevdetaildataset1KOLI_TIPI.AsString:=ComboBox11.Text;
     dm2.sevdetaildataset1KOLI_NO_BAS.AsString:=Edit14.Text;
     dm2.sevdetaildataset1KOLI_NO_BIT.AsString:=Edit15.Text;
     dm2.sevdetaildataset1KOLI_ADET.AsString:=Edit16.Text;
     dm2.sevdetaildataset1TOPLAMI.AsString:=Edit18.Text;
     dm2.sevdetaildataset1STOK_AGR_TOP.Text:=Edit19.Text;
     dm2.sevdetaildataset1UR_SON_KAY_MIK.AsString:=Edit12.Text;
     dm2.sevdetaildataset1URET_SON_FIS_NO.Text:=DBEdit14.Text;
     
     dm2.sevdetaildataset1.Post;
     end;
ve böle if li 10 tane code yani 10 tane comboboxı seçilip seçilmediğini eğer seçildi ise satır satır kayıt ettirmek için yapmıştım....

Filterrecord yapamadım bilmiyorum beceremedim...Filterrecord yapabilseydim yapacağı eğer ikinci tabledaki field de kayıt varsa tableda filtrelemesi ve onun görünmemesi idi....

Yardımcı olursanız sevinirim...Teşekkürler
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

onfilterrecord olayında
accpet değişkeni true olursa kaydı gösteriyor.
false olursa kaydı göstermiyor.
diğer kodlara bakamadım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Misafir

selam

Mesaj gönderen Misafir »

hocam tek database ile bu olayı yaptım ama 2 database de bu kurguyu ben kuramadım acemeliğimden...

2 Tane database var birisi mssql diğeri firebird ben mssql den filtrelediğim verileri firebirddeki diğer database atıyorum....

Yani şöyle bir şey olması gerekiyor mssql deki table filtreleyecek ama firebirddeki tabledaki kayıtların durumuna göre...Tam açıklayarak yazım...Yani ciddi söylüyorum sabahtan beri uğraşıyorum yapamadım...becereksizlik artık....

uretson_fisno diye dbgridde listelenen bir kayıt var...Ben bu kayıdı friberiddeki table atıyorum...Ama şu filtreyi kuramadım. Firebirddeki tüm kayıtları tara eğer yoksa filtreleme varsa filtrele ama mssqldeki tabloyu....

Veya şöyle bir şey de işimi görür onuda yapamadım yani firebirddeki tabloyu tara edit1 de aynısından kayıdı varsa mssql deki tabloyu filtrele ve o kıyıdı gösterme ki kullanıcı aynı kayıdı tekra ryapamasın ve orda görünmesin...Yardımcı olursanız çok sevinirim.....
Kullanıcı avatarı
ayhanarican
Üye
Mesajlar: 37
Kayıt: 03 Tem 2003 01:24
Konum: İzmir
İletişim:

Mesaj gönderen ayhanarican »

S.A.
firebird deki tablonda uretson_fisno değeri varsa "False" yoksa "True" döndüren Boolean tipinde bir function yazabilirsin.
sonra filtrelemeyi, mssql deki tablo nun OnFilterRecord olayında

Kod: Tümünü seç

Accept:=dm2.bufisnoyokmu(uretson_fisno); 
kolayca yapabilirsin.

iyi çalışmalar.
Misafir

selam

Mesaj gönderen Misafir »

Hocam o kadar iyi değilim inan ki...Function harici bir şeyle yapılmıyor mu...Veya Sytnax olarak verseniz ben kendim yapsam...Yani biraz daha yardımcı olursanız başarıcam umarım..
Cevapla