S.a. Arkadaşlar...Normalde döngü vs. ilgili bir problemim yok ama şu an yapmak istediğim döngüyü dinamik yapamıyorum...Dinamik derken kastım şu mesela 2 tane döngü içerisinde tüm herşeyi yapmak istiyorum ama her seviye için farklı farklı döngüler yapmak zorunda kalma durumum söz konusu ve bu çok daha karmaşık bir hale bürünüyor. Aşağıda durumu size izah edeceğim. Yardımlarınız için şimdiden Teşekkürler....
Başlangıç olarak 10 tane Tedit sınıfından edit var ve bunların hangilerini sorguya sokacağımı component count ile dolu olanları sırayla döngüye sokup içindeki bilgilerden aramaya başlıyorum...1. durum bu bundan sonra benim yapmak istediğimde yapamadığım döngüye gelelim size şimdi aşağıdaki kayıtları açıklayacağım..
MAMUL_KODU HAMMADDE_KODU
BA40-01000-01-003 BA40-01000
__________________________________
yukarıda gördüğünüz gibi aramayı yapacak olan kişiler 4,5 veya daha fazla edit kutucuğuna hammadde veya mamul kodları yazarak bütün ürün ağacında hangi ürünlerde benzerlik var onları bulmaları gerekmekte. Ama bu işlemi direk mamüle bağlı 1. seviyeden değilde reçetede kayıtlı olan bir taslak çeliğinden de arama yapabilirler ve ayrıca taslak haricinde başka kriterleride ekleyerek hangi ürünlerde kullanıldığını bulmak istiyoruz. yukarıdaki tabloda bulunan BA40-01000-01-003 nolu ürünü hammaddede aradığımızdada karşımızı aşağıdaki sonuçlar çıkmakta.
MAMUL_KODU HAM_KODU
BA40-01000-01 BA40-01000-01-003
BA40-01000-02 BA40-01000-01-003
BA40-01000-03 BA40-01000-01-003
BA40-01000-04 BA40-01000-01-003
BA40-01000-05 BA40-01000-01-003
BA40-01000-06 BA40-01000-01-003
BA40-01000-07 BA40-01000-01-003
BA40-01000-08 BA40-01000-01-003
BA40-01000-09 BA40-01000-01-003
BA40-01000-10 BA40-01000-01-003
BA40-01000-12 BA40-01000-01-003
BA40-01000-14 BA40-01000-01-003
BA40-01000-15 BA40-01000-01-003
BA40-01000-16 BA40-01000-01-003
BA40-01000-17 BA40-01000-01-003
Biraz önce mamül olan BA40-01000-01-003 farklı operasyonlar gördü ve soldaki mamülleri oluşturdu.
Şimdi BA40-01000-01 da hammaddede aradığımızda karşımıza kullanıldığı mamüller gelmekte. ki bu daha alt seviyelerden başlayıp da buraya kadarda ulaşabilir seviye 8 veya 10 bile olabiliyor.
BA40-01000-01 hammadde aradım. aşağıdaki sonuçlar çıktı.
MAMUL_KODU HAM_KODU
AAA58 BA40-01000-01
AAA58-1 BA40-01000-01
BBB58-13 BA40-01000-01
CCC58-14 BA40-01000-01
bu sadece bi tane editin içindeki arama idi. diğerlerindede arama yapıp en son mamüle kadar çıkıp mamül kodlarını bulmak ve kaç tane editte bu işlem yapıldıysa bulunan mamül kodlarının hepsindede bulunanları ortaya çıkarmak.
Yani aramaya katlan ürünlerin tamanının hangi nihai ürünlerde kesiştikleri.
Bunu dinamik olarak arka arkaya arka arkaya döngülerle her seviye için bir döngü oluşturmaktan ziyade dynamic olarak bir yöntem kullanılabilirmi.
Önemli Not:
BA40-01000 örnekte verdiğim ürünü aradıktan sonra gelen BA40-01000-01-003 aramaya dahil ettiğimizde gelen bütün sonuçlar için ayrı ayrı seviye yükseltme yapılıp nihani ürüne kadar gidilmesi gerekiyor. Eğer BA40-01000-01 arama yapıldığında yine bir den fazla kayıt geldiğinde hepsi için tekrar arama yapılması ve nihani ürünü gidilmesi gerekiyor. Biraz karışık oldu ama umarım anlatabilmişimdir.
teşekkürler
repeat de dahil karışık bir döngü ama dinamik yapamıyorum
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- Bir Mamul bir da Hammadde için liste oluşturacaksın. Bu listeler TStringList olabilir.
- Bir procedure/fonksiyon yazacak ve bu listenin büyümesini bununla yaptıracaksın demek oluyor.
- Tüm Edit'lerdekileri girdileri MamulListesi'ne gireceksin. Sonra da bir While dönüsü yapıp arkana yaslanıp bekleyeceksin.
gibi. Yazdıklarım spontan şeyler ve doğruluk oranı düşük. Sadece metodoloji için yazdım...
- Özetle liste listeyi doğuracak, sonunda bu eklenme olayın bir yerde son bulacağından sayac değer Liste satır sayısına kavuşacak ve döngüden çıkılmış olacak.
- Bir procedure/fonksiyon yazacak ve bu listenin büyümesini bununla yaptıracaksın demek oluyor.
Kod: Tümünü seç
Procedure MamulHammaddesiBul( MamulKodu:String; Var MamulListesi, HammaddeListesi:TStringList );
begin
// SQL Sorgusu yapılır...
// Sonuçlar sırasıyla MamulListesine ve HammaddeListesi'ne ADD edilir.
end;
Kod: Tümünü seç
Var
Sayac : Integer;
DongudenCik : Boolean;
begin
For Sayac := 0 to ComponentCount-1 do
If Components[Sayac] is TEdit then begin
// Edit'leri listeye ekleme işlemi.
end;
Sayac := 0;
DongudenCik := ( Sayac > MamulListesi.Count-1 );
While NOT DongudenCik do begin
MamulHammaddesiBul( MamulListesi[Sayac], MamulListesi, HammadeListesi );
Inc(Sayac);
DongudenCik := ( Sayac > MamulListesi.Count-1 );
end;
end;
- Özetle liste listeyi doğuracak, sonunda bu eklenme olayın bir yerde son bulacağından sayac değer Liste satır sayısına kavuşacak ve döngüden çıkılmış olacak.
Anladığım kadarı ile hammadde hamdi mamüllerin reçetelerinde var onu bulmaya çalışıyorsunuz.BA40-01000-01-003
hammadde ise bu bir çok mamül veya yarı mamül de kullanılmış olabilir
veya Mamül için hangi hammadde(ler) kullanılmış
BA40-01000-01-003 mamül ise bunun reçetesinde bir veya bir kaç tane bileşen olabilir.
Mamül oluşumunda aşamalar olabilir sizi onu bulmaya çalışıyorsunuz galiba
Yani X hammadedesinden önce Y oluşur Y'den Y1 oluşur Y1'den Y2 oluşur v.s. gider ve en sonunda M oluşur.
bunu yakalamayı mı çalışıyorsunuz?
hammadde ise bu bir çok mamül veya yarı mamül de kullanılmış olabilir
veya Mamül için hangi hammadde(ler) kullanılmış
BA40-01000-01-003 mamül ise bunun reçetesinde bir veya bir kaç tane bileşen olabilir.
Mamül oluşumunda aşamalar olabilir sizi onu bulmaya çalışıyorsunuz galiba
Yani X hammadedesinden önce Y oluşur Y'den Y1 oluşur Y1'den Y2 oluşur v.s. gider ve en sonunda M oluşur.
bunu yakalamayı mı çalışıyorsunuz?
Bir kelimenin anlamını öğretsen bile yeter..


