showmessage ile ilgili basit bi hata ama yapamadım.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
showmessage ile ilgili basit bi hata ama yapamadım.
Sel.al.arkadaşlar.projemde bi memory table a kaydedilen yaklaşık 20 adet kaydı tabloya girdiriyorum.vt em fb.kayıt işlemi sorunsuz yapılıyor.dongünün sonunada showmessage ile kayıt işleminin başarılı olduğuna dair mesaj verdiyorum.mesaj bazen görünüyor.bazen de program kilitlenmiş gibi oluyor alt tab yapınca showmessage görünüyor.bu sorunu nasıl çözebilirim.
Re: showmessage ile ilgili basit bi hata ama yapamadım.
Kodunu buraya yazarmsın. sorun senin kodundadır.meron06 yazdı:Sel.al.arkadaşlar.projemde bi memory table a kaydedilen yaklaşık 20 adet kaydı tabloya girdiriyorum.vt em fb.kayıt işlemi sorunsuz yapılıyor.dongünün sonunada showmessage ile kayıt işleminin başarılı olduğuna dair mesaj verdiyorum.mesaj bazen görünüyor.bazen de program kilitlenmiş gibi oluyor alt tab yapınca showmessage görünüyor.bu sorunu nasıl çözebilirim.
bence kayıt işlemi yaptığın kodlarında bir hata olduğunu sezinleniyorum.sen yinede bir kodunu yaz.tümüyle birlikte yazarsan inceleriz kapsamlı bir şekilde.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
ShowMessage
ShowMessage kullanıyorsa o zaman başka projeye geçişin var ama bana MessageBox kullanıyormuşsun gibime geliyor. Buna da ilk parametre olarak gerekli değeri vermiyorsun. Aşağıdaki şekli incele.
Yanlış olan
Doğru olan
ilk parametre mesaj penceresi hangi form üzerinde görüntülenecekse onun (Form2.Hadle veya Screen.ActiveForm.Handle gibi) değeri olmalı.
Yanlış olan
Kod: Tümünü seç
MessageBox(0,'İşlem tamam.','Uyarı',MB_ICONINFORMATION);
Kod: Tümünü seç
MessageBox(Screen.ActiveForm.Handle,'İşlem tamam.','Uyarı',MB_ICONINFORMATION);
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
1. Formunuzu ShowModal ile mi aciyorsunuz?
2. si Toplu girislerde Memtable kullandiginizi soylediniz..
Sanirim grid uzerinden 20 kayit giriyorsunuz ve en son kaydet butonuna bastiginizda bir döngüyle kaydediyorsunuz..
Peki hangi kayitlarin degistigini hangi kayitlarin yeni eklendigini hangi kayitlarin silindigini görmek icin hangi islemi kullaniyorsunuz? Cünkü ben de bi ara memory table kullanarak yapmayi düsündüm ancak daha sonra Batch isleminin daha uygun oldugunu ogrendim.. Eger sadece toplu giris degil bunun yaninda toplu degistirme de yapiyorsaniz degistirilen ve silinen ve yeni eklenilen kayitlari nasil takip ettiginizi ogrenebilir miyim?
2. si Toplu girislerde Memtable kullandiginizi soylediniz..
Sanirim grid uzerinden 20 kayit giriyorsunuz ve en son kaydet butonuna bastiginizda bir döngüyle kaydediyorsunuz..
Peki hangi kayitlarin degistigini hangi kayitlarin yeni eklendigini hangi kayitlarin silindigini görmek icin hangi islemi kullaniyorsunuz? Cünkü ben de bi ara memory table kullanarak yapmayi düsündüm ancak daha sonra Batch isleminin daha uygun oldugunu ogrendim.. Eger sadece toplu giris degil bunun yaninda toplu degistirme de yapiyorsaniz degistirilen ve silinen ve yeni eklenilen kayitlari nasil takip ettiginizi ogrenebilir miyim?
ben mem tablo ile şöyle yapıyorum..
örnek bir fiş üzerinde değiştirme, silme, ekleme gibi işlemler ypacaksam; bütün kayıtları ilk önce memtabloya alıyorum.. ve işlemleri yaptıktan sonra kaydet dediğimde; fiş numarasıyla aynı olan kayıtların tümünü silip, daha sonra memtablodaki bütün kayıtları yeni kayıt olarak ekliyorum..
örnek bir fiş üzerinde değiştirme, silme, ekleme gibi işlemler ypacaksam; bütün kayıtları ilk önce memtabloya alıyorum.. ve işlemleri yaptıktan sonra kaydet dediğimde; fiş numarasıyla aynı olan kayıtların tümünü silip, daha sonra memtablodaki bütün kayıtları yeni kayıt olarak ekliyorum..
Peki update isini nasil yapiyorsunuz yani,
degistirme tusuna bastiniz karsiniza tum kayitlar geldi ondan sonra bazi kayitlar üzerinde update yapildi, yeni bir kayit eklendi ve eskiden eklenmis bir kayit silindi..
Silineni memtableda olmayan kayitlari bularak ayirt ediyorsunuz
Yeni eklenen de ayni sekilde..
Peki degistirilenleri? Her kolonu tek tek kontrol edip eger eski degerler ile o anki degerler ayniysa update edilmemis, eger ayni degilse update edilmis diye mi ayirt ediyorsunuz? Veya bunu sizin yerinize yapan hazir bir fonksiyonu mu var kullandiginiz componentin..
Kolay gelsin
degistirme tusuna bastiniz karsiniza tum kayitlar geldi ondan sonra bazi kayitlar üzerinde update yapildi, yeni bir kayit eklendi ve eskiden eklenmis bir kayit silindi..
Silineni memtableda olmayan kayitlari bularak ayirt ediyorsunuz
Yeni eklenen de ayni sekilde..
Peki degistirilenleri? Her kolonu tek tek kontrol edip eger eski degerler ile o anki degerler ayniysa update edilmemis, eger ayni degilse update edilmis diye mi ayirt ediyorsunuz? Veya bunu sizin yerinize yapan hazir bir fonksiyonu mu var kullandiginiz componentin..
Kolay gelsin
Evet bastan Silmek, sonra da Kayitlari tek tek ekleme bir cözüm ama dogru bir cözüm degil..
Varsayalim kaydettiginiz ID yi disaridan kullanan bir FK yapisi olusturdunuz. Ya tüm kayitlara bagli kayitlar da silinecek, ya da kayit silinemez cünkü bagli kayitlar var diyecek..
Tabi ki sizin karariniz, herneyse sonuc olarak ben BatchOptimistic modunu kullanin derim, BDE (Cached updates sanirim)..
1. Sebep: Veri bütünlüğü : Diger tablolarla alakali kayitlar silinip diger tablolar vs etkilenmez.
2. Sebep: Performans : Alakasiz masum kayitlar islemden etkilenmez
Tabi fikrimin ne kadar dogru olup olmadigini arastirmak size kalmis.
NOT: Umarim dediklerimi bilmislik taslamak olarak anlamamissinizdir, sonucta ben de su anlattiklarimi 3 ay once ogrenmeye ve kullanmaya basladim, konuya benden daha cok hakim olan degerli üstadlarimin bana onerdigi sey Ado: BatchOptimistic (BDE: Cached Updates)
Kolay gelsin.
Varsayalim kaydettiginiz ID yi disaridan kullanan bir FK yapisi olusturdunuz. Ya tüm kayitlara bagli kayitlar da silinecek, ya da kayit silinemez cünkü bagli kayitlar var diyecek..
Tabi ki sizin karariniz, herneyse sonuc olarak ben BatchOptimistic modunu kullanin derim, BDE (Cached updates sanirim)..
1. Sebep: Veri bütünlüğü : Diger tablolarla alakali kayitlar silinip diger tablolar vs etkilenmez.
2. Sebep: Performans : Alakasiz masum kayitlar islemden etkilenmez
Tabi fikrimin ne kadar dogru olup olmadigini arastirmak size kalmis.
NOT: Umarim dediklerimi bilmislik taslamak olarak anlamamissinizdir, sonucta ben de su anlattiklarimi 3 ay once ogrenmeye ve kullanmaya basladim, konuya benden daha cok hakim olan degerli üstadlarimin bana onerdigi sey Ado: BatchOptimistic (BDE: Cached Updates)
Kolay gelsin.
sonuçta veri bütünlüğünü bozacağını zannetmiyorum.. Eğer yapıyı düzgün kurduysanız bir sonuç yaşanmaz...
Ve ayrıca bu çok fazla kaydın olduğu bir yapıda uygulanan bir yöntem değil.. 10 veya 20 kalemlik bir fiş ve benzeri durumlarda uygulanıyor..
silme işlemini verileri çekerken yapmadığımız için,, enson kayıt kısmında sil ve ekle dediğimiz için bu süre nerdeyse sıfıra yakın...
Ayrıca ben şöyle biliyorum.. eğer yanlış ise bilen arkadaşlar lütfen düzeltsin..
firebird bir kaydı update ettiğiniz zaman; gidip o kaydı değiştirmiyor, eskisini kullanılmaz olarak işaretleyip, yeni bilgileri yeni kayıt olarak ekliyor ve zaten bu yüzdende veri tabanının büyüklüğü bir süre sonra veri miktarı ile orantısız olarak artıyor...
yanlışsa lütfen düzeltin..
Ve ayrıca bu çok fazla kaydın olduğu bir yapıda uygulanan bir yöntem değil.. 10 veya 20 kalemlik bir fiş ve benzeri durumlarda uygulanıyor..
silme işlemini verileri çekerken yapmadığımız için,, enson kayıt kısmında sil ve ekle dediğimiz için bu süre nerdeyse sıfıra yakın...
Ayrıca ben şöyle biliyorum.. eğer yanlış ise bilen arkadaşlar lütfen düzeltsin..
firebird bir kaydı update ettiğiniz zaman; gidip o kaydı değiştirmiyor, eskisini kullanılmaz olarak işaretleyip, yeni bilgileri yeni kayıt olarak ekliyor ve zaten bu yüzdende veri tabanının büyüklüğü bir süre sonra veri miktarı ile orantısız olarak artıyor...
yanlışsa lütfen düzeltin..
Bir onceki mesajimda yazicaktim konuyu disina saptirdigim icin kusura bakmayin diye ama devam ettik madem devam edelim 
Veri butunlguunun bozulmasinin sebebi (bence)
Konuya genel olarak bakarsak (yani sirf sizin yaptiginiz programin islemi/bölümi olarak degil):
Ornegin toplu personel kaydi yapacaksiniz. Bu personele bagli bir cok ayri tablo var yani FK olarak personelin PK 'sini tutan.
Personeli sildiginizde bagli tum tablolar eger cascade deletes yaptiysaniz silinecek, yapmadiysaniz hata vericek silemezsiniz diye. Herneyse cascade yaptiniz ve hepsi silindi, tekrar tekrar eklenip tüm iliskiler nasil kurulacak? Bir sekilde ekleniz bile bu soyledigim sirf veri butunlugu degil silme/ekleme islemi ayni zamanda performans kaybina da sebep olacak.
Performansta ise evet kaydete basildiginda hepsi silinip tekrar eklenicek cunku zaten kisi degistirme isleminde daha once yaptiklarini goruyor. Sirf ilk soyledigim neden bile bu yapiyi kullanmanin kendimce yanlis oldugunu dogrulasa bile, 2. olarak sadece degistirilen kayitlari degistirmek varken, butun kayitlari silip tekrar eklemeyi dogru bulamadim bir türlü. Bu dediklerimi size bir cevap olarak yazmadim sadece daha once ben de bunu dusundum sizin gibi yapmayi ama ondan sonra vazgectim. Vazgecme sebeplerim de bunlardi yani o yuzden tabi ki sizin tercihiniz ama ileride ciddi kayit anlami tasiyan toplu kayitlar yaparken dedigimi kullanmanizi oneririm. Tabi bastan dedigim gbi su dediklerimin de dogru olup olmadigini arastirarak
Tekrardan kolay gelsin

Veri butunlguunun bozulmasinin sebebi (bence)
Konuya genel olarak bakarsak (yani sirf sizin yaptiginiz programin islemi/bölümi olarak degil):
Ornegin toplu personel kaydi yapacaksiniz. Bu personele bagli bir cok ayri tablo var yani FK olarak personelin PK 'sini tutan.
Personeli sildiginizde bagli tum tablolar eger cascade deletes yaptiysaniz silinecek, yapmadiysaniz hata vericek silemezsiniz diye. Herneyse cascade yaptiniz ve hepsi silindi, tekrar tekrar eklenip tüm iliskiler nasil kurulacak? Bir sekilde ekleniz bile bu soyledigim sirf veri butunlugu degil silme/ekleme islemi ayni zamanda performans kaybina da sebep olacak.
Performansta ise evet kaydete basildiginda hepsi silinip tekrar eklenicek cunku zaten kisi degistirme isleminde daha once yaptiklarini goruyor. Sirf ilk soyledigim neden bile bu yapiyi kullanmanin kendimce yanlis oldugunu dogrulasa bile, 2. olarak sadece degistirilen kayitlari degistirmek varken, butun kayitlari silip tekrar eklemeyi dogru bulamadim bir türlü. Bu dediklerimi size bir cevap olarak yazmadim sadece daha once ben de bunu dusundum sizin gibi yapmayi ama ondan sonra vazgectim. Vazgecme sebeplerim de bunlardi yani o yuzden tabi ki sizin tercihiniz ama ileride ciddi kayit anlami tasiyan toplu kayitlar yaparken dedigimi kullanmanizi oneririm. Tabi bastan dedigim gbi su dediklerimin de dogru olup olmadigini arastirarak
