Hayırlı çalışmalar;
Arkadaşlar bir takım işlemler varki sanki sadece delphi tarafında oluyor ve firebird de bu konuda kasıyor en azından ben öyle düşünüyorum lütfen beni yanıltın yoksa projem açısından çok kötü olacak
projemden bir kısım bilgi vereyim size
Stok kartlarının kayıtlarının yapıldığı modülde ayrıca bir eklentim var bu nedir toplamı 10.000 ni geçen stok kartlarında bir takım özellikler ortak olabiliyor hadi bu özellikler stok'un ilk girişinde giriliyor sorun değil bir zaman sonra mesala stok kartlarının tamamının indirimi %0 dan % 10 çıkabiliyor yada bir kısmının mesela stok adı 100.201.01 ile başlayan stok kartlarının fiyatı düşebiliyor yada artabiliyor bu şekilde başlayan stok sayısı 200 adet diyelim bu 200 kayıtı tek tek editlemek akıl karı değil iş sadece fiyatta değil zaten bunların maliyeti değişebilir özel kodu değişebilir vs.
bunlar için ortak düzenleme diye bir modülüm var bu ekranda
1- modül çalışınca stok kartları ekranında bulunan tüm kayıtlar yada filtelemeden sonra ekranda olan kayıtlar aktarılıyor. Filtreleme varsa ne ala stokların hepsinin aktarılması gerekiyorsa yandım, bu ekranda listbox kullanmak yerine bir önceki akranı bir query ile grid kullanıp alabilirdim hemen geliyor hiç beklemiyor enfazla 2 sn. ama gridde multi sellect sadece Ctrl ile yapılabiliyor Shift kullanılamıyor o yüzden kullanıcı zorlanır
diye mecburen listbox ve dolayısı ile bu modül ekranı açılırken stok query deki kayıtları bir döngü yardımı ile listbox a atıyorum aynı projeyi daha önce paradox ile yapmıştım 10.000 kayıt banamısın demiyor 10sn atıyordu firebirde ise aynı döngü aynı mantık 10dk geçiyor bazende database hatası veriyor.
İşte bu olayı Sp ile yapabilirmiyim ve nasıl yapabilirim rica ediyorum
2- bunu yaptık diyelim sonra bu ortak düzen ekranındaki listboxta bulunanların ya tamamı yada listboxtaki seçili olanları verilen ortak özellikler doğrultusunda güncelliyorum mesela satış fiyatı değeri giriliyor iskonto değeri giriliyor özel kod değeri giriliyor işte listboxta seçili bu kayıtlar girilen verilen doğrultusunda aynı değerler için güncelleniyor buda paradoxta zaman almıyordu ama firebird yine ya çok zaman alıyor yada database hatası veriyor bir süre işlem yaptıktan sonra tabi
vs buna benzer işlemler görülüyorki paradox kullanır gibi daha önce forumlarda geçen bir söz vardı hangi arkadaş söyledi bilmiyor firebird ü paradox gibi sadece bilgi depolamak için kullanırsanız firebirdün güzelliklerinden faydalanmış sayılmazsınız diye doğru hatta bu durumlarda paradox u aratıyor bile diyebilirim bu .
işte bu veri update inide veri tabanı tarafında yapmak istiyorum
ama olay tek bir kayıt değil bir tane olsa verileri parametre göderip sql komutları ile yapacağım ama burada bir liste söz konusu ve bu liste çok değişken bir işlemde 2 tane olabilir bir işlemde 10.000 tane olabilir hatta stok sayısı artıkkça buda artabilir böyle bir işlem durumunda veri tabanı tarafında nasıl YAPILIR daha doğrusu veri tabanı kısmında kullanılan komutlar hakkında pek fazla bilgimde yok yani
3- ayrıca birşey sormak isterim insert update delete işlemlerini
qry1.insert;
qry1.edit;
qry1.delete;
olarakmı yapmanın bir zararı varmı yada
insert intto
update
delete
olarak sql komutları ile yapmanın tek bir kayıt için bile olsa yukarıdakilere göre faydası varmı
yoksa bunlarıda veritabanı tarafında bir sp ye parametre olarak verip ordamı yapmak lazım
4- Bu işlemleri delphi tarafında yaparken bir takım kontroller yapıp bunun karşılığında kullanıcıya mesaj veriyoruz bu kayıt daha önceden girilmiş vs bu veri tabanı tarafında yapılabilirmi
5- Şöyle birşey aklıma geldi listeyi sp ye gönderemiyorsam ( ki varsa bir yolu bilmiyorum umarım bilen birileri vardır ). Listedeki işlem yapılacak kayıtı ve degerlerini bir döngü kurarak liste eleman sayısı kadar her seferinde sp ye gönderip çalıştırsam abuk subuk bir düşüncemi olur , performansı etkilermi
görüş ve yardımlarınız için şimdiden çok teşekkür ederim
bazı şeyler varki sadece delphi tarafındaoluyor sanki
bazı şeyler varki sadece delphi tarafındaoluyor sanki
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
1. soru için bir şeyler yazabileceğim. ben fiyat değişim belgesi die bir şey kullanıyorum. yani kullanıcı için bi fatura ekranı gibi bir şey düşün. sadece miktar fiyat değilde yeni fiyat, eski fiyat var. kullanıcı bir gride değişiklik yapacağı kartları topluyor. değişiklikleri yapıyor buraya kadar her şey bir temp table da dönüyor. sonra bir döngü kuruyorsun ve stok table güncelliyorsun. ve en son temp table siliyorsun.
1 ve 2 Delphi tarafında yapılan bütün veritabanı işlemleri %90 ile veritabanı tarafında yapılabilir. Söylediğiniz işlem SP ile de yapılabilir... Ama bu konu ile ilgili makaleleri okumanız gerekir...
3. query1.Delete, Query1.ınsert gibi komutlar her ne kadar SQL mantığına aykırı da olsa. Siz bu komutları verdiğiniz de zaten SQL kodlarına dönüştürülp veritabanına yansıtılmaktadır. Hatta table nesnesi bile SQL kodları ile çalışmaktadır.. Ancak yine de ınsert, delete komutlarını kullanmak mantıklıdır...
4. Tabi ki yapılabilir. FB/IB deki exceptionlar bunun içindir... Mesajlarınızı Exception olarak oluşturup SP lerin içine gömebilirsiniz...
5.Bence abuk bir düşünce olur. Korkunç performans kaybı olacaktır... 100 bin kada ulaştığınızda programın davranışını düşünsenize...
Sevgiler..
3. query1.Delete, Query1.ınsert gibi komutlar her ne kadar SQL mantığına aykırı da olsa. Siz bu komutları verdiğiniz de zaten SQL kodlarına dönüştürülp veritabanına yansıtılmaktadır. Hatta table nesnesi bile SQL kodları ile çalışmaktadır.. Ancak yine de ınsert, delete komutlarını kullanmak mantıklıdır...
4. Tabi ki yapılabilir. FB/IB deki exceptionlar bunun içindir... Mesajlarınızı Exception olarak oluşturup SP lerin içine gömebilirsiniz...
5.Bence abuk bir düşünce olur. Korkunç performans kaybı olacaktır... 100 bin kada ulaştığınızda programın davranışını düşünsenize...
Sevgiler..
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Şair Üstad 1 sorum karşılığında %90 işlemlerin veritabanı tarafında yapılabileceğini ancak okumamı önermişsiniz çok teşekkür ederim ama bu cevap beni tatmin etmedi formda defalarca sp ile ilgili yazılanları okudum çok şeyde öğrendim ancak burda sorduğum soruya cevap olabilecek ve sizinde buralarda olduğunu söylediğiniz tarzda bir şey bulamadım yani benim istediğim sp bir listbox içinde bulunan elemanları göndermek yada örneğin delphi tarafında yapılabilen
tarzında bir şey düşünün herhalde bunu anlatabilmişimdir peki ben bunu sp de nasıl yapacağım yani wheretext i sp parametre olarak verdim verdiğim parametrenin sp de update in yada selectin yada deletin yanında where karşılaştırması olarak nasıl kullanacağım işte buna benzer şeyler yok şair üstad
Kod: Tümünü seç
If A=1 Then
WhereText :=' Kod=24'
Else
WhereText :='25';
{yada daha uzun karmaşık bir karşılaştırmada olabilir}
Qry1.Sql.Add('Update Tbl_Stok
Set '+WhereText);
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
son dedikleriniz fb 1.5 da var,
ben kullanıyorum ve raporlamalarımda buyuk esneklik veriyor.
execute statement anahtar kelimeleri ile tekrar arama yapın forumda
not: delphi kadar esnek olmasada rfunc udf library sayesinde eklenen 100lerce guzel fonksiyon ile bir cok sey spler icinde yapılabilmekte (donguler,string ayıklama vs. gibi bir yıgın islem)
ben kullanıyorum ve raporlamalarımda buyuk esneklik veriyor.
execute statement anahtar kelimeleri ile tekrar arama yapın forumda
not: delphi kadar esnek olmasada rfunc udf library sayesinde eklenen 100lerce guzel fonksiyon ile bir cok sey spler icinde yapılabilmekte (donguler,string ayıklama vs. gibi bir yıgın islem)
ÜŞENME,ERTELEME,VAZGEÇME