stok listesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
xcom
Üye
Mesajlar: 83
Kayıt: 05 Ağu 2003 05:56

stok listesi

Mesaj gönderen xcom »

Merhaba Arkadaşlar.

Formda aradım ama bulamadım. Delphi7 ile SQL server 2000 kullanıyorum. bağlantı olarak 1 adoconnection var ve table olarak adodataset kullanıyorum.
konu şu. 10.000 kalem den oluşan stok listesini ağ üzerinden çağırdığımda 1 dak. yakın bekletiyor. fatura keserken her kalem için bu fix bekliyorsun. adodataset kullanıyorum. ben çıkamadım bu işin içinden bana yol gösterirseniz çok sevinirim. gerçekten yardımlarınıza ihtiyacım var.
--------------------------------------------------------------------------------------------------

Sadece iylik için yaşa ve iylik ile hayat et...

-------------------------------------------------------------------------------------------------
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Dostum benim sana program olarak yardımdan ziyade yerel ağın ile ilgili tavsiyede bulunayım. Yerel ağın eğer 100Mbps çalışıyorsa eğer bunu 1000Mbps'e çıkar otomatikman hızın arttığını göreceksin. Önceden kurulan sistemlerden kullanılan hub ve switch'ler 100Mbps'ti dediğin gibi benzer bir müşterimde olay başıma geldi. Daha sonraki etapta hızı 1000Mbps'te çıkardık ve programın veriye ulaşma hızı daha da kısaldı. Ayrıca o sistemde de SQL Server 7.0 kullanıyordu.
Denemeni tavsiye ederim. Bizim başıma gelen olayı bu şekilde çözdük.
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
xcom
Üye
Mesajlar: 83
Kayıt: 05 Ağu 2003 05:56

Mesaj gönderen xcom »

ilgin için çok teşekkür ederim allah razı olsun.. ama sql de 10.000 kayıtın client a gelmesi bukadar veri yükünü içeriyormu benim çözmeye çalıştığım nokta bu. yani sadece sql de stok kodu ve adını select etmeme rağmen bukadar sürermi acaba. ben bunu merak ediyorum ve bu işi direkt tüm kayıtlar yerine başka methot mu kullanmak gerek nebileyim aklım bu noktada durdu valla.
--------------------------------------------------------------------------------------------------

Sadece iylik için yaşa ve iylik ile hayat et...

-------------------------------------------------------------------------------------------------
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

hocam ne kadar olsa sonuçta select ile seçtiğiniz alanların bu kadar kayda bakılıp size sonuç döndürmesi tabiki biraz zaman alır ama ben yine de yerel ağ olayını yabana atmamanı tavsiye ederim ve client'lerin sonuçta ram'i, işlemcisi vs ne kadar güçlü olursa ve yine söylüyorum ağ hızın iyi olduğu sürece aradığın sonuca daha çabuk ulaşırsın. Onun haricinde şu an için başka bir fikir aklıma gelmiyor ama aklıma gelirse yine bilgi veririm.
İyi akşamlar...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Firebird ile kullanılan IBDataSet gibi bir bileşen kullanabilirsin.. Ado nun o tür bir desteği var mı bilemiyorum. Yani ekrana kayıtları tümü ile değil de sayfa sayfa getirebilen bir DataSet. Belki sadece stok isimlerini kullanıyorsanız sorguyu ona göre yazıp perfomans artışı sağlayabilirsiniz.

Kod: Tümünü seç

SELECT STOK_ADI FROM STOK_TABLOSU WHERE Şart_Koşul
Burada Şart_Koşul yerine girebileceğiniz belli harfleri sorguya ekleyip VT den çekilecek bilgiyi çok daha fazla daraltma şansınız olabilir. En kötü ihtimalle de tampon/cached tablo yada MEM_Table kullanıp bahsettiğiniz form yada program açılırken bir kere okutup bilgileri doldurabilirsiniz. Bunda da yeni bir stok kayıtı girildiğinde sorguyu yenilemek gerekecek :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
xcom
Üye
Mesajlar: 83
Kayıt: 05 Ağu 2003 05:56

Mesaj gönderen xcom »

Bu ışık için teşekkür ederim hocam anladığım kadarıyla hepsinin liste olarak gelmesi benim programlama hatam. bu söylediğiniz durumlar itibariyle yeniden yapılandırıcam allah razı olsun. Bazen bilmek değil cesarete ihtiyaç vardır onuda bilginle elde edersin, cesaret verdiğiniz için allah razı olsun hocam.
--------------------------------------------------------------------------------------------------

Sadece iylik için yaşa ve iylik ile hayat et...

-------------------------------------------------------------------------------------------------
ikut

Client server programlama

Mesaj gönderen ikut »

xcom yazdı:Bu ışık için teşekkür ederim hocam anladığım kadarıyla hepsinin liste olarak gelmesi benim programlama hatam. bu söylediğiniz durumlar itibariyle yeniden yapılandırıcam allah razı olsun. Bazen bilmek değil cesarete ihtiyaç vardır onuda bilginle elde edersin, cesaret verdiğiniz için allah razı olsun hocam.
Sevgili kardeşim

Bende ilk zamanlar table kullanıyordum çünkü basitime geliyordu. Bir append yada post deyip bitirmek. Ama sana sadece basit bir örnek vereyim. Neden yavaş sen düşün. Şöyle diyelim 10000 kaydın var ve bu 10000 kişinin maaşlarının toplamını bulmak istiyorsun. Normalde table için ne yaparsınç tabloyu açarsın ve 10000 kaydı sırayla okutursun ve toplamını alırsın. Ama bu sırada 10000 kayıt serverdan senin sisteme getirilmek zorundadır. Adoquery ile ile yaptığını düşünelim. yapacağın tek şey select sum(maasi) from personel gibi bir sql yazsaydın bu kod sadece server tarafında işlenecek ve sana sadece toplam değeri dönecekti..

Burası senin aydınlanma noktan işte.

Birde makinedeki MDAC sürümünü güncelle. Komik gelebilir ama MDAC kurulu değil veya üstündeki gerekli ayarlar yapılmamışsa daha beter beklettiğine bende tanık oldum.. direkt ip den bağlansın.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Eyvallah, Allah cümlemizden razı olsun..

@ikut un toplam alma konusundaki tavsiyeleri ve tecrübeleri doğrultusunda prensip olarak şunu söyleyebiliriz: sunucunun yapabileceği işlemleri/işleri sunucuya yıkmaya korkmayın. Bu hem veritabanı tutarlılığını artıracak, hem ağ trafiğini azaltıp doğrudan perfomansı artıracak hem de arayüz tarafta daha az kod yazmak durumunda kalacaksınız. Çünkü işin çoğunu VT tarafta halletmiş olacaksınız :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

ben böyle bir durumda veritabanında tampon bir table hazırlardım. client program servera derdi ki bana şu kayıtlar lazım. server program onları tampon tabloya kayderder ve client de veritabanından sadece tampon tablodaki kayıtları alırdı. 10000 kalemlik bir stok tablosundan sadece mesela 10 tanesi cliente gelicek, bu da 1 saniyede gelir :)
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Sorunu başka yerde aramalısınız. Değil 10.000 kayıt, 1 milyon kayıt dahi çekseniz (dediğiniz iki alanlı Select query'si için söylüyorum) yine de 1 dakika beklemez. Ama bilgisayarlarınız 386 DX 40 falansa bir şey diyemem. (Bir zamanlar fırtınaydı 386 DX 40'lar...) Tabi bu işin espirisi. Dediğim gibi sorunu başka yerde (bilhassa -hatta sadece- yazılımda) aramalısınız. Tabi yazılımla ilgili açıklamada bulunursanız daha yardımcı olunacaktır. Ben şahsen bu gibi problemlerin örneğin Lookup alanlardan kaynaklandığını biliyorum. Belki siz de Lookup alan kullanmışsınızdır. vs.

İyi çalışmalar.
Kullanıcı avatarı
xcom
Üye
Mesajlar: 83
Kayıt: 05 Ağu 2003 05:56

Mesaj gönderen xcom »

Allah razı olsun. dedikleriniz konusunda haklısın ama bu fatura üzerinde stok listesini getiren arkadaşlar 10.000 kayıtlı bir table dan nasıl getiriyorlar bu stok listesini.

inanın ben bu methotsal durumu aydınlatmam gerektiği inancındayım. yani hangi methotla 10.000 kayıt veya daha fazla kaydı fatura üzerine getiriyor ve kullanıcının seçmesiyle fatura üzerine ilgili kaydı alıyor bu konuda tecrübesi olan arkadaşlar yardımcı olursanız çok sevinirim.
--------------------------------------------------------------------------------------------------

Sadece iylik için yaşa ve iylik ile hayat et...

-------------------------------------------------------------------------------------------------
ikut

Mesaj gönderen ikut »

xcom yazdı:Allah razı olsun. dedikleriniz konusunda haklısın ama bu fatura üzerinde stok listesini getiren arkadaşlar 10.000 kayıtlı bir table dan nasıl getiriyorlar bu stok listesini.

inanın ben bu methotsal durumu aydınlatmam gerektiği inancındayım. yani hangi methotla 10.000 kayıt veya daha fazla kaydı fatura üzerine getiriyor ve kullanıcının seçmesiyle fatura üzerine ilgili kaydı alıyor bu konuda tecrübesi olan arkadaşlar yardımcı olursanız çok sevinirim.
Merhaba

Dostum öncelikle dosya yapısını, sorguyu burya yazki bir bakalım. bizler programciyiz medyum değiliz. Halilyede farazi fikir üretiyoruz. biz nerden bilelim senin sorguyu nasıl çektiğini.

Saygılar
Kullanıcı avatarı
xcom
Üye
Mesajlar: 83
Kayıt: 05 Ağu 2003 05:56

Mesaj gönderen xcom »

Haklsınız. kullandığım kod çok basit aşağıdaki gibidir.

Kod: Tümünü seç

dms.stokkarttx.Close;
dms.stokkarttx.CommandText:='select stokkod,stokad from  stokarti';
dms.stokkarttx.Prepared:=true;
dms.stokkarttx.Open;
--------------------------------------------------------------------------------------------------

Sadece iylik için yaşa ve iylik ile hayat et...

-------------------------------------------------------------------------------------------------
ibrahimcoban
Üye
Mesajlar: 163
Kayıt: 11 Eki 2005 10:44
İletişim:

Mesaj gönderen ibrahimcoban »

Ado ile bağlantıda MaxRecords özelliğini kullanabilirsin buraya 1000 gibi bir sayı yazarsan ilk 1000 kayıt gelir ve cursor ilerledikçe sonraki kayıtlar vt den okur.

Ayrıca CursorLocation ve CursorType özelliğiyle ilgili geniş bir döküman okursan senin için iyi olur.
ikut

Mesaj gönderen ikut »

ibrahimcoban yazdı:Ado ile bağlantıda MaxRecords özelliğini kullanabilirsin buraya 1000 gibi bir sayı yazarsan ilk 1000 kayıt gelir ve cursor ilerledikçe sonraki kayıtlar vt den okur.

Ayrıca CursorLocation ve CursorType özelliğiyle ilgili geniş bir döküman okursan senin için iyi olur.
Merhaba bu konuda biraz detay vermeniz mümkünmü. Çünkü çok işe yarayacak bir şey bu;

bende araştıracağım ama yinede yazarsanız makbule gecer
Cevapla