Genel programlama soruları

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

Genel programlama soruları

Mesaj gönderen ikut »

Merhaba

Genel yaklaşımınızı öğrenmek için aşağıda sorularım var. lütfen okuyup geçmeyin. sonuna kadar okuma ve cevap yazma zahmetinde bulunursanız sevinirim. Gerçi maddelerin çoğu makalelik ama.

1. Query componentlerini her tablo için ayrı ayrımı kullanıyorsunuz yoksa birisinin sql kodlarını değiştir değiştir kullanmı yapıyorsunuz.

2. Örneğin cinsiyet gibi alanlarda sayımı tutuyorsunuz yoksa stringmi. Sayı vt açısından güzel ama stringde raporlamada büyük rahatlık... Sizce ne olmalı ?

3. Dosyaları hep açıkmı tutuyorsunuz hep kapalımı. Vt güvenliği için yönteminiz nedir. yada öneriniz.

4. Görünüş itibari ile en uygun vt programlaması şu. Kayıtları bir memtable a alıp değişiklik oldukça geri planda vt ye yazmaz? Memtable öneriniz varmı. bu yöntem doğru olurmu ...

5. Master detail form larda ne yapıyorsunuz. Örneğin bir stok fişi.. adam lk kaydederken sorun yok. Masterdaki giriş çıkış mikatına ekle çıkar. Ama değişiklik yaparken sorun. Burda memtable mı kullanmalı. siz nasıl halledyorsunuz.

6. Sql serverde birinin yaptığı kaydın anında diğerine görünmesi için for of update yapılması gerek (kitap öyle diyo ) ama nasıl yapılıyor örneğe ihtiyacım var. Mesela sürekli veri girişi yapılan bir girddeki yeni kayıtlar görünürken Identity (auto incerement yaptırıyorum) alanım dosya kapanıp açılana kadar gridde görünmüyor..

7. Otomatik update için sizin yönteminiz nedir. Ben xml gibi bir formatta tablodan build no okutup exenin buildi küçükse yeni dosyayı download edipt onu çalıştıran 2. bir exeyi kullanıyorum.

8. Skin kullanımı sizce çok elzemmidir.

9. 3. parti Komponent kullanımı sizce çok önemlimidir. Yani bizler güzellik olsun şık dursun derken ya lkomponent ilerde gümlerse diyormuyuz.

Hepinize saygılar.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Genel programlama soruları

Mesaj gönderen aslangeri »

ikut yazdı: 1. Query componentlerini her tablo için ayrı ayrımı kullanıyorsunuz yoksa birisinin sql kodlarını değiştir değiştir kullanmı yapıyorsunuz.
bir tane qtemp isminde query herzaman boşta bekler. genellikle raporlamalarda veya hesaplamalarda onu kullanırım. ama genellikle ibdataset
2. Örneğin cinsiyet gibi alanlarda sayımı tutuyorsunuz yoksa stringmi. Sayı vt açısından güzel ama stringde raporlamada büyük rahatlık... Sizce ne olmalı ?
bence rakam olmalı ve ben rakam tutuyorum. istersen 3.bir tabloda 0 kadın 1 erkek şeklinde iki kayıt tutup raporlarda tabloya join yapabilirsin. tabloda fieldin gettextini kullanabilirsin. veya select sql de case kullanabilirsin.
3. Dosyaları hep açıkmı tutuyorsunuz hep kapalımı. Vt güvenliği için yönteminiz nedir. yada öneriniz.
mümkün olduğu müddetçe kapalı tutulmalı derim.
programı derlemeden önce açık tüm tabloları kapatın. gerektiği yerlerde tabloları açın işiniz bitince kapatın.
4. Görünüş itibari ile en uygun vt programlaması şu. Kayıtları bir memtable a alıp değişiklik oldukça geri planda vt ye yazmaz? Memtable öneriniz varmı. bu yöntem doğru olurmu ...
ben hiç memtable kullanmadım. comp olarak diyorsan kbmemtable yanlış hatırlamıyorsam. arkadaş onu kullanıyordu.
5. Master detail form larda ne yapıyorsunuz. Örneğin bir stok fişi.. adam lk kaydederken sorun yok. Masterdaki giriş çıkış mikatına ekle çıkar. Ama değişiklik yaparken sorun. Burda memtable mı kullanmalı. siz nasıl halledyorsunuz.
her harekette tablodaki alanı güncellemek bana pek mantıklı gelmiyor arada b hareketi kaçırdığı zaman ....
stok için bir dönem başı mıktarı olur bu sabit.
birde stok hareket dosyası burda giren ve çıkan miktarları vs. bulunur.
stok mevcutu istendiği zaman hesaplama yapılır.
8. Skin kullanımı sizce çok elzemmidir.
hiç kullanmadım uygulamanın türüne göre
9. 3. parti Komponent kullanımı sizce çok önemlimidir. Yani bizler güzellik olsun şık dursun derken ya lkomponent ilerde gümlerse diyormuyuz.
componentin kaçıncı parti olduğu önemli değil. gerekliliği önemli diyorum kendimce. mümkün olduğu kadar standart comp. kullanmaya çalışıyorum
Hepinize saygılar.
eyvallah sanada kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ikut

Re: Genel programlama soruları

Mesaj gönderen ikut »

Stok fişi örneğine dönersek;

Hareketin çok olduğu dosyada bir bakiye bulmak için bütün hareketleri kontrol etmesi gerekecektir. Bu bakımdan ben alternatif olarak her hareket giriş çıkışında ana kayıttaki giriş çıkışı artırıp eksiltmeyi düşünmüştüm. Sonuçta çok hızlı oluyor böyle. Stok masterda devir girş çıkış sonuc diye dört alan tutuluyor zaten. devire ilk mevcut girliyor.

sizinkide bir yöntem tabii ama bazı yerlerde günde 300-400 fatura kesiliyor. hareket öyle yoğun yani. bunuda düşünmek lazım.

Bakalım diğer üstadlarımız ne fikir beyan edecekler bu hususta ? Evrensel metod neymiş öğreniriz umarım
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Bakalım diğer üstadlarımız ne fikir beyan edecekler bu hususta ? Evrensel metod neymiş öğreniriz umarım
Üstad değilim ama bir çaylak olarak fikrime beyan edeyim.
ben fatura değiştirme işleminde dataset ile ilgili fayıtları çekiyorum, kullanıcı değişikliklerini yapıyor, kaydet dediği zaman datasetteki tutarlar toplamını master tablonun tutarına yazıyorum.
ikut

Mesaj gönderen ikut »

nitrokonat yazdı:
Bakalım diğer üstadlarımız ne fikir beyan edecekler bu hususta ? Evrensel metod neymiş öğreniriz umarım
Üstad değilim ama bir çaylak olarak fikrime beyan edeyim.
ben fatura değiştirme işleminde dataset ile ilgili fayıtları çekiyorum, kullanıcı değişikliklerini yapıyor, kaydet dediği zaman datasetteki tutarlar toplamını master tablonun tutarına yazıyorum.
merhaba

Dediğim tam bu değil... stok fişi diyelim.. (malum faturada değişiklik mantıksız olur).... x kalemden 5 diğer y den 6 tane girilmiş. sonra aynı fişi açıp birini 10 diğerini 12 yapıyorsun üstelik birde z den 20 tane ekliyorsun. bunların kontrolü olayını nasıl hallediyorsun.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Siz fiş deyin ben fatura diyeyim.
fatura kaydedildi, stokhareket tablosu var ve cari hareket tablosu var,
stokhareket tablosundaki tüm satırlar
  • x ürünü 5 adet şu fiyattan 1004
    y ürünü 6 adet bu fiyattan 1004
1004 bu satırların master tablosundaki carihareket numarası olsun.

1004 Ali Mehmet Uslu 30/08/2006 tutarı:294,44 ytl

eveeet şimdi programa diyelim ki 1004 nolu faturayı değiştir.
selectsql'i select - from stokhareket where charno=1004 olan bir dataset ile kayıtları çektik. dataset'e ekleme falan yaptık, miktarları değiştirdik. (Grid üzerinde olabilir). kaydet diyince döngü içinde datasetteki tüm satırların charno'sunu 1004 yaparım ve satır tutar toplamını 1004nolu cari hareketin tutarına yazarım.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

aslında olayı daha detaylı anlatmıştım ama wireless kopunca post etmedi yeniden yazmak zorunda kaldım.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

@ikut
diğer vt leri bilemem ama ib/fb de
after/before update trigerlarında bunu ayarlayabilirsin.
toplam miktar dan old.adet çıkar new.adet ekle.
:wink:
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

ama aslangeri abi iptal etmek diye bişey de söz konusu, adam açtı faturayı yazdı çizdi, iptal et tuşuna bastı, yaptığı tüm değişiklikler geri dönmeli, bunu da sağlayacak olan dataset'in cachedupdates özelliğidir. dataset bu durumda trigger çalıştırmaz. Yoksa ben mi yanlış biliyorum?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

nitrokonat yazdı:ama aslangeri abi iptal etmek diye bişey de söz konusu, adam açtı faturayı yazdı çizdi, iptal et tuşuna bastı, yaptığı tüm değişiklikler geri dönmeli, bunu da sağlayacak olan dataset'in cachedupdates özelliğidir. dataset bu durumda trigger çalıştırmaz. Yoksa ben mi yanlış biliyorum?
ib - fb ede transaction u commitlemeden zaten veritabanına yazmaz veritabanına yazmadığı sürecede veritabanının trigerları çalışmaz bu sebep ten dolayı ib bileşenlerinde cacheduptades e gerek yoktur.

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 »

@nitrokonat
husonet in dediklerine ilaveten eğer önceden kaydettiği bir hareketi silerse
buseferde after/before delete trigerlerinde old.adet i stok un mevcutundan düşürürsün.
trigerlar commit dediğin zaman çalışır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Mesaj gönderen DarkEternal »

ikut yazdı:
Dediğim tam bu değil... stok fişi diyelim.. (malum faturada değişiklik mantıksız olur).... x kalemden 5 diğer y den 6 tane girilmiş. sonra aynı fişi açıp birini 10 diğerini 12 yapıyorsun üstelik birde z den 20 tane ekliyorsun. bunların kontrolü olayını nasıl hallediyorsun.
Ben yalancı bir alan açıyorum ve burada ilk adet değerini tutuyorum (x:5 ve y:6), sonra kullanıcı istediği kadar değiştirsin en son kaydederken kullacının girdiği adet ve benim yalancı alanım kadar farkı stoktan düşüyorum (x:10-5,y:12-6).
Yeni eklenirse de yalancı alanımı 0 yapıyorum ve ne kdr seçilirse farkta o kdr oluyo (z:20-0)...
ikut

Mesaj gönderen ikut »

DarkEternal yazdı:
ikut yazdı:
Dediğim tam bu değil... stok fişi diyelim.. (malum faturada değişiklik mantıksız olur).... x kalemden 5 diğer y den 6 tane girilmiş. sonra aynı fişi açıp birini 10 diğerini 12 yapıyorsun üstelik birde z den 20 tane ekliyorsun. bunların kontrolü olayını nasıl hallediyorsun.
Ben yalancı bir alan açıyorum ve burada ilk adet değerini tutuyorum (x:5 ve y:6), sonra kullanıcı istediği kadar değiştirsin en son kaydederken kullacının girdiği adet ve benim yalancı alanım kadar farkı stoktan düşüyorum (x:10-5,y:12-6).
Yeni eklenirse de yalancı alanımı 0 yapıyorum ve ne kdr seçilirse farkta o kdr oluyo (z:20-0)...
güzel bir yöntem. yalancı alan dediğiniz nedir ? geçici bir değişkenmi ?
Kullanıcı avatarı
DarkEternal
Üye
Mesajlar: 158
Kayıt: 19 Eki 2005 11:00

Mesaj gönderen DarkEternal »

ikut yazdı:
DarkEternal yazdı:
ikut yazdı:
Dediğim tam bu değil... stok fişi diyelim.. (malum faturada değişiklik mantıksız olur).... x kalemden 5 diğer y den 6 tane girilmiş. sonra aynı fişi açıp birini 10 diğerini 12 yapıyorsun üstelik birde z den 20 tane ekliyorsun. bunların kontrolü olayını nasıl hallediyorsun.
Ben yalancı bir alan açıyorum ve burada ilk adet değerini tutuyorum (x:5 ve y:6), sonra kullanıcı istediği kadar değiştirsin en son kaydederken kullacının girdiği adet ve benim yalancı alanım kadar farkı stoktan düşüyorum (x:10-5,y:12-6).
Yeni eklenirse de yalancı alanımı 0 yapıyorum ve ne kdr seçilirse farkta o kdr oluyo (z:20-0)...
güzel bir yöntem. yalancı alan dediğiniz nedir ? geçici bir değişkenmi ?
Evet öyle denebilir, fakat ben db özellikli grid kullandığımdan veri tabanına onceki_adet diye bir alan açtım, bu alanda tutuyorum hep ilk adetleri...
turkcanfidan
Üye
Mesajlar: 380
Kayıt: 31 Eki 2005 03:26

Mesaj gönderen turkcanfidan »

Bence hareket toplamlarını masterda saklamak yanlış olur. şu an için 1.800.000 adet kayıtta bile toplam aldırmak serverı en ufak kasmıyor. (MSSQL). Zaten index kullanıyorsunuz, bu yüzden detay table'da kayıt sayısı ne kadar çok olsada sum komutu server'ı zorlamaz. Birde 100 kullanıcının aynı stok kartına kayıt yapmaya çalıştığını düşünün. Toplam hanesine göre yapılan işlerde hata çıkabilir.

birde şu olaya takıldım,
ib - fb ede transaction u commitlemeden zaten veritabanına yazmaz veritabanına yazmadığı sürecede veritabanının trigerları çalışmaz bu sebep ten dolayı ib bileşenlerinde cacheduptades e gerek yoktur
FB kullanmıyorum, ama commit kullanmadığın zaman elektrik kesintisinde veri kaybı olmaz mı?
Cevapla